Ошибка [unsupported filling mode] у БКС. - страница 4

 
Михаил: Два раза написано: https://www.mql5.com/ru/forum/63657/page3#comment_1875787 
Честно говоря, я был готов искать ответ на свой вопрос где угодно, но только не в полном запрете брокера на автоматическую торговлю путем запрета всех режимов исполнения ордеров. Действительно, приведенный ниже скрипт CHECK_FIILING_MODE() показывает, что для выбранной валюты в качестве текущего режима исполнения ордеров сервер брокера возвращает <0>, ну и как следствие, далее информирует, что сервер не поддерживает ни один из известных режимов исполнения ордеров по объему:

- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_FOK=1
- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_IOC=2


//+------------------------------------------------------------------+
//| Проверить политику (режим) исполнения ордеров по объему
//+------------------------------------------------------------------+
bool CHECK_FILLING_MODE()
{
   bool ok=true;

   int FILLING_MODE=(int)SymbolInfoInteger(_Symbol, SYMBOL_FILLING_MODE); // FILLING MODE

   Alert(_Symbol, " режим исполнения ордеров: <", FILLING_MODE, ">");

   if ((SYMBOL_FILLING_IOC & FILLING_MODE)!=SYMBOL_FILLING_IOC) { // Все или частично
   // В случае невозможности полного исполнения ордер будет исполнен на доступный объем, а неисполненный объем ордера будет отменен
      Alert(_Symbol, " не поддерживает режим исполнения ордеров: SYMBOL_FILLING_IOC=", SYMBOL_FILLING_IOC); ok=false;
   }
   if ((SYMBOL_FILLING_FOK & FILLING_MODE)!=SYMBOL_FILLING_FOK) { // Все или ничего
   // Данная политика исполнения означает, что ордер может быть исполнен исключительно в указанном объеме
       Alert(_Symbol, " не поддерживает режим исполнения ордеров: SYMBOL_FILLING_FOK=", SYMBOL_FILLING_FOK); ok=false;
   }
   return(ok);
}

Все-таки, правильно ли я понимаю, что если на демо-счетах у брокера БКС Форекс не разрешен ни один из режимов исполнения ордеров по объему, то это означает полный запрет на автоматическую торговлю на демо-счетах?
Если "да", то почему вместо того, чтобы четко и внятно ответить на этот вопрос, брокер отсылает искать ответ на него на форуме MQL5? Впрочем, это вопрос уже не к уважаемому сообществу...
 
Eugene Myzrov:
Честно говоря, я был готов искать ответ на свой вопрос где угодно, но только не в полном запрете брокера на все режимы исполнения ордеров. Действительно, приведенный ниже скрипт CHECK_FIILING_MODE() показывает, что для выбранной валюты в качестве текущего режима исполнения ордеров сервер возвращает <0>, ну и как следствие, далее информирует, что не поддерживается ни один из известных режимов исполнения ордеров:

- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_FOK=1
- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_IOC=2



Все-таки, правильно ли я понимаю, что такое положение дел означает, что брокер БКС Форекс не разрешает автоматическую торговлю на демо-счетах?
Если "да", то почему вместо того, чтобы четко и коротко ответить на этот вопрос, брокер отсылает искать ответ на форум MQL5?
Но это, похоже, уже совсем другая история...
Это просто низкая квалификация. У меня совы посылают ордера через стандартные библиотеки терминала. БКС вполне мог бы их отредактировать так, что я бы ничего и не заметил. Но мне они ответили, что "не поддерживают среду mql и не консультирует по ней". Вы можете сказать - как это можно предлагать торговать в терминале на mql  и не поддерживать mql? Поэтому фиг сними, с этими БКС.
 

БКС брокер, финансовая компания, они не обязаны знать программирование, они предоставляют финансовые услуги.

Править стандартную библиотеку может только MQ. 

 
Alexander Bereznyak:

БКС брокер, финансовая компания, они не обязаны знать программирование, они предоставляют финансовые услуги.

Править стандартную библиотеку может только MQ. 

А зачем поправлять?

Настройки заливки ордеров делает брокер. 

 
Михаил:

А зачем поправлять?

Настройки заливки ордеров делает брокер. 

Т.е. или БКС не умеет менять типы принимаемых ордеров, или сознательно не хочет этого делать, блокируя автоматическую торговлю и тестирование на своей пафосной  "Станции БКС".

В любом случае это основание не иметь никаких дел с таким брокером.

 
Alexander Bereznyak: БКС брокер, финансовая компания, они не обязаны знать программирование, они предоставляют финансовые услуги. Править стандартную библиотеку может только MQ. 
Только вот странно получается, где у себя на сервере поставить галочки, запрещающие ту или иную политику исполнения ордеров по объему, это они умеют, знают где. А вот ответить на вопрос, почему не работает ни одна политика исполнения при отправке торгового запроса, это сразу не к нам, а к специалистам на форум MQL5. Казалось бы, чего проще, ответить на прямой вопрос, нет, видите ли, у них узкая специализация...

Да, справедливости ради, надо сказать, что речь идет только о форексном подразделении БКС, у биржевого брокера БКС таких проблем нет.
 

Столкнулся с похожей ситуацией, только пытаюсь открыть сделку через Python используя код приведенный в справочнике. Но при выполнении скрипта выдает ошибку в терминале [unsupported filling mode], подскажите как решить эту проблему?

import MetaTrader5 as mt5

# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ", mt5.__author__)
print("MetaTrader5 package version: ", mt5.__version__)

# установим подключение к терминалу MetaTrader 5
if not mt5.initialize():
    print("initialize() failed, error code =", mt5.last_error())
    quit()

# подготовим структуру запроса для покупки
symbol = "XAUUSD"
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
    print(symbol, "not found, can not call order_check()")
    mt5.shutdown()
    quit()

# если символ недоступен в MarketWatch, добавим его
if not symbol_info.visible:
    print(symbol, "is not visible, trying to switch on")
    if not mt5.symbol_select(symbol, True):
        print("symbol_select({}}) failed, exit", symbol)
        mt5.shutdown()
        quit()

lot = 0.01
point = mt5.symbol_info(symbol).point
price = mt5.symbol_info_tick(symbol).ask
deviation = 20
request = {
    "action": mt5.TRADE_ACTION_DEAL,
    "symbol": symbol,
    "volume": lot,
    "type": mt5.ORDER_TYPE_BUY,
    "price": price,
    "sl": price - 100 * point,
    "tp": price + 100 * point,
    "deviation": deviation,
    "magic": 234000,
    "comment": "python script open",
    "type_time": mt5.ORDER_TIME_GTC,
    "type_filling": mt5.ORDER_FILLING_RETURN,
}

# отправим торговый запрос
result = mt5.order_send(request)
# проверим результат выполнения
print("1. order_send(): by {} {} lots at {} with deviation={} points".format(symbol, lot, price, deviation));
if result.retcode != mt5.TRADE_RETCODE_DONE:
    print("2. order_send failed, retcode={}".format(result.retcode))
    # запросим результат в виде словаря и выведем поэлементно
    result_dict = result._asdict()
    for field in result_dict.keys():
        print("   {}={}".format(field, result_dict[field]))
        # если это структура торгового запроса, то выведем её тоже поэлементно
        if field == "request":
            traderequest_dict = result_dict[field]._asdict()
            for tradereq_filed in traderequest_dict:
                print("       traderequest: {}={}".format(tradereq_filed, traderequest_dict[tradereq_filed]))
    print("shutdown() and quit")
    mt5.shutdown()
    quit()