Честно говоря, я был готов искать ответ на свой вопрос где угодно, но только не в полном запрете брокера на автоматическую торговлю путем запрета всех режимов исполнения ордеров. Действительно, приведенный ниже скрипт 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 MODEAlert(_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? Поэтому фиг сними, с этими БКС.
Т.е. или БКС не умеет менять типы принимаемых ордеров, или сознательно не хочет этого делать, блокируя автоматическую торговлю и тестирование на своей пафосной "Станции БКС".
В любом случае это основание не иметь никаких дел с таким брокером.
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 5if 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()
- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_FOK=1
- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_IOC=2
Все-таки, правильно ли я понимаю, что если на демо-счетах у брокера БКС Форекс не разрешен ни один из режимов исполнения ордеров по объему, то это означает полный запрет на автоматическую торговлю на демо-счетах?
Если "да", то почему вместо того, чтобы четко и внятно ответить на этот вопрос, брокер отсылает искать ответ на него на форуме MQL5? Впрочем, это вопрос уже не к уважаемому сообществу...
Честно говоря, я был готов искать ответ на свой вопрос где угодно, но только не в полном запрете брокера на все режимы исполнения ордеров. Действительно, приведенный ниже скрипт CHECK_FIILING_MODE() показывает, что для выбранной валюты в качестве текущего режима исполнения ордеров сервер возвращает <0>, ну и как следствие, далее информирует, что не поддерживается ни один из известных режимов исполнения ордеров:
- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_FOK=1
- не поддерживает режим исполнения ордеров: SYMBOL_FILLING_IOC=2
Все-таки, правильно ли я понимаю, что такое положение дел означает, что брокер БКС Форекс не разрешает автоматическую торговлю на демо-счетах?
Если "да", то почему вместо того, чтобы четко и коротко ответить на этот вопрос, брокер отсылает искать ответ на форум MQL5?
Но это, похоже, уже совсем другая история...
БКС брокер, финансовая компания, они не обязаны знать программирование, они предоставляют финансовые услуги.
Править стандартную библиотеку может только MQ.
БКС брокер, финансовая компания, они не обязаны знать программирование, они предоставляют финансовые услуги.
Править стандартную библиотеку может только MQ.
А зачем поправлять?
Настройки заливки ордеров делает брокер.
А зачем поправлять?
Настройки заливки ордеров делает брокер.
Т.е. или БКС не умеет менять типы принимаемых ордеров, или сознательно не хочет этого делать, блокируя автоматическую торговлю и тестирование на своей пафосной "Станции БКС".
В любом случае это основание не иметь никаких дел с таким брокером.
Да, справедливости ради, надо сказать, что речь идет только о форексном подразделении БКС, у биржевого брокера БКС таких проблем нет.
Столкнулся с похожей ситуацией, только пытаюсь открыть сделку через Python используя код приведенный в справочнике. Но при выполнении скрипта выдает ошибку в терминале [unsupported filling mode], подскажите как решить эту проблему?