ایجاد یک ربات معامله گر ساده: کد نویسی معاملات الگوریتمی (قسمت چهارم)

کد نویسی معاملات الگوریتمی

در مراحل قبلی ما یک سند طراحی کردیم. هم اکنون می‌توانیم نگاهی بیندازیم به چگونگی کد نویسی معاملات الگوریتمی ، بعبارت دیگر تبدیل این قوانین معاملاتی به کدهای قابل فهم برای کامپیوتر!

در این بخش، ما برنامه را در چندین قسمت کوچک‌تر، جز به جز مورد تحلیل قرار می‌دهیم.

برای این مثال، ما از زبان برنامه نویسی نرم افزار متاتریدر، ” MetaQuotes”،  برای ساخت یک سیستم معاملاتی ساده مبتنی بر میانگین متحرک استفاده خواهیم کرد (در آینده زبان برنامه نویسی روی زیرساخت تحلیلگر امید به شما معرفی خواهد شد).

ساختار If/Then

بعد از اینکه نگاهی به این کدها انداختید، احتمالا باید بعضی از المان‌هایی که در فاز طراحی درموردش صحبت شد را شناخته باشید. برای مثال، باید ساختار اگر/آنگاه و یا If/Then  را که در زمان ساخت طرح‌مان از آن استفاده شد، تشخیص داده باشید. برای درک بهتر این برنامه، بیایید آن را تجزیه کنیم و هر بخش را جداگانه تحلیل کنیم.

Defines: MATrendPeriod(100); 
Var: MaCurrent(0),MaPrior(0);

در اینجا، ما میانگین متحرکی را که می خواهیم از آن استفاده کنیم تعریف می کنیم، بدین گونه که می گوییم ما می خواهیم این MA، میانگین ۱۰۰ کندل آخر باشد. تابع Define در اینجا این کار را برای ما  در مورد هر نوع داده ای که بخواهیم، انجام می دهد.

پس از آن، ما دو متغیر (MaCurrent(0 و (MaPrior(0 می سازیم(عناصری که برای نگهداری داده ها از آنها استفاده کنیم). این دو متغیر، داده هایی را که در گام بعدی، مقدار دهی خواهیم کرد، نگهداری می کنند.

If Bars < 100 Then Exit; 
If FreeMargin < 1000 then Exit;

در اینجا می بینیم که ساختار If/Then که در فاز طراحی از آن استفاده شده، به کار آمده است. این دو دستور به کامپیوتر می گویند که اگر شروط خاصی برقرار بود، از برنامه خارج شو. بیایید این دو فرمان را به فارسی ترجمه کنیم:

If Bars < 100 Then Exit; 

“اگر کمتر از ۱۰۰ کندل (داده) در نمودار وجود داشت، بدون اینکه کار دیگری انجام دهی از برنامه خارج شو.”

If FreeMargin < 1000 then Exit;

“اگر سرمایه در دسترس من کمتر از ۱  میلیون تومان بود، بدون اینکه کار دیگری انجام دهی از برنامه خارج شو.”

شما می توانید هر معیاری را که می خواهید، به این فرمت تبدیل کنید و در ابتدای برنامه تان قرار دهید تا برنامه، مطابق با وضعیت های مشخصی تنظیم شود.

سیگنالهای خرید و فروش

maCurrent =iMA(MATrendPeriod,MODE_SMA,0); 
maPrior =iMA(MATrendPeriod,MODE_SMA,1); 

حال بیایید از دو متغیری که در بالا تعریف کردیم استفاده کنیم.

بیایید این عبارات را جدا کنیم تا ببینیم چه کاری انجام می دهند:

maCurrent =

در اینجا ما به کامپیوتر می گوییم که اطلاعاتی که در مقابلش نوشته شده را به maCurrent تخصیص بده.

iMA(MATrendPeriod,MODE_SMA,0);

اینجا ما از یک دستور ساده استفاده می کنیم که به فرمت زیر است:

(شروع ، مد ، بازه زمانی) نام تکنیک

در نظر داشته باشید که می توانید iMA را با MACD، RSI و یا هر تکنیکی که ممکن است سیستم معاملاتی شما از آن استفاده کند جا به جا کنید. همچنین می توانید پارامترها را متناسب با سیستم خودتان تغییر دهید.

If maCurrent > maPrior then 
{SetOrder(OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED); Exit;}; 

الان داریم به هدفمان می رسیم! اینجا همان قسمتی از برنامه است که به کامپیوتر می گوید چه زمانی خرید انجام شود. دقت کنید که ما دوباره از ساختار If/Then که در بخش طراحی نیز آمده، استفاده می کنیم. بیایید این ها را به فارسی ترجمه کنیم تا ببینیم چه اتفاقی در حال افتادن است:

If maCurrent > maPrior then 

“اگر میانگین متحرک فعلی بیشتر از میانگین متحرک قبلی بود، آنگاه …”

SetOrder(

“یک سفارش خرید در …. قرار بده.”

OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,RED

“به تعداد تعریف شده، در بهترین مظنه فروش به علاوه حد سود من، خرید انجام بده و با یک نقطه قرمز در نمودار مشخص کن.”

);

“سفارش را پایان بده.”

Exit;

“از استراتژی معاملاتی خارج شو.”

}; 

“از دستور If/then خارج شو.”

 

توجه داشته باشید که نقطه حد سود، توسط کاربر، زمانی که سیستم معاملاتی را به نمودار اضافه می کند تعریف می شود. همچنین دقت داشته باشید که ما در بهترین مظنه فروش (ask) در حال خرید هستیم و در بهترین مظنه خرید (bid) در حال فروش. این یک ویژگی کلیدی است، مخصوصا زمانی که در حال ساخت یک سیستم برای معامله سهام می باشیم.

If maCurrent < maPrior then 
 {SetOrder(OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,RED); Exit;};

در آخر، ما کدهایی داریم که به کامپیوتر می گوید چه زمانی یک موقعیت معاملاتی فروش را آغاز کند. توجه کنید که این دستور تقریبا شبیه دستور “خرید” می باشد، به جزء آنکه به جای OP_BUY از OP_SELL و به جای مظنه فروش از مظنه خرید استفاده شده است.

جمع بندی

الان همه آنچه نیاز داشتید را در اختیار دارید، یعنی ساختار کلی یک سیستم معاملاتی!

لطفا توجه داشته باشید که برنامه بالا یک سیستم معاملاتی کامل نیست. به این دلیل که هیچ فرمانی برای بستن موقعیت معاملاتی های باز را شامل نشده است. چنین جنبه های جانبی می توانند با استفاده از برنامه ای شبیه به آنچه نشان دادیم پیاده سازی شوند.

در قسمت بعدی این مجموعه آموزشی، ما به جزییات بیشتری می پردازیم تا روش‌های دقیقی  را که سیستم معاملاتی شما بتواند به کد تبدیل شود، نشان دهیم.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *