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

 
LookingFor:
   for(bars=start; bars<rates_total; bars++)



Коллеги , помогите пожалуйста 

не пойму что с циклом не так , данные из Хэндла не поступают в массив рса1


В OnInit() индикатора сделайте так:

  ArraySetAsSeries(pca1,true);

после этого, соответственно поменяйте свой цикл:

   for(bars=start; bars<rates_total; bars++)

с учётом того, что теперь самый правый бар Вашего индикатора имеет индекс "0".

 

Как завершить работу скрипта по нажатию любой или определённой клавиши? 

 
Владимир,спасибо,  а без изменения индексации ничего нельзя сделать? 
 
LookingFor:
Владимир,спасибо,  а без изменения индексации ничего нельзя сделать? 

Если не хотите ничего делать, тогда начинайте тестировать с отладкой на исторических данных. Пошагово. Смотрите данные с КАКОГО бара КУДА копируются.

 
LookingFor:

Коллеги , помогите пожалуйста 

не пойму что с циклом не так , данные из Хэндла не поступают в массив рса1


LookingFor:
Владимир,спасибо,  а без изменения индексации ничего нельзя сделать? 

Сначала приводим код к человеческому виду при помощи стилизатора (Стилизатор - Работа с исходным кодом - Разработка программ - MetaEditor)

//+------------------------------------------------------------------+ 
//| 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[])
  {
   if(prev_calculated==0)
     {
      i=bars=start=1;
     }
   else
     {
      start=prev_calculated;
     }
   for(bars=start; bars<rates_total; bars++)
     {
      CopyBuffer(pulse_Handle,0,start,1,pca1);

      if(pca1[bars]!=pca1[bars-1])
        {
         pca2[i]=pca1[bars]; i++;
         string s="";
         s=IntegerToString(pca1[bars])+"  ";
         Print(s); continue;
        }
      else
         continue;
     }
//--- return value of prev_calculated for next call 
   return(rates_total);
  }

также ОБЯЗАТЕЛЬНО нужно делать проверку - а что же там вернула функция CopyBuffer? Справка по CopyBuffer:

Возвращаемое значение

Количество скопированных элементов массива либо -1 в случае ошибки.

Дальше ставим точки останова и запускаем отладку на исторических данных

запускаем отладку на исторических данных

и контролируем несколько переменных:

time[rates_total-1]
time[0]
bars
pca1[???]

df

Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
Стилизатор - Работа с исходным кодом - Разработка программ - Справка по MetaEditor
  • www.metatrader5.com
Данная функция предназначена для оформления исходного кода в соответствии с рекомендуемым стандартом. Это позволяет сделать код более читаемым...
 

Помогите перевести на пятёрку

double GetExtremumZZPrice(string symb="0",ENUM_TIMEFRAMES tf=0,int ne=0,int dp=12,int dv=5,int bs=3) {
 if(symb=="0") symb=Symbol();
  double zz;
  int ke=0;
   for(int i=0; i<Bars(symb, tf)-1; i++) {
    zz=iCustom(symb, tf, "ZigZag", dp, dv, bs, 0, i);
    if(zz!=0) {
      ke++;
      if(ke>ne) return(zz);
  }}
  return(0);
 }
 
Vitaly Muzichenko:

Помогите перевести на пятёрку

Читай буфер индикатора и в полученном массиве ищи zz

Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
Документация по MQL5: Доступ к таймсериям и индикаторам / CopyBuffer
  • www.mql5.com
Доступ к таймсериям и индикаторам / CopyBuffer - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Vitaly Muzichenko:

Помогите перевести на пятёрку

Сначала получите хэндл индикатора! Потом через CopyBuffer получите массив нужных значений, а затем переберите их в цикле.
 

Всем спасибо!

Возник другой вопрос: Просмотрел форум и кодобазу, и нигде не нашёл применение СБ "Trend.mqh", там вроде всё есть. Если есть ссылка на применение, скиньте её сюда, или пример кодом.

Нашёл много советников с применение рси, ма, адх и прочих, но никто из авторов не использует СБ. Неужели она так плоха, или Я не нашёл коды, кто её использует?


Что мне нужно: Есть код, в нём получаю МА с нескольких таймфреймов

_ma1 = iMA(Symbol,PERIOD_M15,MAFast,0,MAMethod,MAPrice,i)
_ma2 = iMA(Symbol,PERIOD_M30,MAFast,0,MAMethod,MAPrice,i)
_ma3 = iMA(Symbol,PERIOD_H1, MAFast,0,MAMethod,MAPrice,i)

Чтобы не создавать несколько десятков хендлов в mql5 в OnInit, надеюсь что СБ решит мою проблему.

 
Vitaly Muzichenko:

Всем спасибо!

Возник другой вопрос: Просмотрел форум и кодобазу, и нигде не нашёл применение СБ "Trend.mqh", там вроде всё есть. Если есть ссылка на применение, скиньте её сюда, или пример кодом.

Нашёл много советников с применение рси, ма, адх и прочих, но никто из авторов не использует СБ. Неужели она так плоха, или Я не нашёл коды, кто её использует?


Что мне нужно: Есть код, в нём получаю МА с нескольких таймфреймов

Чтобы не создавать несколько десятков хендлов в mql5 в OnInit, надеюсь что СБ решит мою проблему.


Хоть хендлы, хоть объекты класса "Trend.mqh::CiMA" - всё равно создавать их нужно все.

Причина обращения: