провел тест обычным экспертом
void OnTick() { //--- Print( "FillOrKill="+ORDER_FILLING_FOK+ " ImmediatOrCancel="+ORDER_FILLING_IOC+ " Return="+ORDER_FILLING_RETURN+ " SYMBOL_FILLING_MODE="+SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE) ); }
на брокере ФЫКСPRO
получается следующая картинка
в спецификации указан IOC
SymbolInfoInteger(Symbol(),SYMBOL_FILLING_MODE) почему то возвращает цифру 2, которая по ORDER_FILLING_RETURN имеет значение 2. А должен возвращать 1
при этом у Вас на сервере Демо
та же ситуация
Поэтому еще 2 года назад я делал выбор заливки - клиентом. прописывал так в настройках:
Всё так и есть, но на клиента выбор вешать не обязательно. Автоопределение элементарно же делается:
CTrade oTrade; switch((int)SymbolInfoInteger(Symbol(), SYMBOL_FILLING_MODE)) { case SYMBOL_FILLING_FOK: oTrade.SetTypeFilling(ORDER_FILLING_FOK); break; case SYMBOL_FILLING_IOC: oTrade.SetTypeFilling(ORDER_FILLING_IOC); break; default: oTrade.SetTypeFilling(ORDER_FILLING_RETURN); }
да ну я выше описал проблему, возвращаемое значение не соответствует спецификации контракта.
Ваш код рабочий? ВЫ проверяли его?
или Вы говорите о том что SYMBOL_FILLING_FOK!=ORDER_FILLING_FOK?
понял спасибо
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Приветствую.
Уважаемая администрация. Нашел баг с SYMBOL_FILLING_MODE
Билд компилятора 1241
пытался сделать автоопределение типа заливки для ордеров:
Т.е. если тип заливки указан неправильно то присваивается значения с спецификации символа.
например на ..ПРО брокере заливка IOC (У Вас в таблице и в реале присваивается значение
2
)
но с типом два - сервер возвращает ошибку:
Поэтому еще 2 года назад я делал выбор заливки - клиентом. прописывал так в настройках:
и выбор через input:
input filling TypeFilling=ORDER_FILLING_FOK;
так вот когда я делаю автоопределение почему не срабатывает и пишет ошибку
а когда я выбираю в настройках сам IOC ему присваивается значение
1
! и все работает.
в таблице же указаны следующие значения:
Fill or Kill
SYMBOL_FILLING_FOK
1
This policy means that a deal can be executed only with the specified volume. If the necessary amount of a financial instrument is currently unavailable in the market, the order will not be executed. The required volume can be filled using several offers available on the market at the moment.
Immediate or Cancel
SYMBOL_FILLING_IOC
2
In this case a trader agrees to execute a deal with the volume maximally available in the market within that indicated in the order. In case the order cannot be filled completely, the available volume of the order will be filled, and the remaining volume will be canceled. The possibility of using IOC orders is determined at the trade server.
Return
No identifier
This policy is used only for market orders (Buy and Sell), limit and stop limit orders and only for the symbols with Market or Exchange execution. In case of partial filling a market or limit order with remaining volume is not canceled but processed further.
Но здесь наверно перепутаны данные!
Решение: