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

 
Agat:
Добрый день. После последнего обновления МТ5 на билд 1604 мои индикаторы перестали корректно работать. Я использую
т.н "жидкие" индикаторы. К примеру, в одном окне установлено несколько разнопериодных стохастиков. Так вот теперь короткие отрисовываются
нормально, как и раньше, чуть более длинные рисуют всего несколько баров, а самые длинные не рисуются вообще.

 Такое впечатление, что резко стало не хватать истории. Не подскажете, что могло случиться?
Оказывается, глюк возник в тех МТ, где не были открыты младшие таймфреймы. Пришлось проклацать графики от ТФ М1 и выше и всё наладилось. Вопрос закрыт.
 
Ага, рано обрадовался, при перезапуске терминала всё то же самое, надо каждый раз сидеть щёлкать по всем графикам.
Такое не годится, работать невозможно. Ну хоть кто-то скажет слово по существу вопроса или нет? Явно обновление глючное.

Куда вообще обращаются по таким вопросам?
 
Здравствуйте! 2017.06.02_17:45 GMT+3. У меня вопрос. Программа .mq5 писал вычисление своего лота, -- результат, -- программа в тестере стратегий пытается открыть сделку запредельно большим лотом. При проценте риска 1.09. Размер залога получается больше депозита (по умолчанию $10 000). Попробовал пользоваться стандартным ООП файлом из папки Include>Expert>Money>MoneyFixedRisk.mqh . Результат: программа пытается открывать сделку с нулевым лотом. (0.00). Я думаю, -- это приколы программистов корпорации. Или я чего-то не понимаю? Ну сделать так, чтобы твой советник был бесполезным. На сторону загнуть лот. Может кто знает что нужно написать, чтобы советник открывал сделки вычисленным лотом, с заданным процентом риска? А то я сам не справляюсь, только зря время теряю. Надеюсь, программисты корпорации не сильно обидятся? Прилагаю включаемый файл Lot.mqh . Надеюсь что кто-нибудь ответит. 18:00 GMT+3. Вставил в 18:11 GMT+3.    
Файлы:
Lot.mqh  2 kb
 
Agat:
Добрый день. После последнего обновления МТ5 на билд 1604 мои индикаторы перестали корректно работать. Я использую
т.н "жидкие" индикаторы. К примеру, в одном окне установлено несколько разнопериодных стохастиков. Так вот теперь короткие отрисовываются
нормально, как и раньше, чуть более длинные рисуют всего несколько баров, а самые длинные не рисуются вообще.

 Такое впечатление, что резко стало не хватать истории. Не подскажете, что могло случиться?


Каким образом осуществляете доступ к истории чужого периода? Какие проверки результата доступа осуществляете? Какие кода ошибок получаете? 

 
Николай Никитюк:
Здравствуйте! 2017.06.02_17:45 GMT+3. У меня вопрос. Программа .mq5 писал вычисление своего лота, -- результат, -- программа в тестере стратегий пытается открыть сделку запредельно большим лотом. При проценте риска 1.09. Размер залога получается больше депозита (по умолчанию $10 000). Попробовал пользоваться стандартным ООП файлом из папки Include>Expert>Money>MoneyFixedRisk.mqh . Результат: программа пытается открывать сделку с нулевым лотом. (0.00). Я думаю, -- это приколы программистов корпорации. Или я чего-то не понимаю? Ну сделать так, чтобы твой советник был бесполезным. На сторону загнуть лот. Может кто знает что нужно написать, чтобы советник открывал сделки вычисленным лотом, с заданным процентом риска? А то я сам не справляюсь, только зря время теряю. Надеюсь, программисты корпорации не сильно обидятся? Прилагаю включаемый файл Lot.mqh . Надеюсь что кто-нибудь ответит. 18:00 GMT+3. Вставил в 18:11 GMT+3.    

Запустите этот советник: Money Fixed Risk - измените оба входных параметра и посмотрите принты в закладке "Эксперты" терминала.
 

Никак не могу получить данные индикатора в своем индикаторе.

int OnInit()
  {  
   handle1=iMA(NULL,0,per1,0,MODE_LWMA,PRICE_CLOSE);
   handle2=iMA(NULL,0,PLength1,0,MODE_LWMA,PRICE_CLOSE);
  }
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[])
  {
   int copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
   if(copied1<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle1)>0)
            break;
         Sleep(50);
        }
      copied1=CopyBuffer(handle1,0,0,toCount,TMP_Buf1);
      if(copied1<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }  
   int copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
   if(copied2<=0)
     {
      Sleep(50);
      for(int i=0;i<100;i++)
        {
         if(BarsCalculated(handle2)>0)
            break;
         Sleep(50);
        }
      copied2=CopyBuffer(handle2,0,0,toCount,TMP_Buf2);
      if(copied2<=0)
        {
         Print(__FUNCTION__+": copying indicator data failed. Error=",GetLastError());
         return(0);
        }
     }
  }

Не копируется ничего. Переменные copied1/2 всегда меньше нуля. В отладчике я вообще не могу попасть дальше этого кода. Как правильно это делать, уже голову сломал.

 
Хм.. до этого была ошибка 4806, сейчас 4807, когда создание хэндла в OnInit() перенёс. Как это делается-то?
 
Разобрался кажется. Хэндл не создавался. Не все данные инициализировал.
 

Как мне получить данные индикатора (iMA) от цен от буфера этого же индикатора?

iMAOnArray() в 4-ке решало эту задачу. А здесь как быть? Буфер своего же индикатора, причем ненулевой.

 

Тыкните пальцем. Где написанно как на mt5 написать свой график. Как в mt4 автономный график. Полазил почитал. Что- то ничего не могу найти.