В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
from datetime import datetime
import MetaTrader5 as mt5
# выведем данные о пакете MetaTrader5
print("MetaTrader5 package author: ",mt5.__author__)
print("MetaTrader5 package version: ",mt5.__version__)
# импортируем модуль pandas для вывода полученных данных в табличной форме
import pandas as pd
pd.set_option('display.max_columns', 500) # сколько столбцов показываем
pd.set_option('display.width', 1500) # макс. ширина таблицы для показа
# импортируем модуль pytz для работы с таймзоной
import pytz
# установим подключение к терминалу MetaTrader 5if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# установим таймзону в UTC
timezone = pytz.timezone("Etc/UTC")
# создадим объект datetime в таймзоне UTC, чтобы не применялось смещение локальной таймзоны
utc_from = datetime(2020, 1, 10, tzinfo=timezone)
# получим 10 баров с EURUSD H4 начиная с 01.10.2020 в таймзоне UTC
rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_H4, utc_from, 10)
# завершим подключение к терминалу MetaTrader 5
mt5.shutdown()
# выведем каждый элемент полученных данных на новой строке
print("Выведем полученные данные как есть")
for rate in rates:
print(rate)
# создадим из полученных данных DataFrame
rates_frame = pd.DataFrame(rates)
# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
rates_frame.head()
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)
rates_frame['time']=pd.to_datetime(rates_frame['time'], unit='s')
# выведем данные
print("\nВыведем датафрейм с данными")
print(rates_frame)
で、このメソッドは何も出力しません。
(1578614400, 1.11051, 1.11093, 1.11017, 1.11041, 2448, 1, 0)
Выведем пять первых строк
Выведем датафрейм с данными
# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
print( rates_frame.head())
結果
Выведем пять первых строк
time open high low close tick_volume spread real_volume
015784848001.113841.113861.111101.112001210100115784992001.112001.113081.110871.111801324300215785136001.111801.111801.110181.11041570900315785280001.110531.111941.110331.11174440900415785424001.111741.111901.111261.11183296400
Renatさん、ONNXのサポートについて何か更新はありますか?
いいえ。
まだ需要もなく、用意された観客もいない。
この1年でいろいろな変更があり、古いスクリプトは使えなくなりました。
Windows7でMT5 build 2361, 32bitの端末があります。端末自体は動くのですが、pythonスクリプトの接続がうまくいかなくなりました(年始は動いていたのですが)。
明らかに端末のアップデートによる もので、他は何も変わっていません。テスト用に簡単なスクリプトを実行します。
質問 MetaTrader5 の python モジュールのどのバージョンをインストールすれば、再び動作するようになりますか?(あるいは、端末のアップデートをロールバックする方法?)
異なるバージョンのモジュールを試しましたが、すべてエラーになりました。新しいものは、-10003「IPCの初期化に失敗しました、MetaTrader 5 x64が見つかりません」と表示されます。
のいくつかは初期化してターミナルを実行しますが、RuntimeError: IPC recv failed in 'py_test.py' を返します。
一番古い5.0.10には他のコマンドもありますが、それも使えません。
ターミナルが新しいバージョンに更新できない。Pythonモジュールの動作するバージョンがあったが、今は見つからない。
64ビット版の端末はOSのアップデートなどが必要で、さらに64ビットOSは何倍ものメモリとディスクスペースを食う、悪い選択だ。一般的に、何でもかんでも自動更新する方針は良くないと思います。動作する場合は、触れないでください。
一般的には、古いバージョンとの互換性をサポートせず、アップデートが強制される場合、どのバージョンと互換性があるのかをドキュメントに表にしておくとよいでしょう。
32ビットOSのサポートは、何年も前に無効化されています。あれから端末はずいぶん変わりましたね。したがって、あなたの問題に対する解決策は、64ビットのWindows 10を使用しなければならないことです。
しかし、ターミナルとモジュールの互換ビルドがあるため、新しい機能はなくとも、それらをインストールするだけでよいのです。
また、Windows 10 64bitを必要とするのは、ターミナルのようなプログラムには無理があります。重くて、欲張りで、信頼性が低く、長期間の運用が必要なものを動かすには無理があります。また、自動更新の問題もあります。MTがこのシステムに縛られているのは残念です。
64ビットのWindows 10を使用する必要があります。
Windows 7 x64の何が問題なのでしょうか?また更新が遅れたのか?
Windows 7 x64の何が問題なのでしょうか?またニュースを見逃してしまったのでしょうか?
10より7の方がいいような気がする。モバイルシステムでオリエンテーションがない。
私にとっては、10より7の方が良い。モバイルシステムへの志向がない。
私は、1年近く10に取り組んで、7で満足して帰ってきました。
いいえ。
需要がなく、用意された観客がいない限りは。
MetaEditorのスクリプトとjupyter notebookの両方で実行しています。
DataFrameオブジェクトの最初の5行を印刷できない。
「data folder'」からスクリプトを取り出し、「 \Scripts :」の行を追加 します。
で、このメソッドは何も出力しません。
head()メソッドではうまくいかなかったのに、この作戦では うまくいった理由。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
MetaTrader 5 build 2650の新バージョン:チャートのバックグラウンド読み込みとMQL5 Profilerの改善
ラシード・ウマロフ さん 2020.11.10 14:03
試してみる
結果
が働いたのか?
なぜ「head()」メソッドはうまくいかなかったのに、この作戦は。
が働いたのか?
head()メソッド(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) は、ログへの出力ではなく、オブジェクトを返すからです。内容を見るには、明示的にオブジェクトをprint()に送る必要があります。
この便宜的なアナコンダは、あたかも print() が呼ばれたかのようにオブジェクトを出力します。