آموزش ساخت اندیکاتور در متاتریدر 4 و 5 + مثال کاربردی

آموزش ساخت اندیکاتور در متاتریدر 4 و 5 + مثال کاربردی
در این پست می‌خوانید:

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

معرفی ساختار کلی برای ساخت اندیکاتور متاتریدر 4برای

ساخت اندیکاتور متاتریدر باید بدانید که در پلتفرم متاتریدر 4، اندیکاتورها به صورت فایل هایی با پسوند .mq4 ایجاد می شوند. این فایل ها شامل کدهایی هستند که وظیفه پردازش داده های قیمتی و نمایش نتایج تحلیلی بر روی نمودار را بر عهده دارند. در واقع، هر اندیکاتور یک برنامه کوچک است که با زبان MQL4 نوشته می شود. ساختار پایه هر اندیکاتور از سه بخش اصلی تشکیل شده است:

  • تابع OnInit(): فقط یک بار در زمان بارگذاری اندیکاتور اجرا می شود و برای مقداردهی اولیه استفاده می گردد.
  • تابع OnCalculate(): در هر تغییر قیمت یا تشکیل کندل جدید اجرا می شود و وظیفه محاسبه مقادیر اندیکاتور را دارد.
  • تابع OnDeinit(): هنگام حذف اندیکاتور یا بسته شدن نمودار اجرا می شود و برای پاک سازی استفاده می گردد.

1- شروع کار در محیط  MetaEditorمتاتریدر 4

برای ساخت یک اندیکاتور در متاتریدر 4، ابتدا باید وارد محیط MetaEditor شوید. این محیط مخصوص نوشتن، ویرایش و کامپایل کدهای MQL4 است. برای ایجاد یک اندیکاتور جدید باید در نرم افزار متاتریدر 4 کلید F4 را فشار دهید تا وارد محیط MetaEditor شوید. از منوی بالا، گزینه File → New → Indicator را انتخاب کنید. در پنجره ای که باز می شود، گزینه Custom Indicator را انتخاب کرده و بر روی Next کلیک کنید.

ساخت اندیکاتور در محیط متا ادیتور

در بخش بعدی، نام اندیکاتور را وارد کنید. سپس گزینه Indicator in separate window را انتخاب کنید تا خروجی در پنجره ای جداگانه نمایش داده شود و در پایان بر روی Finish کلیک کنید. پس از انجام مراحل بالا، فایلی با ساختار پایه ای مشابه کد زیر در محیط ویرایشگر باز می شود:

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Blue

double Buffer1[];

int OnInit()

{

SetIndexBuffer(0, Buffer1);

return(INIT_SUCCEEDED);

}

int OnCalculate(const int rates_total,

const int prev_calculated,

const datetime &time[],

const double &open[],

const double &high[],

const double &low[],

const double &close[],

const long &tick_volume[],

const long &volume[],

const int &spread[])

{

return(rates_total);

}

این فایل در حقیقت قالب اولیه اندیکاتور شما است. خطوط ابتدایی مشخص می کنند اندیکاتور در چه بخشی از متاتریدر نمایش داده شود و چند بافر برای ذخیره داده ها نیاز دارد. همچنین تابع OnInit() هنگام شروع اجرا می شود و تابع OnCalculate() زمانی فعال است که داده های قیمتی تغییر کنند. لازم به ذکر است که فایل های اندیکاتور ساخته شده در مسیر MQL4 → Indicators ذخیره می شوند و می توانید از این مسیر فایل خود را باز کرده، ویرایش یا حذف کنید. اگر به دنبال راهنمای کامل برای ورود به دنیای معامله گری هستید، مطلب آموزش ترید در سایت آقای ترید می تواند نقطه شروع مناسبی برای شما باشد.

2- ساخت اندیکاتور در متاتریدر 4 با تعریف ورودی ها و متغیرها

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

input int Period = 14;          // دوره محاسبه

input color LineColor = Red;    // رنگ خط اندیکاتور

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

double Buffer1[];  // آرایه برای ذخیره مقادیر اندیکاتور

int i;             // شمارنده حلقه ها

همچنین ورودی ها با input تعریف می شوند و در پنجره Properties اندیکاتور نمایش داده می شوند. متغیرهای داخلی برای نگهداری داده ها یا انجام محاسبات استفاده می شوند و توسط کاربر قابل تغییر نیستند.

3- نوشتن منطق محاسبات اندیکاتور در متاتریدر 4

در این مرحله، اندیکاتور را طوری می نویسیم که مقادیر واقعی را محاسبه و در نمودار نمایش دهد. برای شروع، یک مثال ساده از میانگین متحرک ساده (SMA) را پیاده می کنیم.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Blue

input int Period = 14;       // دوره میانگین متحرک

double SMA_Buffer[];         // آرایه برای ذخیره مقادیر محاسبه شده

int OnInit()

{

SetIndexBuffer(0, SMA_Buffer);       // اتصال بافر به اندیکاتور

SetIndexStyle(0, DRAW_LINE);         // نوع نمایش: خط

IndicatorShortName(“Simple SMA”);

return(INIT_SUCCEEDED);

}

int OnCalculate(const int rates_total,

const int prev_calculated,

const datetime &time[],

const double &open[],

const double &high[],

const double &low[],

const double &close[],

const long &tick_volume[],

const long &volume[],

const int &spread[])

{

int start = Period – 1;                // شروع محاسبه بعد از پر شدن دوره

for(int i = start; i < rates_total; i++)

{

double sum = 0;

for(int j = i – Period + 1; j <= i; j++)

{

sum += close[j];                 // جمع قیمت های بسته شدن

}

SMA_Buffer[i] = sum / Period;       // محاسبه میانگین

}

return(rates_total);

}

در این کد تعریف ورودی و بافر Period برای تعداد کندل ها و SMA_Buffer برای ذخیره نتایج مورد استفاده قرار می گیرد. همچنین بخش OnInit بافر را به اندیکاتور وصل می کنیم و نوع نمایش را مشخص می کنیم. در بخش OnCalculate متغیر start مشخص می کند از کدام کندل محاسبه آغاز شود و حلقه اول یعنیfor i روی کندل های موجود حرکت می کند. از سوی دیگر حلقه دوم یعنی for j مقادیر قیمت بسته شدن آخرین Period کندل را جمع می کند.

ساخت اندیکاتور SMA در متاتریدر

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

4- نمایش داده روی چارت در متاتریدر 4

پس از محاسبه مقادیر اندیکاتور، نیاز است این داده ها روی نمودار به شکل بصری نمایش داده شوند. در متاتریدر 4، این کار با بافرها و تنظیمات رسم انجام می شود. شما می توانید برای اتصال بافر و تنظیم نمایش داده ها روی چارت از کد زیر استفاده کنید:

SetIndexBuffer(0, SMA_Buffer);         // وصل کردن بافر به اندیکاتور

SetIndexStyle(0, DRAW_LINE);           // نمایش به صورت خط

SetIndexLabel(0, “SMA”);               // نام خط روی چارت

SetIndexDrawBegin(0, Period – 1);      // شروع رسم بعد از کامل شدن دوره

در این کد SetIndexBuffer به متاتریدر می گوید داده های کجا ذخیره شده و باید رسم شود. همچنین SetIndexStyle نوع نمایش را مشخص می کند و می تواند خط، هیستوگرام یا سایر گزینه ها باشد. از سوی دیگر SetIndexLabel نام خط را در لیست اندیکاتورها و راهنمای نمودار نمایش می دهد. بخش SetIndexDrawBegin نیز تعیین می کند رسم خط از کدام کندل آغاز شود.

نکته مهم این است که برای هر بافر، باید این تنظیمات انجام شود تا اندیکاتور به درستی روی چارت نمایش یابد. رنگ، ضخامت و سبک خط نیز می تواند با دستورات زیر تنظیم شود:

SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, clrBlue);

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

آموزش ساخت اندیکاتور در متاتریدر 5

اگر به دنبال ساخت اندیکاتور در متاتریدر 5 هستید، نیاز است تا دید کاملی در مورد تفاوت ساختاری برنامه نویسی در MQL5 با MQL4 داشته باشید. در متاتریدر 5، ساختار برنامه نویسی اندیکاتورها کمی متفاوت است که از مهم ترین این تفاوت ها می توان به موارد زیر اشاره کرد:

  • مدل Event-Driven: برخلاف MQL4 که بیشتر روندی بود، در MQL5 اندیکاتورها به صورت رویداد محور عمل می کنند.
  • کلاس ها و امکانات جدید: امکان استفاده از کلاس ها، آرایه های پیشرفته و توابع آماده برای داده های تاریخی فراهم شده است.
  • تابع اصلی: در MQL5 به جای OnCalculate در MQL4، تابع OnCalculate با پارامترهای متفاوت و قدرتمندتر استفاده می شود.

این تفاوت ها باعث می شوند اندیکاتورهای MQL5 انعطاف بیشتری داشته باشند و برای تحلیل های پیچیده مناسب تر باشند. اگر بخواهیم استفاده از کلاس ها و مدل Event-Driven در MQL5 را با مثال توضیح دهیم باید گفت که در MQL5، اندیکاتورها برخلاف MQL4 به صورت رویداد محور (Event-Driven) اجرا می شوند. این یعنی کد شما هر بار که یک رویداد مهم مثل کندل جدید، تغییر قیمت یا بارگذاری اندیکاتور رخ دهد، فعال می شود. یکی از مزایای این مدل، مدیریت بهتر داده ها و انعطاف بیشتر برای الگوریتم های پیچیده است. همچنین می توانیم از کلاس ها برای ساخت اندیکاتورهای حرفه ای استفاده کنیم. کلاس ها به شما اجازه می دهند بخش های مختلف اندیکاتور را تفکیک کنید و کد مرتب تر و قابل استفاده مجدد داشته باشید. مثال عملی ساخت یک اندیکاتور SMA با کلاس در  متاتریدر 5 به شرح زیر است:

// تعریف کلاس SMA

class SMA_Calc

{

private:

double buffer[];

int period;

public:

// سازنده کلاس

SMA_Calc(int p) { period = p; ArrayResize(buffer, 0); }

// محاسبه SMA

double Calculate(int index, const double &price[])

{

double sum = 0;

for(int i = index – period + 1; i <= index; i++)

sum += price[i];

return sum / period;

}

// ذخیره مقدار محاسبه شده

void SetBuffer(int index, double value)

{

if(ArraySize(buffer) <= index) ArrayResize(buffer, index + 1);

buffer[index] = value;

}

double &GetBuffer() { return buffer; }

};

// متغیرهای اندیکاتور

input int Period = 14;

double ClosePrices[];

SMA_Calc sma(Period);

// تابع OnCalculate

int OnCalculate(const int rates_total,

const int prev_calculated,

const double &close[])

{

for(int i = Period – 1; i < rates_total; i++)

{

double val = sma.Calculate(i, close);

sma.SetBuffer(i, val);

}

return(rates_total);

}

در این مثال SMA_Calc یک کلاس است که وظیفه محاسبه و ذخیره SMA را دارد. با استفاده از متدها Calculate و SetBuffer کد مرتب و قابل مدیریت باقی می ماند. همچنین تابع OnCalculate تنها رویدادهای جدید را پردازش می کند و با مدل Event-Driven هماهنگ است. این روش باعث می شود اندیکاتور بزرگ و پیچیده، ساختاریافته و قابل توسعه باشد. از سوی دیگر مدیریت داده ها ساده تر شود و کد خواناتر باشد.

1- شروع پروژه ساخت اندیکاتور در  متاتریدر 5

برای ساخت یک اندیکاتور در متاتریدر 5، ابتدا باید وارد محیط MetaEditor 5 شوید و یک پروژه جدید ایجاد کنید. برای این در MetaTrader 5 کلید F4 را فشار دهید تا محیط MetaEditor باز شود. از منوی بالا، گزینه File → New → Indicator را انتخاب کنید. در پنجره بازشده، گزینه Custom Indicator را انتخاب و روی Next کلیک کرده و سپس اسم اندیکاتور را وارد کنید.

