MetaTrader 5 Python User Group - メタトレーダーでPythonを使用する方法 - ページ 46

 

少なくとも、metatrader5(5.0.21)が公開され、以下のように変更されたことを端的に伝えていますね...。そして、ドキュメントを適合させること。数日でできる変化はそう多くはありません。それとも、すべて感覚で確認しなければならないのでしょうか?

確認したところ、動作しています。

>>> #--lib---------------------
>>> import MetaTrader5 as mt5
>>> import time
>>> #--init----------
>>> server1 = "MetaQuotes-Demo"; login1 = 18192632
>>> server2 = "AlpariEvrasia-MT5-Demo"; login2 = 50468487
>>> logn = login1; server = server1 
>>> if mt5.initialize(timeout = 2000, login = logn, server = server):
...     Acc = mt5.account_info()
... 
>>> if Acc.server != server:
...         print("Connect server wrong")
...         quit()
... 
>>> if Acc.login != logn:
...         print("Connect login wrong")
...         quit()
... 
>>> info = mt5.terminal_info()
>>> if info.trade_allowed == False:
...         print("Auto-trading disabled in Terminal, enable it")
...         quit()
... 
>>> print(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=2340, maxbars=100000, codepage=1251, ping_last=72203, community_balance=0.1, retransmission=0.8130081300813009, company='MetaQuotes Software Corp.', name='MetaTrader 5', language='Russian', path='C:\\Program Files\\MetaTrader 5', ...)
>>> if info.trade_allowed == False:
...         print("Auto-trading disabled in Terminal, enable it")
...         quit()
... 
>>> #--------------------------
>>> symbol = "EURGBP"
>>> timefr = 4
>>> mt5.symbol_select(symbol)
True
>>> time.sleep(1)
>>> #--price----------------
>>> import numpy as np
>>> import pandas as pd
>>> rates = pd.DataFrame(mt5.copy_rates_from_pos(symbol, timefr, 1, 1000))
>>> print(rates)
           time     open     high  ...  tick_volume  spread  real_volume
0    1582230720  0.83800  0.83802  ...           89       5            0
1    1582230960  0.83798  0.83802  ...           99       5            0
2    1582231200  0.83788  0.83795  ...           91       5            0
3    1582231440  0.83790  0.83791  ...           39       6            0
4    1582231680  0.83788  0.83793  ...           66       5            0
..          ...      ...      ...  ...          ...     ...          ...
995  1582642560  0.83624  0.83659  ...          267       1            0
996  1582642800  0.83650  0.83650  ...          293       3            0
997  1582643040  0.83617  0.83627  ...          290       5            0
998  1582643280  0.83623  0.83636  ...          226       6            0
999  1582643520  0.83624  0.83641  ...          109       5            0

[1000 rows x 8 columns]

これからも手探りでやっていきましょう :)

 
Vladimir Perervenko:

少なくとも、metatrader5(5.0.21)が公開され、以下の点が変更されたことを二言で伝えているのですが......。そして、ドキュメントを適合させること。数日でできる変化はそれほど多くない。それとも、すべて感覚で確認しなければならないのでしょうか?

MetaTrader for Pythonの オンラインドキュメントは、アップデートされた機能の一部について、すでにウェブサイト上で公開されています。それぞれについて例を示しています。

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

もちろん、見たことがあります。ドキュメントで実行する

>>> #--lib---------------------
>>> import MetaTrader5 as mt5
>>> import time
>>> mt5.initialize()
True
>>> mt5.login(login = 18192632, server = "MetaQuotes-Demo")
RuntimeError: Invalid arguments
 

そして、これは動作し、正しい初期化です。

>>> mt5.initialize(timeout = 2000, login = 18192632, server = "MetaQuotes-Demo")
True
>>> Acc = mt5.account_info()

ドキュメントを修正すればいい。

 
Vladimir Perervenko:

もちろん、見たことがあります。ドキュメントにしたがって実行中。

loginは必須の無名パラメータなので、login=を 削除してください。

mt5.login(18192632, server = "MetaQuotes-Demo")
 
Vladimir Perervenko:

そして、これは動作し、正しい初期化です。

ドキュメントを修正すればいい。

記述を完成させます、メッセージありがとうございました。

 
Vladimir Perervenko:

そして、これは動作し、正しい初期化です。

ドキュメントを修正すればいい。

今、再接続を試みる場合

>>> res = mt5.login(server = "AlpariEvrasia-MT5-Demo", login = 50468487)
RuntimeError: Invalid arguments

今のところ、とても生々しいです...。

 
Vladimir Perervenko:

今、再接続を試みると

今のところ、すべてにおいて粗削りですが......。

レナートが示した例とラインを一致させる。

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MetaTrader 5 Python User Group - MetaTraderでPythonを使用する方法

レナート・ファットフーリン, 2020.02.18 22:05

import MetaTrader5 as mt5

mt5.initialize(timeout=10000)
mt5.initialize(login=25035662, password="oxeb7lpb", server="MetaQuotes-Demo")
mt5.login(25035662)
mt5.login(25035662, timeout=10000)
mt5.login(25035662, "oxeb7lpb")
mt5.login(25035662, password="oxeb7lpb")
mt5.login(25035662, password="oxeb7lpb", server="MetaQuotes-Demo")
 
皆さん、端末のオープンポジションの 情報は、今は取得できないと思っていいのでしょうか?
 
Rashid Zeynalov:
皆さん、ターミナルでオープンポジションの 情報を得ることができなくなったということでよろしいでしょうか?

はい。

initialize(path=None)                              Establish connection with the MetaTrader 5 Terminal
wait()                                             Wait for the MetaTrader 5 Terminal to connect to a broker's server
shutdown()                                         Disconnect from the MetaTrader 5 Terminal

version()                                          Get the MetaTrader 5 Terminal version
terminal_info()                                    Get the parameters of the MetaTrader 5 terminal
account_info()                                     Returns information of current account

copy_ticks_from(symbol, from, count, flags)                Get ticks starting from the specific date
copy_ticks_range(symbol, from, to, flags)                  Get ticks from the specified period
copy_rates_from(symbol, timeframe, from, count)            Get bars starting from the specific date
copy_rates_from_pos(symbol, timeframe, start_pos, count)   Get bars starting from the specified position
copy_rates_range(symbol, timeframe, date_from, date_to)    Get bars from the specified period

positions_total()                                          Returns the number of open positions
positions_get([symbol=\"SYMBOL\"],[ticket=TICKET])         Returns all open positions, can be filtered by symbol or ticket

orders_total()                                             Returns the number of orders
orders_get([symbol=\"SYMBOL\"],[ticket=TICKET])            Returns all orders, can be filtered by symbol or ticket

history_orders_total(from, to)                             Returns the number of orders in selected range from the history
history_orders_get(from, to)                               Returns orders in selected range from the history or filtered by position id, ticket

history_deals_total(from, to)                              Returns the number of deals in selected range from the history
history_deals_get(from, to)                                Returns deals in selected range from the history or filtered by position id, ticket

order_check(request)                                                Checks if there are enough funds to execute the required trade operation
order_send(request)                                                 Sends trade requests to a server
order_calc_margin(action, symbol, volume, price)                    Calculates the margin required for the specified order
order_calc_profit(action, symbol, volume, price_open, price_close)  Calculates the profit for the current account, in the current market conditions, based on the parameters passed

symbol_info(symbol)                                        Returns full information for a specified symbol
symbol_info_tick(symbol)                                   Returns current prices of a specified symbol
symbol_select(symbol,[enable])                             Selects a symbol in the Market Watch window or removes a symbol from the window

ドキュメントはまだ確定していない。

現在21の最新版ライブラリにアップデートすることをお忘れなく。

pip install --upgrade metatrader5