Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 162

 

Написал наипростейший индикатор на mql4, захотел перевести на mql5, и вот уже неделю бьюсь, не получается! Уже весь на нервах, матерю mql5, как так, простейший индюк в 34 строки в mql5 уже 88 написал!

Вот код на mql4:

#property indicator_separate_window
#property indicator_level1 0
#property indicator_buffers 3

extern int kol_vo_bar = 15;
extern string Symbol_1 = "GBPJPY";
extern string Symbol_2 = "EURJPY";

double SpreadA[];
double SpreadB[];
double Spread[];

int init()
{
   SetIndexBuffer(0,SpreadA);
   SetIndexBuffer(1,SpreadB);
   SetIndexBuffer(2,Spread);
   SetIndexStyle(0,DRAW_SECTION,EMPTY,2,Red);
   SetIndexStyle(1,DRAW_SECTION,EMPTY,2,Blue);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Gray);
   return(0);
}

int start()
{
   int k;
   for(k = 0; k < iBars(Symbol_1,0); k++)
   {
            SpreadA[k] = iClose(Symbol_1,0,k)*100/iOpen(Symbol_1,0,k+kol_vo_bar)-100;
            SpreadB[k] = iClose(Symbol_2,0,k)*100/iOpen(Symbol_2,0,k+kol_vo_bar)-100;                  
            Spread[k] = SpreadA[k]-SpreadB[k];
   }
   return(0);
}

 И вот на mql5:

#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Label1
#property indicator_label1  "Label1"
#property indicator_type1   DRAW_SECTION
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2
//--- plot Label2
#property indicator_label2  "Label2"
#property indicator_type2   DRAW_SECTION
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2

#property indicator_label3  "Label3"
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_color3  clrGray
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1

//--- input parameters
input int kol_vo_bar=96;
input string   Symbol_1="GBPJPY";
input string   Symbol_2="EURJPY";
//--- indicator buffers
double         Label1Buffer[];
double         Label2Buffer[];
double         Label3Buffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,Label1Buffer,INDICATOR_DATA);
   SetIndexBuffer(1,Label2Buffer,INDICATOR_DATA);
   SetIndexBuffer(2,Label3Buffer,INDICATOR_DATA);
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[])
  {
//---
   for(int k=0; k<Bars(_Symbol,_Period); k++)
   {
            Label1Buffer[k] = iClose(Symbol_1,PERIOD_CURRENT,k)*100/iOpen(Symbol_1,PERIOD_CURRENT,k)-100;
            Label2Buffer[k] = iClose(Symbol_2,PERIOD_CURRENT,k)*100/iOpen(Symbol_2,PERIOD_CURRENT,k)-100;                  
            Label3Buffer[k] = Label1Buffer[k]-Label2Buffer[k];
   }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
double iClose(string symbol,ENUM_TIMEFRAMES tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyClose(symbol,tf,index,1,Arr)>0)
        return(Arr[0]);
   else return(-1);
}
double iOpen(string symbol,ENUM_TIMEFRAMES tf,int index)
{
   if(index < 0) return(-1);
   double Arr[];
   if(CopyOpen(symbol,tf,index+kol_vo_bar,1,Arr)>0)
        return(Arr[0]);
   else return(-1);
}

Линии индикатора в МТ5 не правильно отображаются. 

Что я не так написал? 

Люди добрые, помогите, сжальтесь над беднягой, я уже на пределе срыва, честно. Как жаль что здесь нельзя материться!

Модератор, не бань меня, сначала предупреди разок если что не так.

 

Вы на каждом тике пересчитываете все доступные бары, крайне не оптимальный вариант, тормоза жуткие. 

 
zlodei:


Линии индикатора в МТ5 не правильно отображаются.

Что я не так написал?

Где работа с PlotIndexXXX ? 

лень не позволила читать документацию и примеры?



Модератор, не бань меня, сначала предупреди разок если что не так.

в кодебазу идите и читайте. примеров сотни.
 
sergeev:

Где работа с PlotIndexXXX ? 

лень не позволила читать документацию и примеры?


в кодебазу идите и читайте. примеров сотни.

Интересно, зачем тогда нужно вот это в начале кода:

#property indicator_label1  "Label1"
#property indicator_type1   DRAW_SECTION
#property indicator_color1  clrRed
#property indicator_style1  STYLE_SOLID
#property indicator_width1  2

#property indicator_label2  "Label2"
#property indicator_type2   DRAW_SECTION
#property indicator_color2  clrBlue
#property indicator_style2  STYLE_SOLID
#property indicator_width2  2

#property indicator_label3  "Label3"
#property indicator_type3   DRAW_HISTOGRAM
#property indicator_color3  clrGray
#property indicator_style3  STYLE_SOLID
#property indicator_width3  1

 Тут же все свойства для каждой линии указаны? Или mql5 этого мало, нужно теперь свойства линий ищё через PlotIndex прописать?

Читал кучу примеров, и документацию, 80% и всего непонятно, например зачем усложнять простые вещи? 

Например в mql4:

   SetIndexStyle(0,DRAW_SECTION,EMPTY,2,Red);
   SetIndexStyle(1,DRAW_SECTION,EMPTY,2,Blue);
   SetIndexStyle(2,DRAW_HISTOGRAM,EMPTY,1,Gray);

 В mql5 теперь я даже не представляю сколько может занять указание стилей линий, строк 50 наверно, а результат 1 и тот же.

MQL5 создан для ПРОГРАММИСТОВ, MQL4 создан для ТРЕЙДЕРОВ. Т.е. если хочешь проверить систему, запрограммируй её в mql4, если хочешь тоже самое только для МТ5 обращайся к программисту, или бросай торговлю, и трать время на изучение mql5.

С выходом МТ5, я как трейдер заметил только 1 улучшение, это тестер 64 битный с возможностью использования всех ядер процессора.

Усложнение языка mql никак не повлияет на результаты торговли что в ручную, что на автоматизированную.  Усложнение языка важны для программистов, да - можно красивые кнопочки и панельки делать, да интегрировали со всякими не понятными WinAPI и т.п., но на результат торговли это никак не повлияло. Так зачем же все эти сложности если можно в mql4 запрграммировать, и проверить, вот только 1 БОЛЬШОЙ минус - нет терминала х64 и тестера с возможностью использования всех ядер. Если бы эти 2 вещи сделали - цены не было МТ4. Но их специально не сделают, чтоб он конкуренции МТ5 не создавал, и чтоб такие как я мучились, или платила деньги.

В общем спасибо за внимание, за "помощь". Не комментируйте, всёравно не буду в ветку заходить, это просто моё мнение, не больше, я пошёл.

 
Я новенький здесь . Подскажите торгую в мт5 на фьючеры индекс ртс .  как вывисти один график котировок с 2009 года по сегодня ?
 
sbr080:
Я новенький здесь . Подскажите торгую в мт5 на фьючеры индекс ртс .  как вывисти один график котировок с 2009 года по сегодня ?
Обратится к брокеру, что бы он дал Вам склеенный график.
 
barabashkakvn:
Обратится к брокеру, что бы он дал Вам склеенный график.
я смогу его склеить сам ? 
 
sbr080:
я смогу его склеить сам ? 
Нет. Только брокер. Если своими силами, то придется писать свой индикатор.
 
barabashkakvn:
Нет. Только брокер. Если своими силами, то придется писать свой индикатор.
спасибо.
 
 Подскажите, можно ли, чтобы эксперт выводил на график технические индикаторы с параметрами которыми он пользуется?  Т.е. примерно так как при использовании визуализации в тестере стратегий. Не могу найти нигде такой информации.
Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
Причина обращения: