Вопрос к знатокам mql4 и mql5

 

Всем привет. Использую постоянно для написания стрелочников шаблон на mql4. Нужно перенести шаблон на mql5, но трудности с изучением. Но очень много трудностей. Пожалуйста помогите перенести шаблон c mql4 на mql5. Там всегда по закрытию свечи сигнал, то есть на новую.

 

#property version   "1.00"
#property strict
#property indicator_chart_window   
#property indicator_buffers 2     
#property indicator_color1 Red    
#property indicator_color2 Blue    

double Buffer[];
double Buffer2[];
int j=0;
int a=0;

int init()
{
   
   SetIndexStyle(0, DRAW_ARROW,0,3);
   SetIndexBuffer(0, Buffer);
   SetIndexStyle(1, DRAW_ARROW,0,3);
   SetIndexBuffer(1, Buffer2);
   SetIndexArrow(1,241);
   SetIndexArrow(0,242);
   return(0);
}



int start()                      
  {

   int i,                          
       Counted_bars;              
   
   Counted_bars=IndicatorCounted(); 
   i=Bars-Counted_bars-1;           
   
   while(i>=0)                
     {
      a=0;
      if(iRSI(NULL, 0,12, PRICE_CLOSE, i+1)>70 &&j!=1)
      {
      Buffer[i] = High[i]+5*Point;
      j=1; 
      a=1;     
      }    
      else
      if(iRSI(NULL, 0,12, PRICE_CLOSE, i+1)<30&&j!=2)
      {
      Buffer2[i] = Low[i]-5*Point;
      j=2;
      a=2;
      } 
       
      i--;                          
     }
     

     if (a==1)
     {
     Alert(Symbol()," ","DOWN");
     a=0;
     }
     
     if (a==2)
     {
     Alert(Symbol()," ","UP");
     a=0;
     }

   return(0);                        
  }
 
Думаю, поможет.
MQL's OOP notes: Converting MetaTrader 4 indicators to MetaTrader 5
MQL's OOP notes: Converting MetaTrader 4 indicators to MetaTrader 5
  • 2016.09.28
  • //www.mql5.com/en/users/marketeer">
  • www.mql5.com
It has been a long time since MetaTrader 5 was released, but MQL products for MetaTrader 4 do still prevail on mql5.com site (both in the codebase, and in the market), and in the Internet in general....
 
fxsaber:
Думаю, поможет.
Понял примерно, что к чему но на практике не получилось. 
 
Igor Kryuchkov:
Понял примерно, что к чему но на практике не получилось. 
Пишите про проблемы подробнее.
 
Stanislav Korotky:
Пишите про проблемы подробнее.

На примере моего шаблона, как его перенести на мкл 5. Библиотеку я качал

 
Igor Kryuchkov:

На примере моего шаблона, как его перенести на мкл 5. Библиотеку я качал

Вы же не пишете, какие именно проблемы.
 
Stanislav Korotky:
Вы же не пишете, какие именно проблемы.

Беру данный шаблон и вставляю в код mql5 и в они инит прописываю 

#define MT4_NEW_EVENT_HANDLERS 

#include <ind4to5.mqh> 


Только одни ошибки. Что не так делаю?

 
Igor Kryuchkov:

Беру данный шаблон и вставляю в код mql5 и в они инит прописываю 

#include <ind4to5.mqh> 


Только одни ошибки. Что не так делаю?

Может я неразборчиво написал ;-), но MT4_NEW_EVENT_HANDLERS нужно использовать, если у вас в исходнике используются новые обработчики (OnInit и пр.), а у вас старые. Так что нужен другой дифайн MT4_OLD_EVENT_HANDLERS.

Кроме того, там написано, что одним инклудником нельзя обойтись, нужно еще кое-что ручками поправить и дописать. Может вам стоит перечитать блогпост? И следующий, кстати, тоже пригодится.

 
Stanislav Korotky:

Может я неразборчиво написал ;-), но MT4_NEW_EVENT_HANDLERS нужно использовать, если у вас в исходнике используются новые обработчики (OnInit и пр.), а у вас старые. Так что нужен другой дифайн MT4_OLD_EVENT_HANDLERS.

Кроме того, там написано, что одним инклудником нельзя обойтись, нужно еще кое-что ручками поправить и дописать. Может вам стоит перечитать блогпост? И следующий, кстати, тоже пригодится.

int init()
{
   
   SetIndexStyle(0, DRAW_ARROW,0,3);
   SetIndexBuffer(0, Buffer);
   SetIndexStyle(1, DRAW_ARROW,0,3);
   SetIndexBuffer(1, Buffer2);
   SetIndexArrow(1,241);
   SetIndexArrow(0,242);
   
   #define MT4_OLD_EVENT_HANDLERS 
   #include <ind4to5.mqh> 
   
   return(0);

}

 

 

Так вставил. Ошибок куча, даже не понимаю, что править.  


 
Igor Kryuchkov:
int init()
{
   
   SetIndexStyle(0, DRAW_ARROW,0,3);
   SetIndexBuffer(0, Buffer);
   SetIndexStyle(1, DRAW_ARROW,0,3);
   SetIndexBuffer(1, Buffer2);
   SetIndexArrow(1,241);
   SetIndexArrow(0,242);
   
   #define MT4_OLD_EVENT_HANDLERS 
   #include <ind4to5.mqh> 
   
   return(0);

}

 

 

Так вставил. Ошибок куча, даже не понимаю, что править.  


Гы. Дифайны и инклуды нужно в начале на глобальном уровне вставлять, после property. Сейчас покажу.
 
Igor Kryuchkov:
int init()
{
   
   SetIndexStyle(0, DRAW_ARROW,0,3);
   SetIndexBuffer(0, Buffer);
   SetIndexStyle(1, DRAW_ARROW,0,3);
   SetIndexBuffer(1, Buffer2);
   SetIndexArrow(1,241);
   SetIndexArrow(0,242);
   
   #define MT4_OLD_EVENT_HANDLERS 
   #include <ind4to5.mqh> 
   
   return(0);

}

 

 

Так вставил. Ошибок куча, даже не понимаю, что править.  


остальные тоже не поймут,пока вы наконец не скопируете ошибки сюда, или пока не дождетесь, что вам переделают индикатор,если вы этого добиваетесь))