ایجاد نمادهای دلخواه در Meta Trader 5 ( متا تریدر ۵ )

Meta Trader 5

برنامه Meta Trader 5 قابلیت ایجاد نمادهای دلخواه دارای علامت ها و نشانه های مختص بخود را ارائه می دهد. این نمادها می توانند هم از رابط ترمینال و هم در سطح برنامه، از طریق رابط کاربری MQL، در دسترس باشند. نمادهای دلخواه بر روی نمودارهای استاندارد نمایش داده می شوند تا اجازه استفاده از شاخص ها را، با قرار دادن اشیا و حتی تولید استراتژی های تجارت را بر اساس این نمادها بدهد.

Meta Trader 5

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

  • نمودار حجم برابر و محدوده برابر
  • نمودار های تیک
  • تغییر زمانی نشان ها با تبدیل اشکال کندل استیک
  • رنکو

به علاوه، مکانیزمی ارائه می دهیم که برای تطبیق ربات معامله گر با تجارت یک نماد واقعی به همراه یک نماد دلخواه فرعی بر روی همان نموداری به کار رود که EA اجرا می شود.

در این مقاله، نمودارهای شاخص منبع (استاندارد) از زمینه سیاه و نمودارهای شاخص دلخواه از زمینه سفید استفاده می نمایند.

نمودارهای حجم/ محدوده برابر در Meta Trader 5

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

اگرچه محور افقی در نمودار حجم برابر همچنان به معنای زمان بندی است، نشان زمانی هر میله قراردادی و بر اساس تغییر پذیری (تعداد یا اندازه معاملات) در هر دوره زمانی می باشد. اکثر تاجران این روش تشکیل میله ای را جهت تهیه توضیح دقیق تر تغییرات بازار در مقایسه با یک مقدار بازه زمانی ثابت در نظر می گیرند.

متاسفانه، نه Mata Trader 4 و نه Meta Trader 5 نمودار های حجم برابر خارج از باکس ایجاد نمی کنند. می بایست به روش خاصی تولید شوند.

در Mata Trader 4، این امر با استفاده از نمودارهای آفلاین می تواند انجام شود. این روش در مقاله نمودارسازی حجم برابر بازنگری شده توضیح داده شده است.

الگوریتم مشابهی می تواند با استفاده از نمادهای دلخواه در Mata Trader 5 به کار رود. برای ساده سازی موضوع، اجازه دهید تا از یک ربات معامله گر غیر تجاری از مقاله ای مشخص استفاده نماییم و آن را با Mata Trader 5 در رابط کاربری MQL تطبیق دهیم.

فایل اصلی EqualVolumeBars.mq4 به EqualVolumeBars.mq5 تغییر نام داده است و به مقدار جزئی بهینه شده است. به ویژه، کلمات کلیدی extern که پارامترهای ورودی را تعریف می کنند به input تغییر نام داده اند. به جای دو پارامتر، StartYear و StartMonth، یک پارامتر StartDate استفاده می شود. پارامتر CustomPeriod که در Meta Trader 4 برای تنظیم بازه زمانی غیر استاندارد استفاده می شد دیگر اکنون نیاز نیست و بنابراین حذف شده است.

توجه داشته باشید که حجم های Meta Trader 4 همگی حجم های تیک هستند یعنی نماینده تعداد تیک ها (تغییرات قیمت) در یک میله می باشند. ایده اصلی پردازش میله های M1 (با حجم های تیک شان) یا یک فایل csv خارجی با تیک های تهیه شده توسط کارگزار دیگر بود تا تیک های ورودی در واحد زمان را بشمارد و میله حجم برابر جدیدی را به محض رسیدن به تعداد مشخصی از تیک ها بسازد. میله ها در یک فایل hst نوشته می شوند که می توانند در Meta Trader 4 به عنوان نمودار آفلاین باز شوند.

بخش کد مربوط به خوانش فایل csv و نوشتن فایل hst در Meta Trader 5 لازم نمی باشد. در عوض، Meta Trader 5 کارگزاران را قادر می سازد تا حجم ها و تیک های واقعی (برای ابزارهای تبادل ارز، اما معمولا برای ابزارهای فارکس موجود نیستند) را به دست آورند. اگر این حالت فعال شود، میله های حجم برابر می توانند توسط حجم های واقعی، نه تعداد تیک ها، ساخته شوند.

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

میله های محدوده برابر به روش مشابه ترسیم می شوند. با این وجود، در اینجا وقتی که قیمت از تعدادی از نقاط مشخص عبور می کند، یک میله جدید باز می شود. لطفا توجه داشته باشید که این میله ها فقط در حالت تیک موجود هستند (FormM1==false).

نوع نمودار- حجم های تیک برابر، حجم های واقعی برابر، میله های محدوده- توسط پارامتر ورودی WorkMode تنظیم می شوند.

مرسوم ترین راه کار با نمادهای دلخواه استفاده از کتابخانه نماد (توسط fxsaber) می باشد. این امر می تواند به ربات معامله گر با استفاده از دستور #include متصل شود:

 

  #include <Symbol.mqh>

کد اول

حال، می توانیم یک نماد دلخواه بر اساس جداول نماد حاضر بسازیم. این امر به ترتیب زیر صورت می پذیرد:

if(!SymbolSelect(symbolName, true))
  {
    const SYMBOL Symb(symbolName);
    Symb.CloneProperties(_Symbol);
    
    if(!SymbolSelect(symbolName, true))
    {
      Alert("Can't select symbol:", symbolName, " err:", GetLastError());
      return INIT_FAILED;
    }
  }

کد دوم

که در آن SymbolName رشته ای با نام نماد دلخواه می باشد.

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

وقتی یک میله حجم برابر جدید ظاهر می شود و یا میله حاضر تغییر می کند، تابع WriteToFile خوانده می شود. این تابع با فراخواندن CustomRatesUpdate در Meta Trader 5 اجرا می شود:

 

  void WriteToFile(datetime t, double o, double l, double h, double c, long v, long m = 0)
  {
    MqlRates r[1];
    
    r[0].time = t;
    r[0].open = o;
    r[0].low = l;
    r[0].high = h;
    r[0].close = c;
    r[0].tick_volume = v;
    r[0].spread = 0;
    r[0].real_volume = m;
    
    int code = CustomRatesUpdate(symbolName, r);
    if(code < 1)
    {
      Print("CustomRatesUpdate failed: ", GetLastError());
    }
  }

کد سوم

بطور شگفت انگیزی، سیکل میله های M1 (FormM1 = true mode) تقریبا مشابه ویرایش MQL4 می باشد، که یعنی اینکه براحتی با تطبیق تابع WriteToFile می توانیم یه کد تابعی MQL5 برای میله های M1 دریافت کنیم. تنها بخش نیاز به تغییر، تولید تیک ها در RefreshWindow می باشد. در Meta Trader 4 این امر با ارسال پیام های ویندوز برای شبیه سازی تیک ها روی یک نمودار آفلاین انجام می شود. Meta Trader 5 از تابع CustomTicksAdd استفاده می کند:

  void RefreshWindow(const datetime t)
  {
    MqlTick ta[1];
    SymbolInfoTick(_Symbol, ta[0]);
    ta[0].time = t;
    ta[0].time_msc = ta[0].time * 1000;
    if(CustomTicksAdd(symbolName, ta) == -1)
    {
      Print("CustomTicksAdd failed:", GetLastError(), " ", (long) ta[0].time);
      ArrayPrint(ta);
    }
  }

کد چهارم

تولید تیک گزینه OnTick را بر روی نمودارهای نماد دلخواه فرا می خواند که بالقوه به ربات معامله گر این امکان را می دهد تا بر روی همین نمودارها معامله را اجرا نماید. با این وجود، این تکنولوژی به چند عمل اضافی نیاز دارد که بعدا در نظر خواهیم گرفت.

در حالتی که میله های حجم برابر از تاریخچه تیک (FromM1=false) تولید می شود، مسئله مقداری پیچیده تر است. این امر نیاز به خوانش تیک های واقعی با استفاده از توابع CopyTick/CopyTicksRange استاندارد دارد. تمام این توابع در کلاس TickBuffer اجرا می شوند.

 #define TICKS_ARRAY 10000
  
  class TicksBuffer
  {
    private:
      MqlTick array[];
      int tick;
    
    public:
      bool fill(ulong &cursor, const bool history = false)
      {
        int size = history ? CopyTicks(_Symbol, array, COPY_TICKS_ALL, cursor, TICKS_ARRAY) : CopyTicksRange(_Symbol, array, COPY_TICKS_ALL, cursor);
        if(size == -1)
        {
          Print("CopyTicks failed: ", GetLastError());
          return false;
        }
        else if(size == 0)
        {
          if(history) Print("End of CopyTicks at ", (datetime)(cursor / 1000));
          return false;
        }
        
        cursor = array[size - 1].time_msc + 1;
        tick = 0;
      
        return true;
      }
      
      bool read(MqlTick &t)
      {
        if(tick < ArraySize(array))
        {
          t = array[tick++];
          return true;
        }
        return false;
      }

کد پنجم

تیک ها در روش fill در بخش های TICKS_ARRAY درخواست و سپس به array افزوده می شوند که از این طریق سپس توسط روش read یکی پس از دیگری خوانده می شوند. این روش الگوریتم را برای کار با تاریخچه تیک مشابه با میله های تاریخچه M1 اجرا می کند (کل کد مرجع در ضمیمه آمده است).

TicksBuffer tb;
    
    while(tb.fill(cursor, true) && !IsStopped())
    {
      MqlTick t;
      while(tb.read(t))
      {
        ...
        // New or first bar
        if(IsNewBar() || now_volume < 1)
        {
          WriteToFile(...);
        }
      }

کد ششم

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

می توانید کد مرجع EqualVolumeBars.mq4 را با EqualVolumeBars.mq5 حاصل مقایسه نمایید.

حال ببینیم که ربات معامله گر جدید چگونه کار می کند. نمودار EURUSD H1 بر روی EA در حال اجرا به شکل زیر است:

نمودار میله های حجم برابر ربات معامله گر بر روی نمودار EURUSD H1 در Meta Trader 5

The EqualVolumeBars Expert Advisor on the EURUSD H1 chart in MetaTrader 5

در زیر نمودار حجم برابر ایجاد شده با EA می باشد که در آن هر میله حاوی 1000 تیک است.

EURUSD equivolume chart with 1000 ticks per bar, generated by the EqualVolumeBars EA in MetaTrader 5

نمودار حجم برابر EURUSD با 1000 تیک در هر میله، تولید شده با میله های حجم برابر EA در Meta Trader 5

EURUSD equivolume chart with 1000 ticks per bar, generated by the EqualVolumeBars EA in MetaTrader 5

توجه داشته باشید که حجم های تیک همه میله ها، به غیر از آخری که در حال تشکیل است (شمارش تیک ادامه دارد)، برابرند.

یک روش اجرایی دیگر- نمودارهای محدوده برابر- را بررسی کنیم. در زیر نموداری حاوی میله های با نوسان 100 نقطه می باشد.

EURUSD equal-range chart with 100 points per bar, generated by the EqualVolumeBars EA in MetaTrader 5

↑ نمودار محدوده برابر با 100 نقطه در هر میله، تولید شده توسط میله های حجم برابر EA در Meta Trader 5

همچنین، EA اجازه استفاده از حالت حجم واقعی برای ابزارهای تبادل ارز را میدهد:

The LKOH original chart with the real volume of 10000 per bar, generated buy the EqualVolumeBars EA in MetaTrader 5

The LKOH equi-volume chart with the real volume of 10000 per bar, generated buy the EqualVolumeBars EA in MetaTrader 5

نمودار (a) اصلی و (b) حجم برابر LKOH با حجم واقعی 10000 در هر میله، تولید شده توسط میله های حجم برابر EA در Meta Trader 5

 

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

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

نمودارهای تیک در Meta Trader 5

نمودار تیک در اپلیکیشن Meta Trader 5 در پنجره تماشای بازار (Market Watch) در دسترس است. بنا به دلایلی، نحوه اجرای آن متفاوت از نمودارهای معمول می باشد. این نمودار تعداد محدودی از تیک ها (تا آنجایی که می دانم، تا حدود 2000 تیک) را نمایش می دهد، اندازه آن کوچک بوده و نمی توان تمام صفحه نشان داد و تمامی قابلیت هایی را که معمولا توسط نمودارهای استاندارد به دست می آید، مانند توانایی استفاده از شاخص ها، اشیا و ربات معامله گر، ندارد.

Tick charts in the MetaTrader 5 Market Watch window

نمودارهای تیک در پنجره تماشای بازار Meta Trader 5

 

بنابراین چرا ابزارهای تحلیل استاندارد از تیک پشتیبانی نمی کنند در حالی که Meta Trader 5 از تیک های واقعی پشتیبانی کرده و قابلیت معامله نوسان بالا (HTF) را دارد؟ بعضی از معامله گران فرض می کنند که تیک ها ورودی های خیلی کوچک یا حتی نویز باشند. سایر معامله گران سعی در تولید سود از تیک ها دارند. بنابراین، شاید برای نمایش تیک ها در یک نمودار استاندارد با قابلیت اندازه گیری، انجام الگوها و ختی استفاده از ربات معامله گر مفید باشد. این امر می تواند با استفاده از قابلیت نماد دلخواه اجرا شود.

مجددا، می توانیم از توابع شناخته شده رابط کاربری MQL، مانند CopyTicks و CustomRatesUpdate استفاده نماییم. با استفاده از آنها، می توانیم به راحتی یک ربات معامله گر غیر تجاری که نمادهای دلخواه را بر اساس نمادهای نمودار کنونی تولید می کند، اجرا کنیم. در اینجا، هر میله M1 در تاریخچه نماد دلخواه یک تیک مجزاست. نمونه ای از چنین کد مرجعی در فایل Ticks2Bars.mq5 ضمیمه شده است. به عنوان مثال، اگر ربات معامله گر را بر روی نمودار EURUSD (در هر بازه زمانی) اجرا کنید، نماد EURUSD_ticks را خواهد ساخت.

مقادیر ورودی های EA به شرح زیر است:

 

  • مقدار Limit- تعداد میله ها (تیک ها) ساخته شده بعد از اجرا، به طور پیش فرض 1000 است؛ اگر روی صفر تنظیم کنید، تولید تیک آنلاین بدون تاریخچه قبلی شروع خواهد شد.
  • مقدار Reset- این گزینه تاریخچه تیک/میله قبلی را مجددا راه اندازی میکند، به طور پیش فرض بر روی true تنظیم کنید.
  • مقدار LoopBack- گزینه ای است که یک حالت بافر سیکلی ایجاد می کند که در آن تیک ها (با شاخص های بالاتر از Limit) از نمایه داخلی quotes کنار گذاشته می شود وقتی که تیک های جدید در آغاز اضافه می شود به گونه ای که نمودار همیشه دارای میله های Limit است؛ به طور پیش فرض بر روی true تنظیم کنید؛ وقتی LoopBack پارامتر Limit را فعال می کند باید بزرگتر از صفر باشد؛ وقتی LoopBack غیرفعال می شود، آرایه به طور پیوسته گسترش می یابد و تعداد میله ها در نمودار افزایش می یابد.
  • مقدار EmulateTicks- گزینه ای است که زمان های ورودی تیک جدید را برای نماد دلخواه تکرار می کند که خصیصه مهمی برای فراخوانی ربات معامله گر می باشد، بطور پیش فرض بر روی true تنظیم کنید.
  • مقدار RenderBars- روش نمایش میله/تیک: OHLC یا HighLow؛ در این حالت تیک، یک میله کاملا ویژه با بدنه (high=ask، low=bid، last=close)؛ اگر last=0 باشد، بنابراین بازه باز و بسته شدن برابر با یکی از مقادیر بالا یا پایین، بسته به جهت حرکت قیمت نسبت به تیک قبلی خواهد بود؛ در حالت HighLow تیک ها همانند میله های پین نشان داده می شوند که در آن High=ask،  Low=bid، open=close=(ask+bid)/2 می باشند.

اجراهای اصلی با تابع apply اجرا می شوند:

bool apply(const datetime cursor, const MqlTick &t, MqlRates &r)
  {
    static MqlTick p;
    
    // eliminate strange things
    if(t.ask == 0 || t.bid == 0 || t.ask < t.bid) return false;
    
    r.high = t.ask;
    r.low = t.bid;
    
    if(t.last != 0)
    {
      if(RenderBars == OHLC)
      {
        if(t.last > p.last)
        {
          r.open = r.low;
          r.close = r.high;
        }
        else
        {
          r.open = r.high;
          r.close = r.low;
        }
      }
      else
      {
        r.open = r.close = (r.high + r.low) / 2;
      }
      
      if(t.last < t.bid) r.low = t.last;
      if(t.last > t.ask) r.high = t.last;
      r.close = t.last;
    }
    else
    {
      if(RenderBars == OHLC)
      {
        if((t.ask + t.bid) / 2 > (p.ask + p.bid) / 2)
        {
          r.open = r.low;
          r.close = r.high;
        }
        else
        {
          r.open = r.high;
          r.close = r.low;
        }
      }
      else
      {
        r.open = r.close = (r.high + r.low) / 2;
      }
    }
    
    r.time = cursor;
    r.spread = (int)((t.ask - t.bid)/_Point);
    r.tick_volume = 1;
    r.real_volume = (long)t.volume;
  
    p = t;
    return true;

کد هفتم

در این تابع، فیلدهای ساختاری MqlTick برای لحظه زمانی کنونی cursor به فیلد های ساختار MqlRates وارد می شوند که پس از آن در تاریخچه نوشته میشود.

شکل زیر یک نمودار میله-تیک از نماد دلخواه را نشان می دهد (یک نمودار تیک استاندارد برای مقایسه نشان داده می شود):

Meta Trader 5

نمودار EURUSD کامل در Meta Trader 5

 

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

توجه داشته باشید که زمان های میله ها بر روی نمودار تیک میله ساختگی می باشند. اگر حالت LoopBack فعال شود، همواره میله آخر زمان کنونی با دقت یک دقیقه دارد، و میله های قبلی با فواصل -1 دقیقه می باشند (که حداقل اندازه بازه زمانی در Meta Trader 5 می باشد). اگر حالت LoopBack غیرفعال شود، زمان های میله با فاصله یک دقیقه بعد از شروع زمان اجرای ربات افزایش می یابد، بنابراین تمام میله های بعد از زمان شروع در آینده مجازی می باشند.

با این وجود، سمت راست ترین میله M1 مرتبط با تازه ترین تیک و قیمت (آخرین قیمت) می باشد. این امر اجازه می دهد تا با چنین نمودارهایی با استفاده از ربات معامله گر، هم آنلاین و هم آزمایشی، معامله انجام داد. برای انجام آنلاین، ربات معامله گر نیاز به کمی بهینه سازی دارد زیرا باید قادر به معامله نماد XY اصلی از نمودار نماد XY-ticks باشد (نمادهای دلخواه فقط در ترمینال وجود دارد و روی سرور شناخته نمیشود). در مثال بالا، EURUSD-ticks باید جایگزین EURUSD در تمام سفارشات معامله شود.

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

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

رویکرد ارایه شده با tick quotes اجازه می دهد تا استراتژی های  داد و ستد را بدون انباشت داده های مخصوص در بافرهای داخلی آزمایش و سیگنال ها بر اساس بافر محاسبه شوند در حالی که به سادگی می توانیم از شاخص ها یا اشیا معمولی استفاده کنیم.

تغییر شکل شیفت زمانی و کندل استیک

 

اکثر معامله گران از الگوی کندل استیک در شیوه خود به عنوان یک سیگنال اصلی یا مضاعف استفاده می کنند. این روش از نظر بصری آگاهی بخش است اما یک عیب مهم دارد.

الگوهای کندل استیک یک ژئومتری از پیش تعیین شده از توالی میله ها را توصیف می کند. تمامی میله ها وقتی تشکیل می شوند که قیمت ها در طول زمان تغییر کنند. با این وجود، زمان ذاتا پیوسته است، اگرچه نمودارها بطور مصنوعی زمان را به صورت بخش های تقسیم بندی شده مرتبط با میله ها و در راستای بعضی از منطقه های زمانی (به انتخاب کارگزار) ارائه میدهند.

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

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

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

الگوهای بازگشتی ( که معمولا در میان معامله گران به خاطر اجازه تعیین شروع حرکت خیلی محبوب هستند) می توانند به شکل ساده شده زیر ارائه شوند:

Meta Trader 5

 

بازگشت های قیمتی و ساختارهای کندل استیک معادل

شکل بالا یک ارائه شماتیک از بازگشت رو به بالا و یک بازگشت رو به پایین را نشان می دهد که هرکدام با دو متغیر پیکربندی میله ای می باشند. پیشتر دیدیم که امکان دارد الگوهای بیشتری با معنی مشابه وجود داشته باشند. معقول نیست که همه آنها را ردیابی کرد. راه حل مرسوم تر قابلیت تعیین الگوهای کندل استیک برای هر زمان شروعی می باشد.

علاوه بر این، انتقال زمان ممکن است بیانگر یک شیفت قابل قبول متناسب با GMT برای بعضی از مناطق زمانی دیگر باشد که از نظر تئوری یعنی اینکه این الگوهای کندل استیک همچنین می توانند در منطقه جدید، همانند الگوی تشکیل شده در منطقه زمانی ما، کاربرد داشته باشند. همه سیگنال ها ارزشمندند.

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

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

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

ایجاد چنین نماد دلخواه شیفت زمانی در TimeShift.mq5 ربات معامله گر اجرا می شود.

مقدار شیفت در پارامتر شیفت مرجع (بر حسب ثانیه) مشخص می شود. ربات معامله گر با استفاده از تیک ها کار می کند، اجازه محاسبه در شروع تاریخچه شاخص های انتقال یافته را می دهد و با تاریخ مشخص شده در پارامتر Start شروع به کار می کند. پس تیک ها به صورت آنلاین پردازش می شوند اگر حالت تولید OnTick فعال شود که باید به این منظور پارامتر EmulateTicks (با پیش فرض true) فراهم شود.

تبدیل زمان با یک روش ساده انجام می شود که برای تیک های تارخچه و تیک های آنلاین می باشد: به عنوان مثال برای تیک های آنلاین تابع add به کار می رود:

ulong lastTick;
  
  void add()
  {
    MqlTick array[];
    int size = CopyTicksRange(_Symbol, array, COPY_TICKS_ALL, lastTick + 1, LONG_MAX);
    if(size > 0)
    {
      lastTick = array[size - 1].time_msc;
      for(int i = 0; i < size; i++)
      {
        array[i].time += Shift;
        array[i].time_msc += Shift * 1000;
      }
      if(CustomTicksAdd(symbolName, array) == -1)
      {
        Print("Tick error: ", GetLastError());
      }
    }
  }
  
  void OnTick(void)
  {
    ...
    if(EmulateTicks)
    {
      add();
    }
  }

کد هشتم

نمودارهای EURUSD H1 مرجع و بهینه شده در زیر نشان داده می شوند.

Meta Trader 5

نمودار EURUSD H1 با ربات معامله گر شیفت زمانی

 

بعد از شیفت نیم میله (30 دقیقه)، تصویر تغییر می کند.

Meta Trader 5

نمودار نماد دلخواه EURUSD H1 با شیفت نیم ساعته

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

بیشتر بخوانید: آموزش صفر تا صد Mql5

 

پارت دوم این مقاله:

نمودار رنکو در MetaTrader 5

 

این مقاله ترجمه شده توسط تیم آکادمی ایران ام کیو ال می باشد. 

صفحه اصلی مقاله

 

سایر مقالات مرتبط

متا تریدر چیست؟
متاتریدر

متا تریدر چیست؟

متا تریدر چیست؟ اولین سوالی که هر فرد وقتی می خواهد آموزش های متاتریدر مانند آموزش صفر تا صد mql5،

کامل ترین و بهترین آموزش متاتریدر 4
mql4

کامل ترین آموزش متاتریدر 4

بهترین آموزش متاتریدر 4 متاتریدر4 یک پلتفرم معاملاتی محسوب می‌ شود که دارای رابط کاربری ساده است و همین یادگیری

پاسخ‌ها

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

اندیکاتور هوش مصنوعی

4 الگوریتم تشخیص روند بازار

برای توضیحات بیشتر به سایت risegroupfx.com مراجعه کنید

فرصت استثنائی برای خرید با %30 تخفیف را از دست ندهید