Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2450

 
Vitaly Muzichenko #:

Это сделано, но так-же не работает при клоне.

А  ChartID графиков, у клонов тоже одинаковые?

 
Aleksandr Slavskii #:

А  ChartID графиков, у клонов тоже одинаковые?

не знаю. 

Нужно что-то надёжное и неизменное. 

 
2024.09.27 19:18:47.893 ZigZag 2(EURUSD,M15)        array out of range in 'ZigZag 2.mq5' (193,36)

Подскажите, пожалуйста, как исправить

Взял стандартный ЗигЗаг, изменил логику расчёта, и теперь при переключении ТФ вылетает такая штука. Затем, когда возвращаешься на предыдущий ТФ - проблема исчезает (история подгрузилась). 

Как избавить от этого?


 
Ivan Butko #:

Подскажите, пожалуйста, как исправить

Взял стандартный ЗигЗаг, изменил логику расчёта, и теперь при переключении ТФ вылетает такая штука. Затем, когда возвращаешься на предыдущий ТФ - проблема исчезает (история подгрузилась). 

Как избавить от этого?


Очевидно что отладить изменения логики расчёта. Чтобы не вылетало за пределы массива..

PS/ "доктор, когда я вот так вот тыкаю то у меня болит..а вы так больше не тыкайте и не будет болеть.." 

 
Maxim Kuznetsov #:

Очевидно что отладить изменения логики расчёта. Чтобы не вылетало за пределы массива..

PS/ "доктор, когда я вот так вот тыкаю то у меня болит..а вы так больше не тыкайте и не будет болеть.." 

2024.09.27 20:08:23.842 ZigZag 2 (EURUSD,MN1) -1

Мне нужно узнать время первых баров в истории (запомнить), потом прогнать через барШифт чтобы узнать конкретный индекс начала. 

И при первом запуске баршифт выдаёт -1 для индекса буфера


 
Ivan Butko #:

2024.09.27 20:08:23.842 ZigZag 2 (EURUSD,MN1) -1

Мне нужно узнать время первых баров в истории (запомнить), потом прогнать через барШифт чтобы узнать конкретный индекс начала. 

И при первом запуске баршифт выдаёт -1 для индекса буфера


Если минус один континью) 
 
Valeriy Yastremskiy #:
Если минус один континью) 

Не поленюсь даже попробовать

 
Valeriy Yastremskiy #:
Если минус один континью) 

Не прокатило))

2024.09.27 21:24:51.265 ZigZag 2 (AUDCAD,M1) -1

Принт после прохождения цикла


 
Ivan Butko #:

Не прокатило))

2024.09.27 21:24:51.265 ZigZag 2 (AUDCAD,M1) -1

Принт после прохождения цикла


Выложи код.
 
Tretyakov Rostyslav #:
Выложи код.
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,ZigzagPeakBuffer,INDICATOR_DATA);
   SetIndexBuffer(1,ZigzagBottomBuffer, INDICATOR_DATA);
   SetIndexBuffer(2,ColorBuffer, INDICATOR_COLOR_INDEX);
   
   ArraySetAsSeries(ZigzagPeakBuffer, true);  
   ArraySetAsSeries(ZigzagBottomBuffer, true);    
   ArraySetAsSeries(ColorBuffer, true);   
   
   
//--- set accuracy
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//--- name for DataWindow and indicator subwindow label
   string short_name=StringFormat("ZigZagColor(%d,%d,%d)",Trend);
   IndicatorSetString(INDICATOR_SHORTNAME,short_name);
   PlotIndexSetString(0,PLOT_LABEL,short_name);
//--- set an empty value
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0.0);
   
   P = SymbolInfoDouble(Symbol(), SYMBOL_POINT); 
  }
//+------------------------------------------------------------------+
//| ZigZag calculation                                               |
//+------------------------------------------------------------------+
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[])
  {
    if (rates_total < 100)
      return(0);
      
    ArraySetAsSeries(high, true);   
    ArraySetAsSeries(low, true);  
    ArraySetAsSeries(close, true); 
    ArraySetAsSeries(time, true); 
      
      
      
//---
   int    i,start=0;       
   
//--- initializing
   if (prev_calculated==0)
     {
      ArrayInitialize(ZigzagPeakBuffer,0.0);
      ArrayInitialize(ZigzagBottomBuffer,0.0);
      //--- start calculation from bar number InpDepth
      start = rates_total;
           
      int bars = rates_total - 1;
      }
      
      Print(iBarShift(_Symbol, PERIOD_CURRENT, time[bars], false));



2024.09.27 22:57:07.989 ZigZag 2 (AUDCAD,M15) -1




UPD


Получается iClose(), iHigh(), iLow(), iOpen() и iBarShift() - не работают при первом запуске 😯