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

 
comp:

Понял, спасибо. К сожалению, такое решение будет работать только в советнике (в котором нужно прервать расчет). В индикаторе такое не прокатит, т.к. вызов индикатором на индикатора на чарте не создает параллельную очередь, а попадает все в ту же очередь событий даже не конкретного чарта, а ВСЕХ чартов данного символа.

Как запихнуть индикатор в виде MQ5-ресурса, а не EX5-ресурса?

Никак. Тем более нельзя пытаться править сам код (текст программы) из другой программы.
 

Ребята! В чем может быть проблема? выставляю ордер 

 m_trade.SellLimit(1,Ask+40,_Symbol,0,0,ORDER_TIME_GTC,0,"")

Он выставляется. И..с такой же скоростью удаляется. В советнике всего   одна(уже) строчка! Эта! Т.е это не мой советник ордер удаляет. В чем проблема? 

 
Karputov Vladimir:
Никак. Тем более нельзя пытаться править сам код (текст программы) из другой программы.

Могу в коде нести с собой EX5  в виде массива. Создавать EX5-файл в песочнице и подключать его в виде ресурса.

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

 
comp:

Могу в коде нести с собой EX5  в виде массива. Создавать EX5-файл в песочнице и подключать его в виде ресурса.

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

Примите существующие правила, как должное, вместо требования реализации собственных хотелок.
 
Karputov Vladimir:
Примите существующие правила, как должное, вместо требования реализации собственных хотелок.
Где увидели требования?!
 

comp:

если бы можно было подключать сразу MQ5-ресурс.

а какая задача стоит кроме академического интереса?
 
o_O:
а какая задача стоит кроме академического интереса?

На самом деле разработчики сделали запрет на такое

comp:

Могу в коде нести с собой EX5  в виде массива. Создавать EX5-файл в песочнице и подключать его в виде ресурса.

Но дело, конечно, не в этом. Хочется сделать универсальный IsChanged() и подключать его через #include.

Таскать еще с собой EX5-файл индикатор для параллельности не хочется. Ну мало ли какой гадости в него запихали... А если MQ5 - то открытый исходник, другое отношение.

 
Если во время выполнения индикатора в логе ни разу не появилось "indicator is too slow", можно ли утверждать, что индикатор не зависал?
 
comp:
Если во время выполнения индикатора в логе ни разу не появилось "indicator is too slow", можно ли утверждать, что индикатор не зависал?

100% гарантии никто и ни где не даёт :) .Если индикатор в очередь сообщений хоть, что-то размещает, имеет смысл провести тестирование на быстром рынке. 

 

Добавлено. Если индикатор в очередь сообщений хоть, что-то размещает, то, кроме проверки на быстром рынке, имеет смысл запустить несколько индикаторов в терминале.

 
Karputov Vladimir:

100% гарантии никто и ни где не даёт :) .Если индикатор в очередь сообщений хоть, что-то размещает, имеет смысл провести тестирование на быстром рынке. 

 

Добавлено. Если индикатор в очередь сообщений хоть, что-то размещает, то, кроме проверки на быстром рынке, имеет смысл запустить несколько индикаторов в терминале.

Быстрый рынок можно и эмулировать через вызов FullOnCalculate()

#define TIMESERIES(X)                                                  \
   ::ArraySetAsSeries(X, TRUE);                                        \
   Size = ::MathMin(Copy##X(::Symbol(), ::Period(), 0, bars, X), Size);  

int FullOnCalculate( const int Prev_Calculated = 0 )
{
  int Spread[];
  long RealVolume[];
  
  int Size = INT_MAX;
  
  #ifdef __MQL4__
    const int bars = ::Bars;
  #endif

  #ifdef __MQL5__
    const int bars = ::Bars(::Symbol(), ::Period());
  #endif

  TIMESERIES(Spread)
  TIMESERIES(RealVolume)
  
  #ifdef __MQL4__
    return(::OnCalculate(Size, Prev_Calculated, Time, Open, High, Low, Close, RealVolume, Volume, Spread));
  #endif
  
  #ifdef __MQL5__
    datetime Time[];
    double Open[];
    double High[];
    double Low[];
    double Close[];
    long TickVolume[];

    TIMESERIES(Time)
    TIMESERIES(Open)
    TIMESERIES(High)
    TIMESERIES(Low)
    TIMESERIES(Close)
    TIMESERIES(TickVolume)
  
    return(::OnCalculate(Size, Prev_Calculated, Time, Open, High, Low, Close, RealVolume, TickVolume, Spread));
  #endif
}

событийную модель - аналогично. Вопрос же был в другом

comp:
Если во время выполнения индикатора в логе ни разу не появилось "indicator is too slow", можно ли утверждать, что индикатор не зависал?

 прошедшее время в терминах преподавания дисциплины "Русский язык".

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