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

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

مروری کلی

دو بخش اساسی برای یک برنامه وجود دارد:

  • متغیرها: این‌ها عناصری هستند که داده ها را در خود نگهداری می‌کنند. این داده‌ها می‌توانند شامل داده های دریافتی از کاربر باشند و یا هر داده دیگری.
  • دستورات: این‌ها هسته مرکزی برنامه را می سازند. دستورات، داده ها را دستکاری می کنند تا نتایجی حاصل شود که قابل تبدیل به اقداماتی (مانند خرید یا فروش) باشند.

علاوه بر این دو عنصر اصلی، چند عنصر اختیاری نیز وجود دارد:

  • توابع: درحقیقت مجموعه ای از دستورات به هم مرتبط هستند که برای انجام یک کار خاص، مورد استفاده قرار می گیرند. برای مثال، تابعی که به شما می گوید چه زمانی خرید انجام شود، احتمالا شامل یک دستور برای چک کرد حساب پولی شما، یک دستور برای تشخیص معیار معاملاتی شما و یک دستور برای اجرای سفارش می باشد. تابعی که همه اینها را با هم ترکیب می کند، این امکان را به شما می دهد، هر گاه که قصد خرید دارید، به جای بازنویسی همه این دستورات، صرفا تابع را فراخوانی کنید.
  • آرایه ها: در حقیقت ساختمان داده ای هستند که داده های مشابه را نگهداری می کنند که به شما این امکان را می دهد، دسترسی و دستکاری موثرتری به داده ها داشته باشید.

 

بررسی متغیرها

در واقع متغیرها، اشیایی هستند که شما آن ها را برای نگهداری داده ها، تعریف می کنید. احتمالا از مقاله قبل به یاد دارید که ما از سه متغیر استفاده کردیم: MATrendPreriod، MaCurrent و MaPrior .

MATrendPreriod عددی را در خود نگه می داشت که تعداد روزهای مورد استفاده برای محاسبه میانگین متحرک را نشان می داد.

MaCurrent عددی را نگه می داشت که نشان دهنده میانگین متحرک فعلی بود.

MaPrior عددی را نگه می داشت که نشان دهنده میانگین متحرک قبلی بود.

 

ساخت یک متغیر

برای نام گذاری متغیرها، تقریبا می توانید از هر نامی استفاده کنید. تنها استثناء، لیستی از “کلمات ممنوعه” است که مجاز به استفاده ازآنها نیستید. زیرا این اسامی در قسمتهای دیگری از برنامه مورد استفاده بوده اند. می توانید لیست کلمات ممنوعه برنامه معاملاتی خود را در مستندات نرم‌افزار بیابید. عموما، نام های انتخابی، بهتر است توصیف کننده داده هایی باشند که در خود ذخیره کرده اند. برای مثال، ما برای تعریف میانگین متحرک فعلی از MaCurrent استفاده کردیم.

بعد از آنکه نامی را ساختید، باید متغیر را “اعلان” و “تعریف” کنید. اعلان کردن یک متغیر، به کامپیوتر می گوید که متغیر از چه نوع داده ای است (در ادامه درباره انواع داده صحبت می شود) و اینکه فضایی را در حافظه برای داده ها در نظر بگیرد. تعریف متغیر،آنست که داده  های واقعی به متغیر تخصیص داده شوند یا اضافه شوند.

بیایید نگاهی به این پروسه بیندازیم:

۱) اعلان یک متغیر

در متاتریدر، متغیرها، همزمان با تخصیص اطلاعات، به طور اتوماتیک اعلان نیز می شوند. در برنامه های دیگر، شاید نیاز باشد یک متغیر اعلان شود، که معمولا با استفاده از فرمت زیر می باشد:

;<data type> <variable name>

انواع داده شامل اعداد و متن هستند. اما هر کدام از آنها به گروه های بیشتری تقسیم می شوند، مانند integer (شامل اعداد صحیح)، double (اعداد بزرگ)، float (اعداد اعشاری)، string (متن) و بسیاری دیگر، که بستگی به برنامه ای که از آن استفاده می کنید دارد. برای مثال، کد زیرمتغیر numberOfDays را به عنوان یک متغیر integer اعلان می کند:

Int numberOfDays;            

۲)تعریف یک متغیر

بعد از آنکه متغیر شما اعلان شد، کامپیوتر فضایی از حافظه را برای آن در نظر می گیرد. اکنون، کاری که شما باید انجام دهید اینست که داده های واقعی را به آن فضا اضافه کنید. این کار به دو روش انجام می شود: یا می توانید مقادیر ثابتی را مشخص کنید و یا می توانید برای به دست آوردن یک مقدار، محاسباتی را انجام دهید و سپس به متغیر تخصیص دهید.

در متاتریدر، برای اضافه کردن داده هایی ثابت به متغیر، از فرمت زیر می توانید استفاده کنید:

Defines: <variable name>(<set amount>);

در برنامه های دیگر، معمولا با استفاده از علامت مساوی، داده ها تخصیص می یابند:

<variable name> = <set amount>; 

اگر می خواهید برای به دست آوردن یک مقدار، محاسباتی را اجرا کنید و سپس به متغیر تخصیص دهید، به این صورت عمل کنید:

<variable name> = <calculation>;

برای مثال، برای مقدار دهی یک میانگین متحرک  ۲۰ روزه در متاتریدر، از کد زیر استفاده می کنیم:

<variable name> = iMA(20,MODE_SMA,0); 

توجه داشته باشید که بخش (iMA(20,MODE_SMA,0 کد، محاسبات است. فرمت این محاسبات متعلق به متاتریدر است و اگر از برنامه دیگری استفاده می کنید، ممکن است تفاوت داشته باشد. برای یافتن این محاسبات، باید از مستندات برنامه معاملاتی­تان کمک بگیرید که معمولا شامل لیستی از محاسبات موجود می باشد.

۳)به کارگیری متغیرها

وقتی متغیرها اعلان و تعریف شدند، در هرجایی از برنامه می توانند استفاده شوند تا معرف داده هایی باشند که در خود نگهداری می کنند. برای این کار، به سادگی به جای داده ها، نام متغیر را بنویسید. برای مثال، اگر MATrendPreriod شامل تعداد روزهایی است که می خواهیم برای محاسبه میانگین متحرک استفاده کنیم، می توانیم از آن به جای عدد ۲۰ در مثال بالا استفاده کنیم:

<variable name> = iMA(MATrendPeriod, MODE_SMA, 0);

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

  1. تنها در یک جا از برنامه لازم است که داده را تغییر دهید.
  2. نتیجه یک محاسبات کامل، درون تنها یک متغیر قرار می گیرد.

 

بررسی دستورات

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

۱) کامنت ها (توضیحات)

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

کامنت یک خطی:

//<your comment here>

کامنت چند خطی:

/* <comment line one> 
<comment line two> 
<comment line three> */

۲)دستور If

این دستوری است که شما اکثرا از آن در برنامه نویسی یک سیستم معاملاتی  استفاده می کنید. این دستور به شما اجازه می دهد سناریوهایی را بسازید، همانگونه که در “مقاله طراحی سیستم” انجام شد. همچنین ممکن است دقت کرده باشید که این تنها دستوری بود که در برنامه مثالی، از آن استفاده کردیم. این نوع دستور با استفاده از فرمت زیر پیاده سازی می شود:

If/Then استاندارد:

If <condition> Then <action>;

If/Else استاندارد:

If <condition> Then <action> Else <action>;

در نتیجه برای مثال داریم:

If accountBalance < 200 then Exit;

توجه داشته باشید که بخش شرطی دستور If با استفاده از فرمت زیر ساخته شده:

<object one> <condition> <object two>

عملگرهای شرطی می توانند موارد زیر باشند:

  • بزرگتر    (<)
  • کوچکتر  (>)
  • مساوی (=): توجه کنید که یک علامت مساوی (=) نشان دهنده تخصیص است و دو علامت مساوی (==) مقادیر درست یا غلط را برمی گرداند.

 

۳)حلقه while

معمولا این حلقه برای این استفاده می شود که به کامپیوتر بگوید تا زمانی که یک شرط خاصی برقرار است کاری را انجام دهد. درنتیجه برای مثال، شاید شما بخواهید سیستم معاملاتی، یک موقعیت معاملاتی را تا زمانی که حساب شما از مقداری مشخص بالاتر است، باز نگه دارد اما اگر کمتر شد آن را ببندد.

این دستورات با استفاده از فرمت زیر ساخته می شوند:

While <condition> <action>;

۴)دستورات Exit و End

یک دستور Exit یا End زمانی استفاده می شود که به کامپیوتر بگوید، برنامه شما در نقطه خاصی پایان خواهد یافت و معمولا به این صورت استفاده می شود:

Exit;

و یا :

End;

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

 

پیاده سازی سیستم معاملاتی

توجه داشته باشید که نرم افزارهای معاملاتی مختلف، تفاوتی جزیی در چگونگی پیاده سازی دستورات دارند. برای مثال، در بعضی از نرم افزارهای معاملاتی، دستور If به فرم زیر ساخته می شود:

If (<condition>, <then do this>, <else do this>); 

می توانیم ببینیم که ایده مشترکی ارائه شده اما نحوه پیاده سازی متفاوت است. ضروری است از مستندات نرم افزار معاملاتی تان یا API کمک بگیرید تا تشخیص دهید که چه تفاوت هایی وجود دارند.

 

قرار دادن همه چیز در کنار هم!

اکنون شما باید درباره اجزای مختلفی که در هنگام برنامه نویسی سیستم معاملاتی­تان می توانند مورد استفاده باشند، ایده ای داشته باشید. تمام آنچه برای تکمیل کار باقی مانده، قراردادن همه اینها در کنار هم است. برای این کار، کافیست مستندات طرح خود را درنظر بگیرید و موارد زیر را شناسایی کنید:

  • چه متغیرهایی را باید تعریف کنم؟
    • محاسباتی: میانگین متحرک، RSI، MACD و …
    • مقادیر ثابت: دوره های زمانی، میزان سرمایه، درصد ریسک و …
  • چه دستوراتی را بسازم؟
  • قوانین خود را با استفاده از توضیحات بالا به دستورات مناسبی تبدیل کنید.

وقتی اینها را فهمیدید، همه آنچه نیاز است، قرار دادن همه بخش ها در کنار هم است. ساختار استاندارد برای یک برنامه به این شکل است:

<includes> 
<variables> 
<statements> 

جمع بندی

اکنون شما درباره چگونگی تبدیل سیستم معاملاتی تان به برنامه کامپیوتری، یک ایده اولیه دارید. مطمئن شوید که دائما از مستندات نرم افزار معاملاتی تان کمک می گیرید. زیرا ممکن است شامل محاسبات از قبل ساخته شده ای باشد که بتوانید از آنها استفاده کنید و یا نمونه کدها و چیزهای بسیار دیگر که می توانند به شما کمک کنند جزییات را بفهمید. در مقاله بعدی، ما نگاهی می اندازیم به تست کردن ربات جدیدتان، چه از نظر فنی (برای شناسایی خطا در کد) و چه از نظر تئوری (برای شناسایی خطاها در منطق).

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

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