MT5 и Python. Работа с акциями.

 
Всем доброго времени суток! Объясните ситуацию:
в Python прописываю OrderSend( request ), в  request указываю все необходимые данные. Далее делаю заявку в терминал через библиотеку MetaTrader5. Иииии... ничего не происходит.
Конкретика: 
Работаю с терминалом и брокером Финам. В работе используется Python3.10 и модуль MetaTrader5. Все get_ы нормально прилетают. По акциям запросы отрабатывают, присылая данные. Но вот ордер открыть на покупку не получается. Что не так могу делать?
symbol = 'SGZH'
symbol_info = mt5.symbol_info(symbol)
if symbol_info is None:
    print(symbol, "not found, can not call order_check()")
    mt5.shutdown()
    quit()
print(symbol_info)

# если символ недоступен в 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 = 1
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)
По итогу:
Терминал МТ5 молчит. Акция не покупается, программа ошибок не выдает. В Print (result) >>> None

 
Rad89:
Всем доброго времени суток! Объясните ситуацию:
в Python прописываю OrderSend( request ), в  request указываю все необходимые данные. Далее делаю заявку в терминал через библиотеку MetaTrader5. Иииии... ничего не происходит.
Конкретика: 
Работаю с терминалом и брокером Финам. В работе используется Python3.10 и модуль MetaTrader5. Все get_ы нормально прилетают. По акциям запросы отрабатывают, присылая данные. Но вот ордер открыть на покупку не получается. Что не так могу делать?
По итогу:
Терминал МТ5 молчит. Акция не покупается, программа ошибок не выдает. В Print (result) >>> None

Возможно, допустимы не все ORDER_TYPE_FILLING и/или ORDER_TYPE_TIME, надо смотреть в спецификации символа.

 
JRandomTrader #:

Возможно, допустимы не все ORDER_TYPE_FILLING и/или ORDER_TYPE_TIME, надо смотреть в спецификации символа.

где мне найти расшифровку спецификации? Как понять из этого, что я не то указал в реквесте?
>>> SymbolInfo(custom=False, chart_mode=1, select=True, visible=True, session_deals=0, session_buy_orders=0, session_sell_orders=0, volume=2, volumehigh=13210, volumelow=1, time=1695762290, digits=3, spread=1, spread_float=True, ticks_bookdepth=32, trade_calc_mode=32, trade_mode=4, start_time=0, expiration_time=0, trade_stops_level=0, trade_freeze_level=0, trade_exemode=3, swap_mode=0, swap_rollover3days=3, margin_hedged_use_leg=False, expiration_mode=15, filling_mode=3, order_mode=63, order_gtc_mode=0, option_mode=0, option_right=0, bid=5.187, bidhigh=5.196, bidlow=4.954, ask=5.188, askhigh=5.198, asklow=5.023, last=5.19, lasthigh=5.198, lastlow=5.032, volume_real=2.0, volumehigh_real=13210.0, volumelow_real=1.0, option_strike=0.0, point=0.001, trade_tick_value=0.1, trade_tick_value_profit=0.1, trade_tick_value_loss=0.1, trade_tick_size=0.001, trade_contract_size=100.0, trade_accrued_interest=0.0, trade_face_value=0.0, trade_liquidity_rate=1.0, volume_min=1.0, volume_max=100000000.0, volume_step=1.0, volume_limit=0.0, swap_long=0.0, swap_short=0.0, margin_initial=0.0, margin_maintenance=0.0, session_volume=0.0, session_turnover=0.0, session_interest=0.0, session_buy_orders_volume=0.0, session_sell_orders_volume=0.0, session_open=5.1, session_close=5.09, session_aw=0.0, session_price_settlement=0.0, session_price_limit_min=0.0, session_price_limit_max=0.0, margin_hedged=0.0, price_change=1.9646, price_volatility=0.0, price_theoretical=0.0, price_greeks_delta=0.0, price_greeks_theta=0.0, price_greeks_gamma=0.0, price_greeks_vega=0.0, price_greeks_rho=0.0, price_greeks_omega=0.0, price_sensitivity=0.0, basis='', category='', currency_base='RUR', currency_profit='RUR', currency_margin='RUR', bank='', description='Сегежа ао', exchange='', formula='', isin='moex.stock', name='SGZH', page='', path='MOEX\\SGZH')

 
Rad89 #:

где мне найти расшифровку спецификации? Как понять из этого, что я не то указал в реквесте?
>>> SymbolInfo(custom=False, chart_mode=1, select=True, visible=True, session_deals=0, session_buy_orders=0, session_sell_orders=0, volume=2, volumehigh=13210, volumelow=1, time=1695762290, digits=3, spread=1, spread_float=True, ticks_bookdepth=32, trade_calc_mode=32, trade_mode=4, start_time=0, expiration_time=0, trade_stops_level=0, trade_freeze_level=0, trade_exemode=3, swap_mode=0, swap_rollover3days=3, margin_hedged_use_leg=False, expiration_mode=15, filling_mode=3, order_mode=63, order_gtc_mode=0, option_mode=0, option_right=0, bid=5.187, bidhigh=5.196, bidlow=4.954, ask=5.188, askhigh=5.198, asklow=5.023, last=5.19, lasthigh=5.198, lastlow=5.032, volume_real=2.0, volumehigh_real=13210.0, volumelow_real=1.0, option_strike=0.0, point=0.001, trade_tick_value=0.1, trade_tick_value_profit=0.1, trade_tick_value_loss=0.1, trade_tick_size=0.001, trade_contract_size=100.0, trade_accrued_interest=0.0, trade_face_value=0.0, trade_liquidity_rate=1.0, volume_min=1.0, volume_max=100000000.0, volume_step=1.0, volume_limit=0.0, swap_long=0.0, swap_short=0.0, margin_initial=0.0, margin_maintenance=0.0, session_volume=0.0, session_turnover=0.0, session_interest=0.0, session_buy_orders_volume=0.0, session_sell_orders_volume=0.0, session_open=5.1, session_close=5.09, session_aw=0.0, session_price_settlement=0.0, session_price_limit_min=0.0, session_price_limit_max=0.0, margin_hedged=0.0, price_change=1.9646, price_volatility=0.0, price_theoretical=0.0, price_greeks_delta=0.0, price_greeks_theta=0.0, price_greeks_gamma=0.0, price_greeks_vega=0.0, price_greeks_rho=0.0, price_greeks_omega=0.0, price_sensitivity=0.0, basis='', category='', currency_base='RUR', currency_profit='RUR', currency_margin='RUR', bank='', description='Сегежа ао', exchange='', formula='', isin='moex.stock', name='SGZH', page='', path='MOEX\\SGZH')

В MT5 посмотреть спецификацию.

Похоже, ORDER_TYPE_TIME доступны все, а вот ORDER_TYPE_FILLING - только какие-то 2 из 4, предполагаю - ORDER_FILLING_FOK и ORDER_FILLING_IOC.

 
JRandomTrader #:

В MT5 посмотреть спецификацию.

Похоже, ORDER_TYPE_TIME доступны все, а вот ORDER_TYPE_FILLING - только какие-то 2 из 4, предполагаю - ORDER_FILLING_FOK и ORDER_FILLING_IOC.

ORDER_FILLING_IOC пробовал. Хрен там ночевал. Нет реакции. FOK тоже не дал результата. Я уже грешу: может какие блокировки манипуляций стоят на счете у брокера?.. в ручную открываю позицию, делаю positions_get(symbol) -> все прилетает. Ну т.е. с терминалом-то связь есть. Делал запрос состояния подключения и инфу по логину - все прилетает. Значит PyCharm и терминал дружат. Логинится. Но почему я не могу отправить заявку на покупку из PyCharm - ????? Задал вопрос Финаму - пока молчат. Но это странно: где искал - я ни где не нашел о том, что у меня стоит блокировка на покупки и продажи.

 
Rad89 #:

ORDER_FILLING_IOC пробовал. Хрен там ночевал. Нет реакции. FOK тоже не дал результата. Я уже грешу: может какие блокировки манипуляций стоят на счете у брокера?.. в ручную открываю позицию, делаю positions_get(symbol) -> все прилетает. Ну т.е. с терминалом-то связь есть. Делал запрос состояния подключения и инфу по логину - все прилетает. Значит PyCharm и терминал дружат. Логинится. Но почему я не могу отправить заявку на покупку из PyCharm - ????? Задал вопрос Финаму - пока молчат. Но это странно: где искал - я ни где не нашел о том, что у меня стоит блокировка на покупки и продажи.

Может, таки работать из MQL5, не плодя лишних сущностей?

 
Лень сильно в код вникать, но возможно проблема в том, что нет структуры резулт для функции ордерСенд.
 
Принтуйте каждое действие и сразу найдёте.
 
JRandomTrader #:

Может, таки работать из MQL5, не плодя лишних сущностей?

Я, помимо запросов, подключаю всякие таблицы из вне, могу вести журналы, на python у меня подключен телеграм бот, который мне шлет смски об изменениях в котировках. Так же разом я могу обрабатывать ВСЕ акции, проходя по списку. А в МТ5 я не вникал. Вроде как МТ эдитор позволяет использовать скрипт py, но можно ли будет подключить сторонние модули для телеги, для работы с базами, с таблицами?

 
G1G2G3 #:
Принтуйте каждое действие и сразу найдёте.

Принтую. Все пучком идет. Но как только, после создания словаря request = {} со всеми параметрами, отправляю result = mt5.Order_Send(request) и пытаюсь принтануть (result) получаю None. Order_Check() тоже в принте выдает None. Запрос как будто тупо не улетает. Я уже и таймер на задержку между методом и принтом ставил, вдруг серваку надо время на подумать - тишина.

 
Rad89 #:

Я, помимо запросов, подключаю всякие таблицы из вне, могу вести журналы, на python у меня подключен телеграм бот, который мне шлет смски об изменениях в котировках. Так же разом я могу обрабатывать ВСЕ акции, проходя по списку. А в МТ5 я не вникал. Вроде как МТ эдитор позволяет использовать скрипт py, но можно ли будет подключить сторонние модули для телеги, для работы с базами, с таблицами?

Едав ли тут много народу работает с питоном. Проще из MQL5 отправить OrderSend и смотреть, что не так. https://www.mql5.com/ru/docs/trading/ordersend

Причина обращения: