Обсуждение статьи "Библиотека для простого и быстрого создания программ для MetaTrader (Часть XXIII): Основной торговый класс - контроль допустимых параметров" - страница 3

 
Alexander:
  Здравствуйте! Скачал последнюю версию библиотеки и Експерт Part_23, поставил на тестер визуальный режим и рыночные
ордера открываются, а все отложенные нет, в журнале пишет "2019.10.27 10:13:32.157 2019.09.23 10:00:02   failed sell stop limit 2.00 RTS-12.19 at 135750 (135800) sl: 135900 tp: 135600 [Invalid expiration].
Биржевые символы, брокер Открытие, version 5.00 build 2190.
  И еще.. В предыдущих статьях, по-моему в части 14 или 15 Вы обещали наряду с коллекцией символов создать и классы для работы
со стаканом, но так почему-то и не создали, а ведь это базовые потребности библиотеки наряду с символами и аккаунтами, а Вы ушли уже

далеко в улучшения библиотеки (ресурсы, звуки и т.д.) а базовые задачи, как я считаю, пропустили.

   Спасибо, библиотека очень нужная.

Здравствуйте. Работа со стаканом будет реализована позже - после создания торгового класса.

Вроде бы в этой части описания библиотеки есть возможность автоматического задания корректных значений экспирации:

CTrading::SetCorrectTypeExpiration(const ENUM_ORDER_TYPE_TIME type=ORDER_TIME_GTC,const string symbol=NULL);
CTrading::SetCorrectTypeFilling(const ENUM_ORDER_TYPE_FILLING type=ORDER_FILLING_FOK,const string symbol=NULL);

Если есть (я не помню про эту часть, к сожалению), то в OnInit() вызовите эти два метода со значениями по умалчанию, и всем торговым объектам для каждого используемого символа должны будут установиться корректные значения типов заполнения и экспирации.

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

 

В OnInit'e советника Part23 записал 2 строки

 engine.TradingSetCorrectTypeExpiration();

 engine.TradingSetCorrectTypeFilling();

ничего не помогло, пишет в журнале тоже самое.

 
Alexander:

В OnInit'e советника Part23 записал 2 строки

 engine.TradingSetCorrectTypeExpiration();

 engine.TradingSetCorrectTypeFilling();

ничего не помогло, пишет в журнале тоже самое.

Хорошо, разберусь. Спасибо.

 
Alexander:

В OnInit'e советника Part23 записал 2 строки

 engine.TradingSetCorrectTypeExpiration();

 engine.TradingSetCorrectTypeFilling();

ничего не помогло, пишет в журнале тоже самое.

В каком месте вставляете эти строки?

Их нужно вставлять в OnInit() после создания списка рабочих символов:

//--- Заполнение массива используемых символов
   used_symbols=InpUsedSymbols;
   CreateUsedSymbolsArray((ENUM_SYMBOLS_MODE)used_symbols_mode,used_symbols,array_used_symbols);

//--- Установка типа используемого списка символов в коллекции символов
   engine.SetUsedSymbols(array_used_symbols);

//--- Вот тут нужно задать торговым объектам всех символов корректные значения типов исполнения и экспирации

//--- Отображение выбранного режима работы с коллекцией объектов-символов
   Print(engine.ModeSymbolsListDescription(),TextByLanguage(". Количество используемых символов: ",". The number of symbols used: "),engine.GetSymbolsCollectionTotal());
 
Никто не обратил внимание на то, что тип ордера StopLimit?
 
Алексей Тарабанов:
Никто не обратил внимание на то, что тип ордера StopLimit?

Да, я не обратил внимания. А для него есть что-то иное? По сути же стоп-лимитный ордер это стоповый ордер, при срабатывании которого выставляется лимитный. Для этой связки разве не те же условия, что и для раздельного использования стоп- и лимит-ордеров?

 
Artyom Trishkin:

Да, я не обратил внимания. А для него есть что-то иное? По сути же стоп-лимитный ордер это стоповый ордер, при срабатывании которого выставляется лимитный. Для этой связки разве не те же условия, что и для раздельного использования стоп- и лимит-ордеров?

Лимиты другие. И тайм-аут. 

 
Алексей Тарабанов:

Лимиты другие. И тайм-аут. 

Где это есть в спецификации символа? Как узнать нужные данные?
 
Нигде. К разработчикам, либо к логике. 
 
Alexander:

В OnInit'e советника Part23 записал 2 строки

 engine.TradingSetCorrectTypeExpiration();

 engine.TradingSetCorrectTypeFilling();

ничего не помогло, пишет в журнале тоже самое.

В общем, проверил на CFD на сервере Binary.com-Server. Ставит стоп-лимитные отложенные ордера (щёлкнуть для просмотра видео):

Как в "Открытие" проверить? Счёт открывать?