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

 
Maxim Dmitrievsky:

Renatさん、ONNXのサポートについて何か更新はありますか?

いいえ。

まだ需要もなく、用意された観客もいない。

 

この1年でいろいろな変更があり、古いスクリプトは使えなくなりました。

Windows7でMT5 build 2361, 32bitの端末があります。端末自体は動くのですが、pythonスクリプトの接続がうまくいかなくなりました(年始は動いていたのですが)。

明らかに端末のアップデートによる もので、他は何も変わっていません。テスト用に簡単なスクリプトを実行します。

import MetaTrader5 as mt5
from time import sleep

mt5.initialize()
print('start')
print(mt5.terminal_info())
sleep(10) 

mt5.shutdown()
print('end')

質問 MetaTrader5 の python モジュールのどのバージョンをインストールすれば、再び動作するようになりますか?(あるいは、端末のアップデートをロールバックする方法?)

異なるバージョンのモジュールを試しましたが、すべてエラーになりました。新しいものは、-10003「IPCの初期化に失敗しました、MetaTrader 5 x64が見つかりません」と表示されます。

のいくつかは初期化してターミナルを実行しますが、RuntimeError: IPC recv failed in 'py_test.py' を返します。

一番古い5.0.10には他のコマンドもありますが、それも使えません。

ターミナルが新しいバージョンに更新できない。Pythonモジュールの動作するバージョンがあったが、今は見つからない。

64ビット版の端末はOSのアップデートなどが必要で、さらに64ビットOSは何倍ものメモリとディスクスペースを食う、悪い選択だ。一般的に、何でもかんでも自動更新する方針は良くないと思います。動作する場合は、触れないでください。

一般的には、古いバージョンとの互換性をサポートせず、アップデートが強制される場合、どのバージョンと互換性があるのかをドキュメントに表にしておくとよいでしょう。

Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
Автоматическое обновление - Для продвинутых пользователей - Справка по MetaTrader 5
  • www.metatrader5.com
В платформу встроена система автоматического обновления. Она позволяет своевременно получать и устанавливать новые версии программы. Эту систему отключить нельзя. Порядок обновления При подключении к торговому серверу происходит проверка наличия обновлений платформы. Если найдено обновление какого-либо из компонентов торговой платформы...
 
Lyuk:


32ビットOSのサポートは、何年も前に無効化されています。あれから端末はずいぶん変わりましたね。したがって、あなたの問題に対する解決策は、64ビットのWindows 10を使用しなければならないことです。

 

しかし、ターミナルとモジュールの互換ビルドがあるため、新しい機能はなくとも、それらをインストールするだけでよいのです。

また、Windows 10 64bitを必要とするのは、ターミナルのようなプログラムには無理があります。重くて、欲張りで、信頼性が低く、長期間の運用が必要なものを動かすには無理があります。また、自動更新の問題もあります。MTがこのシステムに縛られているのは残念です。

 
Vladimir Karputov:

64ビットのWindows 10を使用する必要があります。

Windows 7 x64の何が問題なのでしょうか?また更新が遅れたのか?

 
Aleksey Vyazmikin:

Windows 7 x64の何が問題なのでしょうか?またニュースを見逃してしまったのでしょうか?

10より7の方がいいような気がする。モバイルシステムでオリエンテーションがない。

 
Valeriy Yastremskiy:

私にとっては、10より7の方が良い。モバイルシステムへの志向がない。

私は、1年近く10に取り組んで、7で満足して帰ってきました。

 
Renat Fatkhullin:

いいえ。

需要がなく、用意された観客がいない限りは。

機械学習のトピックで、これまでに4人が需要を表明しています :) 機会があり、トピックに関する記事がいくつかあれば、pythonユーザーはモデルを移植し始めるようです。特に英語圏の方。
 
2020.11.09 09:43:31.509 Terminal        MetaTrader 5 x64 build 2670 started for MetaQuotes Software Corp.
2020.11.09 09:43:31.510 Terminal        Windows 10 build 19042, Intel Core i7-9750 H  @ 2.60 GHz, 23 / 31 Gb memory, 1665 / 1861 Gb disk, IE 11, UAC, GMT+2
2020.11.09 09:43:31.510 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075


MetaEditorのスクリプトとjupyter notebookの両方で実行しています。

Python version:  sys.version_info(major=3, minor=7, micro=6, releaselevel='final', serial=0)
Scikit-Learn version:  0.23.1


DataFrameオブジェクトの最初の5行を印刷できない。

「data folder'」からスクリプトを取り出し、「 \Scripts :」の行を追加 します。

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 5
if 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()メソッドではうまくいかなかったのに、この作戦では うまくいった理由。

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

MetaTrader 5 build 2650の新バージョン:チャートのバックグラウンド読み込みとMQL5 Profilerの改善

ラシード・ウマロフ さん 2020.11.10 14:03

試してみる

# выведем пять первых строк (метод 'head' pandas)
print("\nВыведем пять первых строк")
print( rates_frame.head())

結果

Выведем пять первых строк
         time     open     high      low    close  tick_volume  spread  real_volume
0  1578484800  1.11384  1.11386  1.11110  1.11200        12101       0            0
1  1578499200  1.11200  1.11308  1.11087  1.11180        13243       0            0
2  1578513600  1.11180  1.11180  1.11018  1.11041         5709       0            0
3  1578528000  1.11053  1.11194  1.11033  1.11174         4409       0            0
4  1578542400  1.11174  1.11190  1.11126  1.11183         2964       0            0



が働いたのか?

 
Vladimir Karputov:

なぜ「head()」メソッドはうまくいかなかったのに、この作戦は


が働いたのか?

head()メソッド(https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.head.html) は、ログへの出力ではなく、オブジェクトを返すからです。内容を見るには、明示的にオブジェクトをprint()に送る必要があります。

この便宜的なアナコンダは、あたかも print() が呼ばれたかのようにオブジェクトを出力します。