MetaTrader 5 Python User Group - como usar o Python no Metatrader - página 86

 

Como é que envio dados do mt5 para um guião de pitão em execução e recebo uma resposta?

Acho que tenho de usar stdin e stdout, e especificar o processo para o passar.

Alguém tem algum código onde este é implementado?

p.s. Isto: https://www.mql5.com/ru/docs/integration/python_metatrader5 leu, e utilizou, mas não é adequado para esta tarefa. Os dados também precisam de ser transferidos do testador de estratégias.

Документация по MQL5: Интеграция / MetaTrader для Python
Документация по MQL5: Интеграция / MetaTrader для Python
  • www.mql5.com
MetaTrader для Python - Интеграция - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Problema com a biblioteca "MetaTrader5 (5.0.35 de 28.07.21). Depois de instalar e tentar importá-la, recebo o seguinte erro

(PressPurtEnv) C:\Users\User>python
Python 3.9.6 (default, Jul 30 2021, 11:42:22) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import MetaTrader5 as mt5
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Users\User\AppData\Local\R-MINI~1\envs\PressPurtEnv\lib\site-packages\MetaTrader5\__init__.py", line 257, in <module>
    from ._core import *
ModuleNotFoundError: No module named 'MetaTrader5._core'
>>> exit()

Voltando às 5.0.33 obras.

(PressPurtEnv) C:\Users\User>python
Python 3.9.6 (default, Jul 30 2021, 11:42:22) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>  import MetaTrader5 as mt5
  File "<stdin>", line 1
    import MetaTrader5 as mt5
IndentationError: unexpected indent
>>> import MetaTrader5 as mt5
>>> mt5.initialize()
True
>>> print(mt5.version())
(500, 3003, '22 Jul 2021')
>>> print(mt5.terminal_info())
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=True, trade_allowed=True, 
tradeapi_disabled=False, email_enabled=False, ftp_enabled=False, notifications_enabled=False, mqid=False, build=3003, 
maxbars=25000, codepage=1251, ping_last=51530, community_balance=1.1, retransmission=0.0, company='MetaQuotes Software Corp.', 
name='MetaTrader 5', language='Russian',path='C:\\Program Files\\MetaTrader 5', 
data_path='C:\\Users\\User\\AppData\\Roaming\\MetaQuotes\\Terminal\\D0E8209F77C8CF37AD8BF550E51FF075', 
commondata_path='C:\\Users\\User\\AppData\\Roaming\\MetaQuotes\\Terminal\\Common')
>>> mt5.shutdown()
True
>>> exit()

Alguém tem este erro confirmado?

Verificado com as versões Python 3.7/3.8/3.9

 
Igor_Gagarin:

Como é que envio dados do mt5 para um guião de pitão em execução e recebo uma resposta?

Acho que tenho de usar stdin e stdout, e especificar o processo para o passar.

Alguém tem algum código onde este é implementado?

p.s. Isto: https://www.mql5.com/ru/docs/integration/python_metatrader5 leu, e utilizou, mas não é adequado para esta tarefa. Os dados também precisam de ser passados pelo testador de estratégias.

Python só vê o terminal nesta implementação. Envia-lhe um pedido e recebe uma resposta. Não vê o programa MKL e não consegue comunicar com ele. Para interagir com o programa MKL, devemos utilizar características adicionais. Não posso dizer nada sobre a interacção com o testador, não o utilizei. Mas é muito provável que isso não seja possível.

Boa sorte

 
não está confirmado para mim.
import os
import MetaTrader5 as mt5
print (mt5.__version__)
print (dir(mt5))
path_module=os.getcwd()
print ("Start path os.getcwd():",path_module)
ddir=path_module.split("\\")
print (ddir)
mt5.initialize()
print(mt5.version())
print(mt5.terminal_info())
#----------------------------
dir = os.path.dirname(__file__)
print ("Path os.path.dirname(__file__):",dir)
abs_path = os.path.join(dir)
print ("abs_path:",abs_path) 
##variable = open(abs_path) 
#print (variable)
#===============
#help("modules")
print ('end')
5.0.35
['ACCOUNT_MARGIN_MARGIN_MODE_EXCHANGE', 'ACCOUNT_MARGIN_MODE_RETAIL_HEDGING', 'ACCOUNT_MARGIN_MODE_RETAIL_NETTING', 'ACCOUNT_STOPOUT_MODE_MONEY', 'ACCOUNT_STOPOUT_MODE_PERCENT', 'ACCOUNT_TRADE_MODE_CONTEST', 'ACCOUNT_TRADE_MODE_MODE_DEMO', 'ACCOUNT_TRADE_MODE_REAL', 'AccountInfo', 'BOOK_TYPE_BUY', 'BOOK_TYPE_BUY_MARKET', 'BOOK_TYPE_SELLL', 'BOOK_TYPE_SELLL_MARKET', 'BookInfo', 'Buy', 'COPY_TICKS_ALL', 'COPY_TICKS_INFO', 'COPY_TICKS_TRADE', 'Fechar', 'DAY_OF_WEEK_FRIDAY', 'DAY_OF_WEEK_MONDAY', 'DIA_DA_SEMANA_SÁBADO', 'DIA_DA_SEMANA_SÁBADO', 'DIA_DA_SEMANA_SÁBADO', 'DIA_DA_SEMANA_SÁBADO', 'DIA_DA_SEMANA_QUARTA-FEIRA', 'DEAL_DIVIDEND', 'DEAL_DIVIDEND_FRANKED', 'DEAL_ENTRY_IN', 'DEAL_ENTRY_INOUT', 'DEAL_ENTRY_OUT', 'DEAL_ENTRY_OUT_BY', 'DEAL_REASON_CLIENT', 'DEAL_REASON_EXPERT', 'DEAL_REASON_MOBILE', 'DEAL_REASON_ROLLOVER', 'DEAL_REASON_SL', 'DEAL_REASON_SREASON_SO', 'DEAL_REASON_SPLIT', 'DEAL_REASON_TP', 'DEAL_REASON_VMARGIN', 'DEAL_REASON_WEB', 'DEAL_TAX', 'DEAL_TYPE_BALANCE', 'DEAL_TYPE_BONUS', 'DEAL_TYPE_BUY', 'DEAL_TYPE_BUY_CANCELED', 'DEAL_TYPE_CHARGE', 'DEAL_TYPE_COMMISSION', 'DEAL_TYPE_COMMISSION_AGENT_DAILY', 'DEAL_TYPE_COMMISSION_AGENT_MONTHLY', 'NEGÓCIO_TIPO_COMISSÃO_DIÁRIA', 'NEGÓCIO_TIPO_COMISSÃO_MENSAL', 'NEGÓCIO_TIPO_CORRECÇÃO', 'NEGÓCIO_TIPO_CRÉDITO', 'NEGÓCIO_TIPO_INTERESSE', 'NEGÓCIO_TIPO_VENDA', 'NEGÓCIO_TIPO_VENDA_CANTADO', 'ORDER_FILLING_FOK', 'ORDER_FILLING_IOC', 'ORDER_FILLING_RETURN', 'ORDER_REASON_CLIENT', 'ORDER_REASON_EXPERT', 'ORDER_REASON_MOBILE', 'ORDER_REASON_SL', 'ORDER_REASON_SO', 'ORDER_REASON_TP', 'ORDER_REASON_WEB', 'ORDER_STATE_CANCELED', 'ORDER_STATE_EXPIRED', 'ORDER_STATE_FILLED', 'ORDER_STATE_PARTIAL', 'ORDER_STATE_PLACED', 'ORDER_STATE_REJECTED', 'ORDER_STATE_REQUEST_ADD', 'ORDER_STATE_REQUEST_CANCEL', 'ORDER_STATE_REQUEST_MODIFY', 'ORDER_STATE_REQUESTSTARTED', 'ORDER_TIME_DAY', 'ORDER_TIME_GTC', 'ORDER_TIME_SPECIFIED', 'ORDER_TIME_SPECIFIED_DAY', 'ORDER_TYPE_BUY_BUY_LIMIT', 'ORDER_TYPE_BUY_LIMIT', 'ORDER_TYPE_BUY_STOP', 'ORDER_TYPE_BUY_STOP_LIMIT', 'ORDER_TYPE_CLOSE_BY', 'ORDER_TYPE_SELLL', 'ORDER_TYPE_SELLL_LIMIT', 'ORDER_TYPE_SELLL_STOP', 'ORDER_TYPE_SELLL_STOP_LIMIT', 'OrderCheckResult', 'OrderSendResult', POSITION_REASON_CLIENT', 'POSITION_REASON_EXPERT', 'POSITION_REASON_MOBILE', 'POSITION_REASON_WEB', 'POSITION_TYPE_BUY', 'POSITION_TYPE_SELL', 'RES_E_AUTH_FAILED', 'RES_E_AUTO_TRADING_DISABLED', 'RES_E_FAIL', 'RES_E_INTERNAL_FAIL', 'RES_E_INTERNAL_FAIL_CONNECT', 'RES_E_INTERNAL_FAIL_INIT', 'RES_E_INTERNAL_FAIL_RECEIVE', RES_E_INVALID_PARAMS', 'RES_E_INVALID_VERSION', 'RES_E_NOT_FOUND', 'RES_E_NO_MEMORY', 'RES_E_UNSUPPORTED', 'RES_S_OK', 'SYMBOL_CALC_MODE_CFD', 'SYMBOL_CALC_MODE_CFDINDEX', 'SYMBOL_CALC_MODE_CFDLEVERAGE', 'SYMBOL_CALC_MODE_EXCH_BONDS', 'SYMBOL_CALC_MODE_EXCH_BONDS_MOEX', 'SYMBOL_CALC_MODE_EXCH_FUTURES', 'SYMBOL_CALC_MODE_EXCH_OPTIONS', 'SYMBOL_CALC_MODE_EXCH_OPTIONS_MARGIN', 'SYMBOL_CALC_MODE_EXCH_STOCKS', 'SYMBOL_CALC_MODE_EXCH_STOCKS_MOEX', 'SYMBOL_CALC_MODE_FOREX', 'SYMBOL_CALC_MODE_FOREX_NO_LEVERAGE', 'SYMBOL_CALC_MODE_FUTURES', 'SYMBOL_CALC_MODE_SERV_COLLATERAL', 'SYMBOL_CHART_MODE_BID', 'SYMBOL_CHART_MODE_LAST', 'SYMBOL_OPTION_MODE_AMERICAN', 'SYMBOL_OPTION_MODE_EUROPEAN', 'SYMBOL_OPTION_RIGHT_CALL', 'SYMBOL_OPTION_RIGHT_PUT', 'SYMBOL_ORDERS_DAILY', SÍMBOLO_ORDENS_DA_ORDEM_DIÁRIAMENTE_NO_STOPS', 'SÍMBOLO_ORDENS_DE_ORDEM_GTC', 'SÍMBOLO_SWAP_MODE_MOEDA_DEPÓSITO', 'SÍMBOLO_SWAP_MODE_MOEDA_MARGIN', 'SÍMBOLO_SWAP_MODE_MOEDA_SÍMBOLO', SÍMBOLO_SWAP_MODE_DISABLED', 'SYMBOL_SWAP_MODE_INTEREST_CURRENT', 'SYMBOL_SWAP_MODE_INTEREST_OPEN', 'SYMBOL_SWAP_MODE_MODE_PONTOS', 'SYMBOL_SWAP_MODE_REOPEN_BID', SÍMBOLO_SWAP_MODE_REOPEN_CURRENT', 'SYMBOL_TRADE_EXECUTION_EXCHANGE', 'SYMBOL_TRADE_EXECUTION_INSTANT', 'SYMBOL_TRADE_EXECUTION_MARKET', 'SYMBOL_TRADE_EXECUTION_REQUEST', SYMBOL_TRADE_MODE_MODE_CLOSEONLY', 'SYMBOL_TRADE_MODE_DISABLED', 'SYMBOL_TRADE_MODE_FULL', 'SYMBOL_TRADE_MODE_LONGONLY', 'SYMBOL_TRADE_MODE_SHORTONLY', 'Sell', 'SymbolInfo', TICK_FLAG_ASK', 'TICK_FLAG_BID', 'TICK_FLAG_BUY', 'TICK_FLAG_LAST', 'TICK_FLAG_SELL', 'TICK_FLAG_VOLUME', 'TIMEFRAME_D1', 'TIMEFRAME_H1', 'TIMEFRAME_H12', 'TIMEFRAME_H2', 'TIMEFRAME_H3', 'TIMEFRAME_H4', 'TIMEFRAME_H6', 'TIMEFRAME_H8', 'TIMEFRAME_H8', 'TIMEFRAME_M1', 'TIMEFRAME_M10', 'TIMEFRAME_M12', 'TIMEFRAME_M15', 'TIMEFRAME_M2', 'TIMEFRAME_M20', 'TIMEFRAME_M3', 'TIMEFRAME_M30', 'TIMEFRAME_M4', 'TIMEFRAME_M5', 'TIMEFRAME_M6', 'TIMEFRAME_MN1', 'TIMEFRAME_W1', 'TRADE_ACTION_CLOSE_BY', TRADE_ACTION_DEAL', 'TRADE_ACTION_MODIFY', 'TRADE_ACTION_PENDING', 'TRADE_ACTION_REMOVE', 'TRADE_ACTION_SLTP', 'TRADE_RETCODE_CANCEL','TRADE_RETCODE_CLIENT_DISABLES_AT', 'TRADE_RETCODE_CLOSE_ONLY', 'TRADE_RETCODE_CLOSE_ORDER_EXIST', 'TRADE_RETCODE_CONNECTION', 'TRADE_RETCODE_DONE', 'TRADE_RETCODE_DONE_PARTIAL', 'TRADE_RETCODE_DONE_ERROR', 'TRADE_RETCODE_FIFO_CLOSE', 'TRADE_RETCODE_FIFO_CLOSE', 'TRADE_RETCODE_INVALID', 'TRADE_RETCODE_INVALID_CLOSE_VOLUME', 'TRADE_RETCODE_INVALID_EXPIRATION', 'TRADE_RETCODE_INVALID_FILL', 'TRADE_RETCODE_INVALID_ORDER', 'TRADE_RETCODE_INVALID_PRICE', 'TRADE_RETCODE_INVALID_STOPS', 'TRADE_RETCODE_INVALID_VOLUME', 'TRADE_RETCODE_LIMIT_ORDERS', 'TRADE_RETCODE_LIMIT_POSITIONS', 'TRADE_RETCODE_LIMIT_VOLUME_LIMIT_VOLUME', 'TRADE_RETCODE_LOCKED', 'TRADE_RETCODE_LONG_ONLY', 'TRADE_RETCODE_MARKET_CLOSED',
'TRADE_RETCODE_NO_CHANGES', 'TRADE_RETCODE_NO_MONEY', 'TRADE_RETCODE_ONLY_REAL', 'TRADE_RETCODE_ORDER_CHANGED', 'TRADE_RETCODE_REJECT_PLACED', 'TRADE_RETCODE_POSITION_CLOSED', 'TRADE_RETCODE_PRICE_CHANGED', 'TRADE_RETCODE_PRICE_OFF', 'TRADE_RETCODE_REJECT_REJECT', 'TRADE_RETCODE_REJECT_CANCEL', 'TRADE_RETCODE_REJECT_REQUOTE', 'TRADE_RETCODE_SERVERVER_DISABLES_AT', 'TRADE_RETCODE_SHORT_ONLY', 'TRADE_RETCODE_TIMEOUT', 'TRADE_RETCODE_TOO_MANY_REQUESTS', 'TRADE_RETCODE_TRADE_DISABLED', 'TerminalInfo', 'Tick', 'TradeDeal', 'TradeOrder', 'TradePosition', 'TradeRequest', '_RawOrder', '__author__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', __nome__', '__package__', '__caminho__', '__espec__', '__versão__', '_core', 'account_info', 'copy_rates_from', 'copy_rates_from_pos', 'copy_rates_range', 'copy_ticks_from', 'copy_ticks_range', 'history_deals_get', 'history_deals_total', 'history_orders_get', 'history_orders_total', 'initialize', 'last_error', 'login', 'market_book_add', 'market_book_get', 'market_book_release', 'order_calc_margin', 'order_calc_profit', 'order_check', 'order_send', 'order_get', 'order_total', posições_get', 'positions_total', 'shutdown', 'symbol_info', 'symbol_info_tick', 'symbol_select', 'symbols_get', 'symbols_total', 'terminal_info', 'version']
Start path os.getcwd(): C:\Users\AlexAppData\Roaming\MetaQuotes\Terminal\2BBBE125AB050CAF856FF83F865B275C2\MQL5\Scripts\Python
['C:', 'Users', 'Alex', 'AppData', 'Roaming', 'MetaQuotes', 'Terminal', '2BBE125AB050CAF856FF83F865B275C2', 'MQL5', 'Scripts', 'Python'].
(500, 3003, '22 Jul 2021')
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=False, trade_allowed=False, tradeapi_disabled=False, email_enabled=False, ftp_enabled=False, notifications_enabled=False, mqid=False, build=3003, maxbars=1000, codepage=1251, ping_last=124758, community_balance=3.69, retransmissão=0,0, empresa='ICM Capital Ltd.', nome='ICM Capital MetaTrader 5', língua='Russo', caminho='C:\\ICM Capital MetaTrader 5', ...)
Path os.path.dirname(__file__): c:\Users\AlexAppData\Roaming\MetaQuotes\Terminal\2BBBE125AB050CAF856FF83F865B275C2\MQL5\Scripts\Python
abs_path: c:\Users\AlexAppData\Roaming\MetaQuotes\Terminal\2BBBE125AB050CAF856FF83F865B275C2\MQL5\Scripts\Python
fim


 
Vladimir Perervenko:

