Ошибка в стандартной библиотеке функций CTrade SetTypeFillingBySymbol

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Thorsten Fischer
340
Thorsten Fischer  

Привет,

класс CTrade :: SetTypeFillingBySymbol устанавливает только ORDER_FILLING_FOK или ORDER_FILLING_IOC в зависимости от того, является ли брокер SYMBOL_FILLING_FOK или SYMBOL_FILLING_IOC отправляет.

Мой брокер "GBE Brokers" не отправляет ни SYMBOL_FILLING_FOK, ни ПоэтомуSYMBOL_FILLING_IOC будет иметь функцию ORDER_FILLING_RETURN поставить то , что она не делает.

Кроме того, функция всегда возвращает False.

Оригинал:

 //+------------------------------------------------------------------+
//| Set order filling type according to symbol filling mode          |
//+------------------------------------------------------------------+
bool CTrade::SetTypeFillingBySymbol( const string symbol)
  {
//--- get possible filling policy types by symbol
   uint filling=( uint ) SymbolInfoInteger (symbol, SYMBOL_FILLING_MODE );
   if ((filling& SYMBOL_FILLING_FOK )== SYMBOL_FILLING_FOK )
     {
      m_type_filling= ORDER_FILLING_FOK ;                 <-------------------- Variante 1
       return ( true );
     }
   if ((filling& SYMBOL_FILLING_IOC )== SYMBOL_FILLING_IOC )
     {
      m_type_filling= ORDER_FILLING_IOC ;                 <-------------------- Variante 2
       return ( true );
     }
//---                                                   <-------------------- Variante 3 ??????????????????????
   return ( false );
  }


Возможное решение:

 //+------------------------------------------------------------------+
//| Set order filling type according to symbol filling mode          |
//+------------------------------------------------------------------+
bool CTrade::SetTypeFillingBySymbol( const string symbol)
  {
//--- get possible filling policy types by symbol
   uint filling=( uint ) SymbolInfoInteger (symbol, SYMBOL_FILLING_MODE );
   if ((filling& SYMBOL_FILLING_FOK )== SYMBOL_FILLING_FOK )
     {
      m_type_filling= ORDER_FILLING_FOK ;
       return ( true );
     }
   else // Neu Hinzu
       if ((filling& SYMBOL_FILLING_IOC )== SYMBOL_FILLING_IOC )
        {
         m_type_filling= ORDER_FILLING_IOC ;
         return ( true );
        }
       // Neu Hinzu anfang
       else    
        {
         m_type_filling= ORDER_FILLING_RETURN ;
         return ( true );
        }
       // Neu Hinzu ende
//---
   return ( false );
  }


привет

Торстен

https://www.mql5.com/de/forum/332422

Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Приказы на проведение торговых операций оформляются ордерами. Каждый ордер имеет множество свойств для чтения, информацию по ним можно получать с помощью функций Идентификатор позиции, который ставится на ордере при его исполнении. Каждый исполненный ордер порождает сделку, которая открывает новую или изменяет уже существующую позицию...
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий