Ошибки, баги, вопросы - страница 3363

Alexey Viktorov #:

Давно такое поведение. Что-то не так в коде. Посмотрите другие индикаторы.

дру7ие на месте, везде шапка по работе с барами одинаковая, в этих 2 функциях беда, остальное в коде только математические

Artyom Trishkin #:
ПКМ --> Обновить. Появляется? 

не появляется,

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

lynxntech #:

не появляется,

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

Данные должны подгрузиться. 
В инете обратитесь к нужному таймфрейму, например, iTime. Это должно запустить подгрузку данных. 
lynxntech #:

не появляется,

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

Проверяйте успешность работы функции. Если данных ещё нет - выходите из обработчика с возвратом 0
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<min_rates_total)
      return(RESET);
//--- проверка на новый бар
   if(prev_calculated==rates_total)
      return(rates_total);
//----
   int start,bar,indexD1;
   double openDay;
//---- 
   if(prev_calculated>rates_total || prev_calculated<=0) 
     {
        start=min_rates_total; 
      //start=rates_total-10; 
      //--- 
      ArrayInitialize(Buffer1,EMPTY_VALUE);
      ArrayInitialize(Buffer2,EMPTY_VALUE);
      ArrayInitialize(Buffer3,EMPTY_VALUE);
     }
   else
      start=prev_calculated; 

остальное 2 функции которые выше и перемножения математические

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

Alexey Viktorov #:

Зачем? Зачем в выходные должен работать  OrderCheck()???

Да и приоритет ошибок существует. Пусть эта ошибка имеет самый низкий приоритет. Тогда в выходные будет отловлена любая другая ошибка. И только если других нет, то будет сообщено о том, что рынок закрыт. И каждый программист может поставить условие по дню недели.

Потом не забывайте о том, что отладка и тестер работает мимо сервера брокера. При запуске собрал нужные данные и отключился…  Разве не так? И какое дело мне до закрытого рынка, если я работаю в отладчике или тестере?

У нас разное понимание штатной OrderCheck. Напишите свою OrderCheck и пользуйтесь ей. Например, в MT4Orders так и сделано, вплоть до успешного прохождения валидатора Маркета.

Artyom Trishkin #:
Данные должны подгрузиться. 
В инете обратитесь к нужному таймфрейму, например, iTime. Это должно запустить подгрузку данных. 

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

lynxntech #:

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

Когда ничего ещё не просчитано, идëт инициализация буферов. Вот результат этой инициализации и отображается скрытием линий. А следующего тика нет для прорисовки. 
Artyom Trishkin #:
Когда ничего ещё не просчитано, идëт инициализация буферов. Вот результат этой инициализации и отображается скрытием линий. А следующего тика нет для прорисовки. 

если перезайти на график по символу, все нормально показывает, только при старте нет отрисовки

fxsaber #:

У нас разное понимание штатной OrderCheck. Напишите свою OrderCheck и пользуйтесь ей. Например, в MT4Orders так и сделано, вплоть до успешного прохождения валидатора Маркета.

Спасибо, конечно, за предложение, но эту библу даже читать никогда не буду. Не нравится мне ваш стиль написания. А пользоваться не понимая что должно происходить противоречит моим принципам.

Узнать, что рынок закрыт надо до того как отправить OrderSend(). Если вы знаете функцию которая возвращает код этой ошибки пожалуйста напишите.

Вся проблема в том, что брокеры не приветствуют многократные попытки открыть позицию\ордер.