MetaTrader 5 Python 사용자 그룹 - Metatrader에서 Python을 사용하는 방법 - 페이지 86

 

mt5에서 실행 중인 Python 스크립트로 데이터를 전송하고 응답을 받는 방법은 무엇입니까?

stdin과 stdout을 사용하고 파이프할 프로세스를 지정해야 한다고 생각합니다.

누구든지 이것이 구현되는 코드를 가지고 있습니까?

추신: https://www.mql5.com/en/docs/integration/python_metatrader5 읽고 사용했지만 이 작업에는 적합하지 않습니다. 데이터는 또한 전략 테스터로부터 전송되어야 합니다.

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

"MetaTrader5" 라이브러리에 문제가 있습니다(07/28/21부터 5.0.35). 설치하고 가져오려고 하면 다음 오류가 발생합니다.

(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()

버전 5.0.33으로 롤백 작동

(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()

누구든지이 오류를 확인 했습니까?

Python 버전 3.7/3.8/3.9에서 확인됨

 
Igor_Gagarin :

mt5에서 실행 중인 Python 스크립트로 데이터를 전송하고 응답을 받는 방법은 무엇입니까?

stdin과 stdout을 사용하고 파이프할 프로세스를 지정해야 한다고 생각합니다.

누구든지 이것이 구현되는 코드를 가지고 있습니까?

추신: https://www.mql5.com/en/docs/integration/python_metatrader5 읽고 사용했지만 이 작업에는 적합하지 않습니다. 데이터는 또한 전략 테스터로부터 전송되어야 합니다.

이 구현의 Python은 터미널만 봅니다. 그에게 요청을 보내고 응답을 받습니다. 그는 MCL 프로그램을 볼 수 없으며 통신할 수 없습니다. MCL 프로그램과 상호 작용하려면 추가 기능을 사용해야 합니다. 테스터와의 상호 작용에 대해서는 말하지 않겠습니다. 사용하지 않았습니다. 그러나 높은 확률로 이것은 불가능합니다.

행운을 빕니다

 
나에 의해 확인되지 않습니다.
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_MODE_EXCHANGE', 'ACCOUNT_MARGIN_MODE_RETAIL_NETTING', 'ACCOUNT_STOPOUT_MODE_MONEY', 'ACCOUNT_STOPOUT_MODE_PERCENT', 'ACCOUNT_TRADE_MODE_CONTEST', 'ACCOUNT_TRADE_MODE_DEMO', 'ACCOUNT_TRADE_MODE_REAL를'ACCOUNT_MARGIN_MODE_RETAIL_HEDGING ','AccountInfo의 ','BOOK_TYPE_BUY ','BOOK_TYPE_BUY_MARKET ','BOOK_TYPE_SELL ',' book_type_sell_market ','bookinfo ','구매 ','copy_ticks_all ','copy_ticks_info ','copy ','day_of_week_friday ','day_of_week_monday ','day_of_week_saturday ','day_of_week_sunday ','day_of_week_thurdday ','day_of_week_tuesday ' , 'day_of_week_wednesday', 'deal_divivenend', 'deal_entry_in', 'deal_entry_inout', 'deal_entry_out_by', 'deal_reason_client', 'deal_reason_expert', 'deal_reason_expert', 'deal_reason_rollover', 'deal_reason_sl' DEAL_REASON_SO', 'DEAL_REASON_SPLIT', 'DEAL_REASON_TP', 'DEAL_REASON_VMARGIN', 'DEAL_REASON_WEB', 'DEAL_TAX', 'DEAL_TYPE_BALANCE', 'DEAL_TYPE_Y'BONUS', _TYPE_BUY_CANCELED ','DEAL_TYPE_CHARGE ','DEAL_TYPE_COMMISSION ','DEAL_TYPE_COMMISSION_AGENT_DAILY ','DEAL_TYPE_COMMISSION_AGENT_MONTHLY ','DEAL_TYPE_COMMISSION_DAILY ','DEAL_TYPE_COMMISSION_MONTHLY ','DEAL_TYPE_CORRECTION ','DEAL_TYPE_CREDIT ','DEAL_TYPE_INTEREST ','DEAL_TYPE_SELL ','DEAL_TYPE_SELL_CANCELED ','ORDER_FILLING_FOK ' 'order_filling_ioc', 'order_reason_client', 'order_reason_expert', 'order_reason_mobile', 'order_reason_sl', 'order_reason_so', 'order_reason_web', 'order_state_web', '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_STARTED ','ORDER_TIME_DAY ','ORDER_TIME_GTC ','ORDER_TIME_SPECIFIED ','ORDER_TIME_SPECIFIED_DAY ','ORDER_TYPE_BUY ','ORDER_TYPE_BUY_LIMIT ' , 'ORDER_TYPE_BUY_STOP', 'ORDER_TYPE_BUY_STOP_LIMIT', 'ORDER_TYPE_CLOSE_BY', 'ORDER_TYPE_SELL', 'ORD ER_TYPE_SELL_LIMIT ','ORDER_TYPE_SELL_STOP ','ORDER_TYPE_SELL_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_INTERNAL_FAIL_SEND를', 'RES_E_INTERNAL_FAIL_TIMEOUT', '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_LEVE RAGE ','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 ','SYMBOL_ORDERS_DAILY_NO_STOPS ','SYMBOL_ORDERS_GTC ','SYMBOL_SWAP_MODE_CURRENCY_DEPOSIT ' 'SYMBOL_SWAP_MODE_CURRENCY_MARGIN', 'SYMBOL_SWAP_MODE_CURRENCY_SYMBOL', 'SYMBOL_SWAP_MODE_DISABLED', 'SYMBOL_SWAP_MODE_INTEREST_CURRENT', 'SYMBOL_SWAP_MODE_INTEREST_OPEN', 'SYMBOL_SWAP_MODE_POINTS', 'SYMBOL_SWAP_MODE_REOPEN_BID', 'SYMBOL_SWAP_MODE_REOPEN_CURRENT', 'SYMBOL_TRADE_EXECUTION_EXCHANGE', 'SYMBOL_TRADE_EXECUTION_INSTANT', 'SYMBOL_TRADE_EXECUTION_MARKET', 'SYMBOL_TRADE_EXECUTION_REQUEST', ' symbol_trade_mode_closeonly ','symbol_trade_mode_disabled ','symbol_trade_mode_fullly ','symbol_trade_mode_shortonly ','판매 ','symbolinfo ','sellag_ask ','tick_flag_bid ','tick_flag_last ','tick_fl AG_SELL', 'TICK_FLAG_VOLUME', 'TIMEFRAME_D1', 'TIMEFRAME_H1', 'TIMEFRAME_H12', 'TIMEFRAME_H2', 'TIMEFRAME_H1', 'EMFRAME_H3', 'TIMEFRAME_H4'''TIMEFRAME_H4', 'TIMEFRAME_8'''TIMEFRAME'_H6' , '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 '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_ERROR', 'TRADE_RETCODE_FIFO_CLOSE', ' TRADE_RETCODE_FROZEN', 'TRADE_RETCODE_INVALID', 'TRADE_RETCODE_INVALID_CLOSE_VOLUME', 'TRADE_RETCODE_INVALID_EXPIRATION' LID_STOPS' 'TRADE_RETCODE_INVALID_VOLUME' 'TRADE_RETCODE_LIMIT_ORDERS' 'TRADE_RETCODE_LIMIT_POSITIONS' 'TRADE_RETCODE_LIMIT_VOLUME' 'TRADE_RETCODE_LOCKED' 'TRADE_RETCODE_LONG_MA'
'TRADE_RETCODE_NO_CHANGES', 'TRADE_RETCODE_NO_MONEY', 'TRADE_RETCODE_ONLY_REAL', 'TRADE_RETCODE_ORDER_CHANGED', 'TRADE_RETCODE_PLACED', 'TRADE_RETCODE_POSITION_CLOSED', 'TRADE_RETCODE_PRICE_CHANGED', 'TRADE_RETCODE_PRICE_OFF', 'TRADE_RETCODE_REJECT를', 'TRADE_RETCODE_REJECT_CANCEL', 'TRADE_RETCODE_REQUOTE', 'TRADE_RETCODE_SERVER_DISABLES_AT', 'TRADE_RETCODE_SHORT_ONLY ', 'TRADE_RETCODE_TIMEOUT', 'TRADE_RETCODE_TOO_MANY_REQUESTS', 'TRADE_RETCODE_TRADE_DISABLED', 'TerminalInfo', 'Tick', 'TradeDeal', 'TradeOrder', 'TradePosition', __'builtins', 'TradePosition', __'builtins', __'Tradeins' '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', '_core', 'account_info', 'copy_rates_from', 'copy_rates_from' ', 'copy_rates_range', 'copy_ticks_from', 'copy_ticks_range', 'history_deals_get', 'history_deals_total', 'history_orders_get', 'history_orders_get', 'history_orders_total', 'initialize', _market_error', '_book'_add '중 arket_book_release', 'order_calc_margin', 'order_calc_profit', 'order_check', 'order_send', 'orders_get', 'orders_total', 'positions_get', 'positions_total', 'shutdown', 'symbol_info', 'symbol_symbol', '선택' , 'symbols_get', 'symbols_total', 'terminal_info', '버전']
시작 경로 os.getcwd(): C:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\2BBE125AB050CAF856FF83F865B275C2\MQL5\Scripts\Python
['C:', '사용자', 'Alex', 'AppData', 'Roaming', 'MetaQuotes', 'Terminal', '2BBE125AB050CAF856FF83F865B275C2', 'MQL5', 'Scriptthon',']'Py
(500, 3003, '2021년 7월 22일')
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 codepage=1251, ping_last=124758, community_balance=3.69, retransmission=0.0, company='ICM Capital Ltd.', 이름='ICM Capital MetaTrader 5', 언어='러시아어', 경로='C:\\Program Files\ \ICM 캐피탈 메타 트레이더 5', ...)
경로 os.path.dirname(__file__): c:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\2BBE125AB050CAF856FF83F865B275C2\MQL5\Scripts\Python
abs_path: c:\Users\Alex\AppData\Roaming\MetaQuotes\Terminal\2BBE125AB050CAF856FF83F865B275C2\MQL5\Scripts\Python


 
Vladimir Perervenko :

그는 MCL 프로그램을 볼 수 없으며 통신할 수 없습니다. MCL 프로그램과 상호 작용하려면 추가 기능을 사용해야 합니다.

명명된 파이프 는 나에게 있어 단지 일이지만 누군가 소켓에서 수행합니다. 습관의 문제...

 
Vladimir Perervenko :

"MetaTrader5" 라이브러리에 문제가 있습니다(07/28/21부터 5.0.35). 설치하고 가져오려고 하면 다음 오류가 발생합니다.

버전 5.0.33으로 롤백 작동

누구든지이 오류를 확인 했습니까?

Python 버전 3.7/3.8/3.9에서 확인됨

5.0.35로 업데이트되었습니다.

오류 없음

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 :

5.0.35로 업데이트되었습니다.

오류 없음

터미널의 최신 베타는 3007입니다(적어도 저에게는). 요점이 아니라 질문에 중요하지 않습니다.

업데이트 시도 중

(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'

이게 무슨 뜻인지 알려주실 수 있나요?

 
Vladimir Perervenko :

터미널의 최신 베타는 3007입니다(적어도 저에게는). 요점이 아니라 질문에 중요하지 않습니다.

업데이트 시도 중

이게 무슨 뜻인지 알려주실 수 있나요?

귀하의 로그에 따르면 - 그러한 파일이나 디렉토리가 없습니다

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 :

귀하의 로그에 따르면 - 그러한 파일이나 디렉토리가 없습니다

저것들. numpy==1.19.5가 없나요?

 
Vladimir Perervenko :

저것들. numpy==1.9.5가 없나요?

폴더가 없는듯

'c:\\users\\user\\appdata\\local\\r-miniconda\\envs\\r-reticulate\\lib\\site-packages\\numpy-1.19.5.dist-info\\METADATA '