import MetaTrader5 as mt5
import time
mt5.initialize()
mt5.wait()
info = mt5.terminal_info()
if info.trade_allowed == False:
print("Auto-trading disabled in Terminal, enable it")
quit()
symbol = "EURUSD"# currency
lot = 0.01; # buy lot
interval = 5# price requesting interval in sec
long_len = 11# long moving average length
short_len = 7# short moving average length
long_ma = [] # long ma list
short_ma = [] # short ma list
ticket = 0# ticket for sell
mt5.symbol_select(symbol)
# wait some time
time.sleep(1)
print("\nPreparing...")
for i in range(long_len):
p = mt5.symbol_info_tick(symbol)
print(p.bid,'/',p.ask)
avg = (p.ask + p.bid) / 2
long_ma.append(avg)
if i >= long_len - short_len:
short_ma.append(avg)
time.sleep(interval)
print("\nWorking...")
while True:
p = mt5.symbol_info_tick(symbol)
print(p.bid,'/',p.ask)
avg = (p.ask + p.bid) / 2# short values
prev_short = sum(short_ma) / short_len
short_ma.pop(0)
short_ma.append(avg)
short = sum(short_ma) / short_len
# long values
prev_long = sum(long_ma) / long_len
long_ma.pop(0)
long_ma.append(avg)
long = sum(long_ma) / long_len
# buy signal
if prev_short < prev_long and short > long:
print("BUY: ([-1]:",prev_short,"/",prev_long,", [0]:",short,"/",long,")")
r = mt5.Buy(symbol, lot)
if r.retcode != mt5.TRADE_RETCODE_DONE:
print("Buy failed: ", r)
else:
ticket = r.order
elif prev_short > prev_long and short < long and ticket>0:
print("CLOSE: ([-1]:",prev_short,"/",prev_long,", [0]:",short,"/",long,")")
r = mt5.Sell(symbol, lot, ticket=ticket)
if r.retcode != mt5.TRADE_RETCODE_DONE:
print("Sell failed: ", r)
else:
ticket = 0
time.sleep(interval)
mt5.shutdown()
定数も変わったのでしょうか?
出力時。
はい、定数はMT5_の接頭辞が削除されています、以下は使用例です。
より複雑な例 - 履歴を使用せず、2つの移動平均で 取引するExpert Advisor。
はい、定数はMT5_の接頭辞が削除されています、使用例はこちらです。
より複雑な例として、ヒストリーを使用せずに2本の移動平均 線で取引するEAがあります。
ありがとうございます。
リブの進化は良いことだ。開発者に質問です - pinova lib のロードマップはどこですか?
どんなイノベーションが期待できるのか、何を期待してはいけないのか。
テストサーバー(MetaQuotes-Beta server, address 78.140.180.203:443 )では、新機能を追加したベータ版のターミナル2323が利用可能です。 パブリックベータは明日公開予定です。
また、口座切り替えの構文が新しくなったPython版MetaTrader 5.0.20 (pip install --upgrade metatrader5) をリリースしました。
初期設定において、フルネームと短縮形の両方で直接認可を指定することが可能になりました。
wait機能は廃止され、initializeで直接、待ち時間を含む完全な初期化サイクルが実行され、待ち時間をミリ秒で指定することができるようになりました。
Pythonライブラリは、ポータブルモード(/portableキー)でインストールされた場合でも、ターミナルの最新のアクティブなコピーを見つけることが既に保証されています。
Pythonのプログラムは、すでにナビゲータに直接表示されています。
今週の金曜日のリリースでは、通常のMQL5スクリプトとして 実行できるようになり、チャートにバインドされるようになります。
後ほど、Pythonライブラリにリードモードでのすべての(カスタムも含む)インジケータへのアクセスを追加します。これにより、pythonでの作業がより生産的になります。しかし、これはまだ優先順位が低いので、ずっと後になってからやります。
また、口座切り替えの 構文が新しくなったPython版MetaTrader 5.0.20 (pip install --upgrade metatrader5) をリリースしました。
MQL5よりも機能が充実しています。
並行してエディタの機能も拡張しており、次のリリース(今週金曜日には来ません)では、Clang/LLVMとMicrosoft Visual Studioを使ってC++プログラムをコンパイルすることが完全に可能になる予定です。
もしかしたら、C#も含めるかもしれませんね。
SQLiteデータベースを完全に使用するための大規模な作業:SQLite:MQL5でSQLデータベースをネイティブで作業 する。
これにより、異なるシステム間や端末内での大容量データの操作や交換が容易になります。
MQL5よりも多くの機能を備えています。
そこに到達しているのか?
並行してエディタの機能も拡張しており、次のリリースでは(金曜日には来ませんが)
、Clang/LLVMとMicrosoft Visual Studioを使用してC++プログラムをコンパイルする機能が完全に備わります。
プロジェクトの.lib ファイルをリンクするためのリンカーが追加されるのですか?
プロジェクト内の .lib ファイルをリンクする場合
リンカーは追加されるのですか?
プロジェクト内で複数のターゲットバリアントを指定することができます。
DLL/EXEファイルには、カスタム定義、ライブラリ、コンパイラの追加パラメータがあります。
リンカはClangまたはVisual Studioから自動的に使用されます。明示的に指定する必要はない。
MQL5よりも機能が充実しています。
その結果、MetaTrader 5プラットフォームは より多くの機能を備えているのです。
どんな 言語も、それ自体では、データを供給し、取引を実行する情報および取引プラットフォーム(プラットフォームとは、端末ではなく、インフラとエコシステムを持つサーバーの複合体全体です)なしでは役に立ちません。
私たちの目標は、さまざまな消費者層をカバーするアルゴトレーディングのための幅広いツール群を備えた、シームレスなプラットフォームを提供することです。
PythonはMLで明らかに勝者であり、研究を行う上で非常に有効な言語です。テスターに出せなくても、ダイレクトインテグレーションモードでもいいんです。
ちなみに、他のPythonライブラリ(真正面から書かれていて最適化が不十分なことが多い)と異なり、膨大なチャートデータの見返りを強く最適化しています。つまり、深い歴史を効率よくメモリに収め、素早く取得することができるのです。