- Установка Python и пакета MetaTrader5
- Обзор функций пакета MetaTrader5 для Python
- Подключение скрипта Python к терминалу и счету
- Проверка ошибок: last_error
- Получение информации о торговом счете
- Получение информации о терминале
- Получение информации о финансовых инструментах
- Подписка на стакан цен
- Чтение котировок
- Чтение истории тиков
- Вычисление маржинальных требований и оценка прибыли
- Проверка и отправка торгового приказа
- Получение количества и списка действующих ордеров
- Получение количества и списка открытых позиций
- Чтение истории ордеров и сделок
Проверка и отправка торгового приказа
При необходимости вы можете осуществлять торговые операции непосредственно из скрипта Python. Пара функций — order_check и order_send — позволяет предварительно проверить и затем выполнить торговую операцию.
У обеих функций единственным параметром является структура запроса TradeRequest (на Python её можно проинициализировать как словарь, см. пример). Поля структуры полностью совпадают с MqlTradeRequest.
OrderCheckResult order_check(request)
Функция order_check проверяет правильность заполнения полей торгового запроса и достаточность средств для совершения требуемой торговой операции.
Результат функции возвращается в виде структуры OrderCheckResult. Она повторяет структуру MqlTradeCheckResult, но дополнительно содержит поле request с копией исходного запроса.
Функция order_check является аналогом OrderCheck.
Пример (MQL5/Scripts/MQL5Book/python/ordercheck.py):
import MetaTrader5 as mt5
|
Результат:
Account сurrency: USD OrderCheckResult(retcode=0, balance=10000.17, equity=10000.17, profit=0.0, margin=1000.0,... retcode=0 balance=10000.17 equity=10000.17 profit=0.0 margin=1000.0 margin_free=9000.17 margin_level=1000.017 comment=Done request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=1.0, price=144.128,... traderequest: action=1 traderequest: magic=234000 traderequest: order=0 traderequest: symbol=USDJPY traderequest: volume=1.0 traderequest: price=144.128 traderequest: stoplimit=0.0 traderequest: sl=144.028 traderequest: tp=144.228 traderequest: deviation=10 traderequest: type=0 traderequest: type_filling=2 traderequest: type_time=0 traderequest: expiration=0 traderequest: comment=python script traderequest: position=0 traderequest: position_by=0 |
OrderSendResult order_send(request)
Функция order_send отправляет из терминала на торговый сервер запрос на совершение торговой операции.
Результат функции возвращается в виде структуры OrderSendResult. Она повторяет структуру MqlTradeResult, но дополнительно содержит поле request с копией исходного запроса.
Функция является аналогом OrderSend.
Пример (MQL5/Scripts/MQL5Book/python/ordersend.py):
import time
|
Результат:
1. order_send(): by USDJPY 0.1 lots at 144.132 2. order_send done, OrderSendResult(retcode=10009, deal=1445796125, order=1468026008, volume=0.1, price=144.132,... opened position with POSITION_TICKET=1468026008 sleep 2 seconds before closing position #1468026008 3. close position #1468026008: sell USDJPY 0.1 lots at 144.124 4. position #1468026008 closed, OrderSendResult(retcode=10009, deal=1445796155, order=1468026041, volume=0.1, price=144.124,... retcode=10009 deal=1445796155 order=1468026041 volume=0.1 price=144.124 bid=144.124 ask=144.132 comment=Request executed request_id=2 retcode_external=0 request=TradeRequest(action=1, magic=234000, order=0, symbol='USDJPY', volume=0.1, price=144.124, stoplimit=0.0,... traderequest: action=1 traderequest: magic=234000 traderequest: order=0 traderequest: symbol=USDJPY traderequest: volume=0.1 traderequest: price=144.124 traderequest: stoplimit=0.0 traderequest: sl=0.0 traderequest: tp=0.0 traderequest: deviation=20 traderequest: type=1 traderequest: type_filling=2 traderequest: type_time=0 traderequest: expiration=0 traderequest: comment=python script close traderequest: position=1468026008 traderequest: position_by=0 |