Советники: Trading engine 4 - страница 2

 
Edviao #:

Привет Vladimir,
Эта функция работает только для продуктовых заказов и сработавших отложенных заказов.

Я правильно понял?

Если в торговую историю записана сделка 'BUY' или 'SELL' и если тип входа 'DEAL_ENTRY_IN' или 'DEAL_ENTRY_INOUT'.

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

 
Vladimir Karputov #:

Если в торговую историю записана сделка 'BUY' или 'SELL' и если тип входа 'DEAL_ENTRY_IN' или 'DEAL_ENTRY_INOUT'.

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

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


Хотя бы параметр вроде: "'DEAL_ENTRY_IN/OUT" = true/false

 
Edviao #:

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


Хотя бы параметр вроде: "'DEAL_ENTRY_IN/OUT" = true/false

Нет. Вся идея в том, чтобы отловить ВХОД в рынок.

 
Здравствуйте Vladimir.
Я думаю, что есть серьезная проблема с "Trade Engine v4.010".
Советник не открывает отложенные ордера, только рыночные ордера. Поэтому все сопутствующие варианты настройки отложенных ордеров не работают.

Спасибо.




 
Edviao #:
Здравствуйте Vladimir.
Я думаю, что есть серьезная проблема с "Trade Engine v4.010".
Советник не открывает отложенные ордера, только рыночные ордера. Поэтому все сопутствующие варианты настройки отложенных ордеров не работают.

Спасибо.

Читайте пожалуйста внимательно статью и смотрите в код.

 
Vladimir Karputov #:

Читайте пожалуйста внимательно статью и смотрите в код.

Спасибо за ответ.
Мой другой вопрос:

Для отложенных ордеров в Trading Engine v4.010 доступна следующая опция «MaxSpread» :
«Pending: Maximum spread ('0' -> OFF)»

Но функция «Maximum spread», похоже, отсутствует для рыночных ордеров.
Можете ли вы добавить функцию "Maximum spread" для рыночных ордеров?

 
Edviao #:

Спасибо за ответ.
Мой другой вопрос:

Для отложенных ордеров в Trading Engine v4.010 доступна следующая опция «MaxSpread» :
«Pending: Maximum spread ('0' -> OFF)»

Но функция «Maximum spread», похоже, отсутствует для рыночных ордеров.
Можете ли вы добавить функцию "Maximum spread" для рыночных ордеров?

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

 
Vladimir Karputov #:

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

Спасибо вам за разъяснение!
Было бы правильным и логичным добавить следующий блок кода в торговый движок v4.010 для рыночных ордеров?
Если этот кодовый блок отсутствует или неверен, можете ли вы, если возможно, поделиться обновленным и правильным кодовым блоком «Максимальный разброс»?

Потому что я постараюсь добавить образец кода, который вы дадите, к версии 4.010.


"Max spread (0=off)" : (для рыночных ордеров)

//+------------------------------------------------------------------+
//| Maximum spread for market orders                                                              |
//+------------------------------------------------------------------+


bool CheckSpread()

{

   double spread = m_symbol.Ask()-m_symbol.Bid();
   

   if(_MaxSpread > 0 && spread>_MaxSpread){

      Print(__FILE__," ",__FUNCTION__,

               ", ERROR: ","Spread Ask-Bid (",DoubleToString(spread,m_symbol.Digits()),")",

               " > Maximum spread (",DoubleToString(_MaxSpread,m_symbol.Digits()),")");

      return false;

   }

   return true;

}
 
Edviao #:

Спасибо вам за разъяснение!
Было бы правильным и логичным добавить следующий блок кода в торговый движок v4.010 для рыночных ордеров?
Если этот кодовый блок отсутствует или неверен, можете ли вы, если возможно, поделиться обновленным и правильным кодовым блоком «Максимальный разброс»?

Потому что я постараюсь добавить образец кода, который вы дадите, к версии 4.010.


"Max spread (0=off)" : (для рыночных ордеров)

Обработка спреда для отложенных ордеров встроена в 'PlaceOrders'

//+------------------------------------------------------------------+
//| Place Orders                                                     |
//+------------------------------------------------------------------+
void PlaceOrders(const int index)
  {
***
   double spread=m_symbol.Ask()-m_symbol.Bid();
   if(m_pending_max_spread>0.0 && spread>m_pending_max_spread)
     {
      m_waiting_pending_order=false;
      if(InpPrintLog)
         Print(__FILE__," ",__FUNCTION__,
               ", ERROR: ","Spread Ask-Bid (",DoubleToString(spread,m_symbol.Digits()),")",
               " > Maximum spread (",DoubleToString(m_pending_max_spread,m_symbol.Digits()),")");
      return;
     }
//--- buy limit


Вам нужно встроить эту проверку в 'OpenPosition'

//+------------------------------------------------------------------+
//| Open position                                                    |
//+------------------------------------------------------------------+
void OpenPosition(const int index)
  {
 
A) Предоставленный вами блок кода «Place Orders» уже доступен в текущей версии v4.010.

Недоступны только следующие строки:
   double freeze=0.0,stops=0.0;
   FreezeStopsLevels(freeze,stops);

B) Строки кода «Open position», которые вы привели, например, уже доступны в текущей версии 4.010, и это те же строки. 
Я не понимаю, чем отличается? 

v4.010:
//+------------------------------------------------------------------+
//| Open position                                                    |
//+------------------------------------------------------------------+
void OpenPosition(const int index)
  {
   double freeze=0.0,stops=0.0;
   FreezeStopsLevels(freeze,stops);
   double max_levels=(freeze>stops)?freeze:stops;
   /*