Пасиму нисего не рисует, насяльника?

 

Индикатор сделанама, хистограмма сделанама, нисего не рисует в мт5 мана.. В буфере значения есть

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_plots   1
#property indicator_type1   DRAW_HISTOGRAM
#property indicator_color1  Red
#property indicator_level1 0.0
input int ArraysSizes = 500;
//---- input parameters
double Buffer[];
double EURUSD[];
double GBPUSD[];
double EURGBP[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   ArraySetAsSeries(EURUSD,true); 
   ArraySetAsSeries(GBPUSD,true);
   ArraySetAsSeries(EURGBP,true);
   ArraySetAsSeries(Buffer,true);
    
   SetIndexBuffer(0, Buffer, INDICATOR_DATA); 
   SetIndexBuffer(1, EURUSD, INDICATOR_CALCULATIONS);
   SetIndexBuffer(2, GBPUSD, INDICATOR_CALCULATIONS);
   SetIndexBuffer(3, EURGBP, INDICATOR_CALCULATIONS); 
   
    
   return(0);
  }
  
int OnCalculate (const int rates_total,      // размер массива price[] 
                 const int prev_calculated,  // обработано баров на предыдущем вызове 
                 const int begin,            // откуда начинаются значимые данные 
                 const double& price[]       // массив для расчета 
   )
  { 
   
   if (prev_calculated == 0)
    {   
     CopyClose("EURUSD",_Period,0,ArraysSizes,EURUSD);
     CopyClose("GBPUSD",_Period,0,ArraysSizes,GBPUSD);
     CopyClose("EURGBP",_Period,0,ArraysSizes,EURGBP); 
     ArrayResize(Buffer,ArraysSizes) ;
     for(int i=1; i < ArraysSizes; i++)
      {
       Buffer[i] = NormalizeDouble(EURUSD[i]/GBPUSD[i]-EURGBP[i],_Digits);
      }
    }
    
   if (prev_calculated != 0)
    {   
     CopyClose("EURUSD",_Period,0,1,EURUSD);
     CopyClose("GBPUSD",_Period,0,1,GBPUSD);
     CopyClose("EURGBP",_Period,0,1,EURGBP); 
 
     Buffer[0] = NormalizeDouble(EURUSD[0]/GBPUSD[0]-EURGBP[0],_Digits);
      
    }
        
   return(rates_total);
  }

 

 
Maxim Dmitrievsky:

Индикатор сделанама, хистограмма сделанама, нисего не рисует в мт5 мана.. В буфере значения есть 

Таааак буфен ресайзенама. Нихаласоооо.

Сиклама ооосень кривонама. Усьловие толзно вклюсъять ратстоталанама.

Плавелять нузнама каздый запросама инфомасиянама. 

Иии саманама прикольнамана: в пятерканама пельванама свесянама пад номеланама ратстоталанама-1. 

Писяяль. Глуусть...

 
Alexey Kozitsyn:

Таааак буфен ресайзенама. Нихаласоооо.

Сиклама ооосень кривонама. Усьловие толзно вклюсъять ратстоталанама.

Плавелять нузнама каздый запросама инфомасиянама. 

Иии саманама прикольнамана: в пятерканама пельванама свесянама пад номеланама ратстоталанама-1. 

Писяяль. Глуусть...

Так в буфер все равно что-то попадает, но ничего не отображается, как так? И еще, если я его ресайз не делаю, у меня сразу аррэй аут оф рэндж, как будто буфер не проинициализирован, или что. А если я только для 500 значем мне все котировки перебирать.. Ниче не понимаю короче ) В мт4 то же самое работает. Статьи по мультивалютным индюкам не осилил, там вообще что-то с чем-то..
 
Maxim Dmitrievsky:
Так в буфер все равно что-то попадает, но ничего не отображается, как так? И еще, если я его ресайз не делаю, у меня сразу аррэй аут оф рэндж, как будто буфер не проинициализирован, или что. А если я только для 500 значем мне все котировки перебирать.. Ниче не понимаю короче ) В мт4 то же самое работает. Статьи по мультивалютным индюкам не осилил, там вообще что-то с чем-то..

Ну ведь русским языком же написано:

Сиклама ооосень кривонама. Усьловие толзно вклюсъять ратстоталанама.

Иии саманама прикольнамана: в пятерканама пельванама свесянама пад номеланама ратстоталанама-1

В буфер далеко не все равно что попадет. Попадет мусор - гистограмма видна не будет. Да, еще нужно установить EMPTY_VALUE для всех буферов, задать при инициализации значения EMPTY_VALUE.

Можете здесь посмотреть, как цикл должен выглядеть для всей истории:

https://www.mql5.com/ru/code/13351

Gaps
Gaps
  • голосов: 14
  • 2015.06.30
  • Alexey Kozitsyn
  • www.mql5.com