Não vê o programa MCL e não pode comunicar com ele. Para comunicar com o programa MCL, é necessário utilizar características adicionais.

Umcanal nomeado por mim está bem, mas algumas pessoas fazem-no numa tomada. É uma questão de hábito...

 
Vladimir Perervenko:

Problema com a biblioteca "MetaTrader5 (5.0.35 de 28.07.21). Depois de instalar e tentar importá-la, recebo o seguinte erro

Voltando às 5.0.33 obras.

Alguém tem este erro confirmado?

Verificado com as versões Python 3.7/3.8/3.9

Actualizado para 5.0.35.

Sem erros.

Connected to pydev debugger (build 191.6605.12)
MetaTrader5 package author:  MetaQuotes Software Corp.
MetaTrader5 package version:  5.0.35
Backend TkAgg is interactive backend. Turning interactive mode on.
TerminalInfo(community_account=True, community_connection=True, connected=True, dlls_allowed=False, trade_allowed=False, trad...
(500, 3010, '02 Aug 2021')
 
Rashid Umarov:

Actualizado para 5.0.35.

Sem erros.

Última versão beta do terminal 3007 (pelo menos para mim). Não é a questão, não é importante para a pergunta.

A tentar actualizar.

(r-reticulate) C:\Users\User>pip install --upgrade MetaTrader5
Requirement already satisfied: MetaTrader5 in c:\users\user\appdata\local\r-miniconda\envs\r-reticulate\lib\site-packages (5.0.34)
Collecting MetaTrader5
  Using cached MetaTrader5-5.0.35-cp38-cp38-win_amd64.whl (124 kB)
Requirement already satisfied: numpy>=1.7 in c:\users\user\appdata\local\r-miniconda\envs\r-reticulate\lib\site-packages 
(from MetaTrader5) (1.19.5)
ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 
'c:\\users\\user\\appdata\\local\\r-miniconda\\envs\\r-reticulate\\lib\\site-packages\\numpy-1.19.5.dist-info\\METADATA'

Pode dizer-me o que isto significa?

 
Vladimir Perervenko:

O último beta do terminal 3007 (pelo menos para mim). Não é a questão, é irrelevante para a pergunta.

A tentar actualizar

Pode dizer-me o que isto significa?

De acordo com o seu registo - não existe tal ficheiro ou directório

ERROR: Could not install packages due to an OSError: [Errno 2] No such file or directory: 
'c:\\users\\user\\appdata\\local\\r-miniconda\\envs\\r-reticulate\\lib\\site-packages\\numpy-1.19.5.dist-info\\METADATA'
 
Rashid Umarov:

De acordo com o seu registo - não existe tal ficheiro ou directório

ou seja, sem numpy===1.19.5?

 
Vladimir Perervenko:

ou seja, sem numpy===1.9.5?

Não parece haver uma pasta

"c:utilizadores-appdata de utilizador localr-miniconda" -envsr-reticulate "site-packages" -numpy-1.19.5.dis-info