راهنمای ساخت اندیکاتور در متاتریدر 5

همچنین باید نوع نمایش اندیکاتور را مشخص کنید که به شرح زیر است:

  • Main chart window: نمایش روی نمودار قیمت
  • Separate window: نمایش در پنجره جداگانه

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

2- تعریف داده ها و تنظیم بافرها در متاتریدر 5

در MQL5 نیز مانند MQL4 برای نمایش داده ها روی نمودار از بافرها استفاده می کنیم اما امکانات بیشتری برای مدیریت داده ها وجود دارد. برای تعریف بافر می توانید از کد زیر استفاده کنید:

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Blue

double Buffer1[];

اتصال بافر به اندیکاتور با کد زیر انجام می شود:

SetIndexBuffer(0, Buffer1, INDICATOR_DATA);  // اتصال بافر به داده های اندیکاتور

SetIndexStyle(0, DRAW_LINE);                 // نمایش به صورت خط

SetIndexLabel(0, “My MT5 Indicator”);        // نام خط

در این کدINDICATOR_DATA  مشخص می کند این بافر برای ذخیره مقادیر اصلی اندیکاتور است. می توان نوع نمایش را به صورت خط، هیستوگرام یا سایر سبک ها تغییر داد. نکته مهم این است که در MQL5 می توان چندین نوع بافر با کارکردهای مختلف تعریف کرد. مثلاً INDICATOR_CALCULATIONS یا INDICATOR_COLOR_INDEX و مدیریت دقیق تری روی داده ها داشت. امکان استفاده از آرایه های دینامیک و توابع آماده ی پیچیده برای داده های تاریخی وجود دارد.

3- نوشتن الگوریتم محاسباتی در متاتریدر 5

اگر بخواهیم در مورد نوشتن الگوریتم محاسباتی در متاتریدر 5 صحبت کنیم باید گفت که اندیکاتور را باید طوری بنویسیم که داده ها را محاسبه و در بافر نمایش دهد. در ادمه مثال ساده از میانگین متحرک ساده  (SMA) را در MQL5 پیاده می کنیم.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Blue

input int Period = 14;          // دوره میانگین متحرک

double SMA_Buffer[];            // بافر برای ذخیره مقادیر

int OnInit()

{

SetIndexBuffer(0, SMA_Buffer, INDICATOR_DATA);

SetIndexStyle(0, DRAW_LINE);

SetIndexLabel(0, “SMA MT5”);

return(INIT_SUCCEEDED);

}

int OnCalculate(const int rates_total,

const int prev_calculated,

const datetime &time[],

const double &open[],

const double &high[],

const double &low[],

const double &close[],

const long &tick_volume[],

const long &volume[],

const int &spread[])

{

int start = Period – 1;  // شروع محاسبه پس از پر شدن دوره

for(int i = start; i < rates_total; i++)

{

double sum = 0;

for(int j = i – Period + 1; j <= i; j++)

{

sum += close[j];     // جمع قیمت های بسته شدن

}

SMA_Buffer[i] = sum / Period; // محاسبه میانگین

}

return(rates_total);

}

در این کد تعریف ورودی و بافر انجام شده و Period تعداد کندل ها و SMA_Buffer برای ذخیره مقادیر محاسبه شده. همچنین بخش OnInit می تواند بافر را به اندیکاتور وصل کرده، نوع نمایش را تعیین و نام خط را مشخص می کنیم.

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

4- رسم و تنظیمات بصری اندیکاتور در متاتریدر 5

پس از محاسبه داده ها، باید آن ها به صورت بصری روی نمودار نمایش داده شوند. در MQL5 این کار با بافرها و تنظیمات نمایش انجام می شود. شما می توانید با استفاده از کد زیر اقدام به رسم و تنظیمات بصری اندیکاتور در متاتریدر 5 کنید:

SetIndexBuffer(0, SMA_Buffer, INDICATOR_DATA);    // اتصال بافر

SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2, clrBlue); // نوع خط، ضخامت، رنگ

SetIndexLabel(0, “SMA MT5”);                     // نام خط

SetIndexDrawBegin(0, Period – 1);                // شروع رسم پس از پر شدن دوره

به منظور صحبت در مورد این کد باید گفت که بخش SetIndexBuffer به متاتریدر می گوید داده های بافر برای رسم استفاده شوند. در بخش SetIndexStyle، مشخص می کنیم داده ها به صورت خط، هیستوگرام یا سبک دیگر نمایش داده شوند. در قسمت SetIndexLabel نام خط روی نمودار و لیست اندیکاتورها را مشخص کرده و در بخش SetIndexDrawBegin، شروع رسم خط پس از تکمیل دوره محاسبات را تعیین می کند تا مقادیر ناقص نمایش داده نشوند. از آن جایی که در MQL5 می توان چندین بافر با سبک های مختلف تعریف کرد، می توان اندیکاتورهای پیچیده تر با چندین خط رسم نمود. همچنین رنگ، ضخامت و نوع خط قابل تغییر هستند و می توان آن ها را با متغیرهای ورودی قابل تنظیم کرد.

5- تست و رفع خطا اندیکاتور در متاتریدر

پس از نوشتن کد اندیکاتور، لازم است آن را کامپایل و تست کنیم تا مطمئن شویم بدون مشکل اجرا می شود و نتایج درست نمایش داده می شوند. برای تست باید ابتدا اقدام به کامپایل اندیکاتور کنید. در محیط MetaEditor، بر روی دکمه Compile کلیک کنید یا کلید F7 را فشار دهید. اگر خطایی وجود داشته باشد، در پنجره Errors نمایش داده می شود و باید اصلاح گردد.

تست اندیکاتور ساخته شده و رفع باگ

همچنین برای اجرای اندیکاتور روی نمودار باید اندیکاتور ساخته شده را از لیست Custom Indicators در متاتریدر پیدا کنید. سپس آن را روی نمودار مورد نظر بکشید و رها کنید. حالا مقادیر محاسبه شده باید به شکل خط یا نمودار مشخص شده نمایش داده شوند.

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

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

int start = prev_calculated > 0 ? prev_calculated – 1 : Period – 1;

for(int i = start; i < rates_total; i++)

{

// محاسبه فقط روی کندل های جدید

}

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

ساخت اندیکاتور MACD در متاتریدر

موضوع دیگر این است که دستورهای اضافی در  OnCalculate را حذف کنید چون هر دستور اضافی باعث کاهش سرعت اندیکاتور می شود. به همین خاطر باید نمایش اطلاعات در چارت را تنها به موارد ضروری محدود کنید.

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

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

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

مقایسه ساخت اندیکاتور در متاتریدر 4 با 5

اگر بخواهیم به مقایسه ساخت اندیکاتور در متاتریدر 4 با 5 بپردازیم، می توان به جدول زیر اشاره کرد:

ویژگیمتاتریدر 4متاتریدر 5
مدل برنامه‌نویسیروندیرویداد محور
تابع اصلی محاسباتOnCalculate() ساده با پارامترهای پایهOnCalculate() پیشرفته با پارامترهای کامل داده تاریخی
استفاده از کلاس‌هامحدودپشتیبانی کامل از کلاس‌ها و برنامه‌نویسی شی‌گرا
بافرهامحدود، برای نمایش داده‌ها استفاده می‌شودپیشرفته، چند نوع بافر با کاربردهای مختلف (داده، رنگ، محاسبات)
ورودی‌ها (Inputs)Input برای پارامترهای قابل تغییر توسط کاربرinput قابلیت ترکیب با کلاس‌ها و متغیرهای پیشرفته
محاسبه داده‌هاحلقه‌های ساده روی آرایه‌هاامکانات پیشرفته برای داده‌های تاریخی، آرایه‌های دینامیک و توابع آماده
نمایش بصریخط، هیستوگرام، پنجره جداگانهچندین سبک نمایش، امکان چندین خط و پنجره‌های همزمان

حرف آخر

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

دیدگاه‌ها ۰
ارسال دیدگاه جدید