Индикатор ценовых разрывов между закрытием предыдущей свечи и открытием текущей (нулевой).
 
Alexey Kozitsyn:

Ну ведь русским языком же написано:

В буфер далеко не все равно что попадет. Попадет мусор - гистограмма видна не будет. Да, еще нужно установить EMPTY_VALUE для всех буферов, задать при инициализации значения EMPTY_VALUE.

Можете здесь посмотреть, как цикл должен выглядеть для всей истории:

https://www.mql5.com/ru/code/13351

Для всей истории очень долго считает, скачал несколько индикаторов именно мультивалютных, все ужасно тормозные.. ну так вообще не годится, в мт4 намного быстрей
 
Maxim Dmitrievsky:
Для всей истории очень долго считает, скачал несколько индикаторов именно мультивалютных, все ужасно тормозные.. ну так вообще не годится, в мт4 намного быстрей
А кто мешает в терминале уменьшить параметр макс. баров в окне?
 
Maxim Dmitrievsky:
Для всей истории очень долго считает, скачал несколько индикаторов именно мультивалютных, все ужасно тормозные.. ну так вообще не годится, в мт4 намного быстрей

Кстати, еще вот, ознакомьтесь:

Примечание

После связывания динамический массив buffer[]  будет иметь индексацию как в обычных массивах, даже если для связываемого массива будет предварительно установлена индексация как в таймсериях. Если необходимо изменить порядок доступа к элементам индикаторного массива, необходимо применить функциюArraySetAsSeries() после связывания массива функцией SetIndexBuffer(). При этом необходимо иметь ввиду, что нельзя изменять размер для динамических массивов, назначенных в качестве индикаторных буферов функцией SetIndexBuffer(). Для индикаторных буферов все операции по изменению размера производит исполняющая подсистема терминала. 

https://www.mql5.com/ru/docs/customind/setindexbuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
Документация по MQL5: Пользовательские индикаторы / SetIndexBuffer
  • www.mql5.com
Пользовательские индикаторы / SetIndexBuffer - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Kozitsyn:

Кстати, еще вот, ознакомьтесь:

https://www.mql5.com/ru/docs/customind/setindexbuffer

Так в том и прикол, что у меня вот тут Buffer[0] = NormalizeDouble(EURUSD[0]/GBPUSD[0]-EURGBP[0],_Digits);

Всегда аррэй аут оф рэндж, если я ему насильно размер не присвою. А написано что размер индикаторного буфера устанавливается системой. А про тайм-серии знаю.

Ну я думаю разберусь по-маленьку ) 

Кстати, вот у этого индикатора сильная задержка при расчете текущего бара https://www.mql5.com/ru/code/569 Не успевает за ценой, почему так происходит? 

CrossIndex
CrossIndex
  • голосов: 8
  • 2011.10.12
  • Nikolay Kositsin
  • www.mql5.com
Индикатор позволяет отобразить график другой валютной пары в дополнительном окне.
 
Maxim Dmitrievsky:

Так в том и прикол, что у меня вот тут Buffer[0] = NormalizeDouble(EURUSD[0]/GBPUSD[0]-EURGBP[0],_Digits);

Всегда аррэй аут оф рэндж, если я ему насильно размер не присвою. А написано что размер индикаторного буфера устанавливается системой. А про тайм-серии знаю.

Ну я думаю разберусь по-маленьку ) 

Кстати, вот у этого индикатора сильная задержка при расчете текущего бара https://www.mql5.com/ru/code/569 Не успевает за ценой, почему так происходит? 

Индикатор тормозит, скорее всего потому, что 6 буферов и основные расчеты в таймере.

Если хотите узнать точнее, запустите индикатор в оптимизаторе. 

 
Maxim Dmitrievsky:

Индикатор сделанама, хистограмма сделанама, нисего не рисует в мт5 мана.. В буфере значения есть

 

Это чо, MQL 5?

Ну ваабще. Скора полная копия Си шарпа будет...

Начало - дак так в Си# графики рисують, один в один почти...

Убрали б тогда MQL-ную примочку и понеслась Си-шарпить в полный рост, чо людей мучить новыми языками?

 
new-rena:

Это чо, MQL 5?

Ну ваабще. Скора полная копия Си шарпа будет...

Начало - дак так в Си# графики рисують, один в один почти...

Убрали б тогда MQL-ную примочку и понеслась Си-шарпить в полный рост, чо людей мучить новыми языками?

ну да, он. Основное мучение у меня тут с буферами - че куда копируется, че как индексируется, и непонятки с мультивалютным индюком, котировки по другим символам могут отставать ввиду того, что индюк пересчитывается с приходом нового тика текущего символа, а по другим могли изменения произойти. А онтаймеры и ончартивенты дополнительные начинают тормозить индикатора, который должен быть быстрым )