Pythonで自動売買に挑戦③

PythonでFXの自動売買のためのEAを構築3 エントリーポイント

MetaTrader 5は強力なトレーディングプラットフォームで、トレードの自動化が可能です。一方、Pythonは柔軟で様々なデータ解析や自動化のツールをサポートするプログラミング言語です。この二つを連携させることで、Pythonの豊富なライブラリー(Pandas, NumPy, Matplotlibなど)を使った高度なデータ解析が可能です。また、自動トレードも外部から行うよりも簡潔に処理できます。そのため、市場データを監視し、即座に反応するシステムの構築が可能となります。

必要なツールのインストール

美来
美来

これまでは、PythonからMT5に入っていたのね。今度は、MT5のMEでPythonを動かすわけね。

ネズミ先生
ネズミ先生

そういう事だチュー。

MetaTrader 5のインストール

MetaTrader 5の公式サイトからインストーラーをダウンロードし、インストールします。

美来
美来

未来は、XMのメタトレーダー5を使っているから、それを使っていいのね。

ネズミ先生
ネズミ先生

その通り、すでにインストールしている人は、それを使ってチュー。

Pythonのインストール

Pythonの公式サイトから最新のPythonをダウンロードし、インストールします。

美来
美来

未来は、Pythonもインストールして使っているから、それを使っていいのね。

ネズミ先生
ネズミ先生

その通り、すでにインストールしている人は、それを使ってチュー。

MQL5 MetaEditorの設定

1. MetaEditorの起動

MetaTrader 5の「ツール」タブから「MetaQuotes Language Editor」を選択して、MetaEditorを起動します。

 MetaEditorのメインメニューから「ツール」→「オプション」を選択します。

「オプション」ウインドウが開いたら、「ディレクトリ」タブを選択し、MQL5のスクリプト、エキスパート、およびインディケータの保存先ディレクトリが正しいことを確認します。

美来
美来

私は、FXEA開発用にのフォルダのPythonを使うわね。

ネズミ先生
ネズミ先生

MQL5では、パス指定されたフォルダのpython.exeと連携するから、フォルダ名は好みでいいけど、exe ファイル名はそのままで使うチュー。

メタトレーダー5のME にPythonのパスを通す
美来
美来

これで、基本的な環境準備は大丈夫ね。

ネズミ先生
ネズミ先生

Pythonで自動売買に挑戦でインストールしたMetaTrader5パッケージもコンパイルするPythonに、インストールをわすれないでチュー。

MetaTrader 5用のPythonパッケージのインストール

PythonではMetaTrader 5用のMetaTrader5パッケージを使用します。以下のコマンドでインストールします。

pip install MetaTrader5
美来
美来

私は、複数のPythonを使っているから、

python.exe -m pip install MetaTrader5

とインストールしたわ。

MetaTrader 5の準備

MetaTrader 5のアルゴリズム取引を許可する

  1. MT5のメニューバーから「ツール」→「オプション」を選択します。
  2. 「エキスパートアドバイザ」タブを開きます。
  3. 「アルゴリズム取引を許可する」にチェックを入れ、その下の4つには✓がないことを確認して「OK」をクリックします。

Pythonスクリプトを作る

美来
美来

いよいよ、PythonでEAを作ることができるのね。

ネズミ先生
ネズミ先生

もう少しだチュー。

MetaEditorの連携手順

MQL5とPythonを連携するためには、以下のような手順が必要です。

パイプ通信の設定

パイプ通信を使うことで、MQL5とPythonの間でデータをやり取りすることができます。

MetaEditorの新規作成を開きます。

Pythonで自動売買で作った口座の情報をえるPythonプログラムを使います。
名前を適当につけます。(python-2bai)「著作者」「リンク」はなくてもOK

必要なライブラリのインストールを選びます。今回は、MetaTrader5だけで大丈夫。

完了を押すと、Scriptのフォルダにpython-2baiのファイルができています。

Pythonでプログラムミング

いよいよPythonでのプログラミングですが、前回使った口座情報を取得するプログラムを使います。

この中の、下の部分にPythonのプログラムを書いていきます。

# you code here
# 

前回のプログラムをコピーします。
重複している部分を削除します。アカウント等も要らないので削除します。

import MetaTrader5 as mt5

mt5.initialize()

import os

import MetaTrader5 as mt5
from dotenv import load_dotenv

# .envファイルの読み込み
load_dotenv()

# アカウント、パスワード、サーバー情報を設定(あなたのブローカーの情報を使用)
account_id =  os.environ.get("MT5_ACCOUNT_ID") # あなたのアカウントIDを取得
password = os.environ.get("MT5_PASSWORD") # あなたのパスワードを取得
server = os.environ.get("MT5_SERVER") # あなたのサーバー名を取得

# MetaTrader 5 の初期化
if not mt5.initialize():
    print("MetaTrader 5 の初期化に失敗しました")
    mt5.shutdown()
    exit()

# アカウントにログイン
login_success = mt5.login(int(account_id), password, server)
if login_success:
    print("ログインに成功しましたチュー")
else:
    print("ログインに失敗しましたチュー")

# 接続を確認するために口座情報を取得
account_info = mt5.account_info()
if account_info is None:
    print("口座情報の取得に失敗しましたチュー")
else:
    # 口座情報を表示
    print(f"口座番号: {account_info.login}")
    print(f"残高: {account_info.balance}")
    print(f"証拠金: {account_info.margin}")

# MetaTrader 5からの切断
mt5.shutdown()# 

mt5.shutdown()

整理すると、すでに口座にログインしていますので、口座情報だけを表示するプログラムです。

import MetaTrader5 as mt5

mt5.initialize()

import os

# MetaTrader 5 の初期化
if not mt5.initialize():
    print("MetaTrader 5 の初期化に失敗しました")
    mt5.shutdown()
    exit()

# 接続を確認するために口座情報を取得
account_info = mt5.account_info()
if account_info is None:
    print("口座情報の取得に失敗しましたチュー")
else:
    # 口座情報を表示
    print(f"口座番号: {account_info.login}")
    print(f"残高: {account_info.balance}")
    print(f"証拠金: {account_info.margin}")

# MetaTrader 5からの切断
mt5.shutdown()# 

ファイルを保存しておきます。

Pythonプログラムの実行

MetaTrader5上でPythonプログラムを実行してみます。実行したいpyファイルを選び、MetaEditorのコンパイルをクリックします。

成功すると、下の「ジャーナル」に口座番号と残高、証拠金が表示されます。

美来
美来

こんなに簡単に、MetaEditorでPythonプログラムを使うことができるのね。

コメント

タイトルとURLをコピーしました