VSCodeでPythonからMT5を操作する方法を解説します。
VSCodeで快適なPython開発環境を手に入れてMetaTraderを操作しよう
VSCode (Visual Studio Code)のインストール方法、VSCodeでPythonからMT5を操作する方法を解説します。
以前の記事でMetaEditorでPythonからMT5を操作する方法を解説しましたが、MetaEditorでのPythonプログラミングは快適とは言えません。一方でVSCodeにはコード補完や構文エラー検出などのPythonプログラミングに便利な機能がたくさんありますので、MetaEditorでPythonのスクリプトを書くよりはよっぽど捗ることでしょう。簡単に環境を準備できますので、MetaEditorで頑張るよりはサクッとVSCodeを導入することをおすすめします。
VSCodeを使用しても残念ながらPythonからMT4の操作はできないことに変わりありませんので、この記事の解説はMT5専用です。
WindowsにPythonがインストールされていることが前提になります。インストールしていない場合は次の記事を参考にPythonをインストールしてみてください。
VSCodeの入手とインストール
VSCodeの公式ページからインストーラーをダウンロードします。
ダウンロードが終わったら実行してインストールします。特に難しい選択などはないと思いますのでハイハイ選んでおけば大丈夫です。
インストールが終わって起動するとこんな画面が表示されます。これでインストールは完了です。
VSCode Extension(拡張機能)のインストール
VSCodeそのままでもある程度は使えますが、Extensionを入れることでより快適な環境を手に入れられます。ここでは始めるにあたってとりあえず入れておけばOKという類のものを紹介します。
表示言語を日本語に変更
VSCodeのUI(メニューの項目など)を日本語にしてくれるExtensionです。英語のままで問題ない方は不要です。
左端のブロックみたいなアイコンをクリック、検索ボックスに「Japanese」などを入れると一番上にヒットします。クリックして「Japanese Language Pack for Visual Studio Code」を表示して、「Install」ボタンを押しましょう。
表示言語の切り替えはVSCodeを起動し直すまでは有効にならないので、右下に表示される「Change Language and Restart」をクリックして、VSCodeを再起動しましょう。
再起動された画面は日本語に切り替わっています。
Pythonプログラミングの補助ツール
とりあえず「Python」、「Pylance」の2つを入れておけば快適だと思います。
まずは「Python」です。先ほどと同じように「Python」と検索してヒットしたそのままの名前の拡張機能をインストールしましょう。
続いて「Pylance」を・・・といきたいところですが、「Python」Extensionをインストールすると「Pylance」もインストールされるようです。手間が省けて助かりますね。
これでインストール作業は終わりです。
VSCodeからMT5を操作
VSCodeの準備は整いましたので、さっそくPythonスクリプトを用意してMT5を操作してみましょう。
Pythonスクリプトファイルの作成
VSCodeの ファイル → フォルダーを開く でPythonスクリプトを作成するフォルダを開きます。MT5のデータフォルダ配下でも大丈夫ですし、データフォルダ配下以外でも大丈夫です。
次はVSCodeの ファイル → 新規ファイル で開いてPythonスクリプトファイルを作成します。Ctrl+Sなどの保存コマンドを押すとファイル名を決めるウィンドウが出るのでそれで適当な名前をつけます。拡張子は .py です。
スクリプトは別記事で用意したしたものをそのままコピー&ペーストしてとりあえず使ってみましょう。MetaTrader5のAuthorやVersionの値を取得するスクリプトです。
# Copyright 2022, MetaQuotes Ltd.
# https://www.mql5.com
import MetaTrader5 as mt5
mt5.initialize()
# you code here
#
print("MetaTrader5 Author ",mt5.__author__)
print("MetaTrader5 Version ",mt5.__version__)
mt5.shutdown()
ここまでやると下記のようになります。
この図では「C:\mt5python」フォルダに「testpython.py」ファイルを作成しました。
これで準備は完了です。
Pythonを実行してMT5を操作する
VSCodeの ファイル → ターミナル → 新しいターミナル とすると右下にPowerShellのターミナルが表示されます。コマンドプロンプトやその他のターミナルでも大丈夫です。
ターミナルに次のようにコマンドを打って実行します。testpython.py部分は先ほど作成したPythonスクリプトファイル名に読み替えてください。
python testpython.py
実行が終わるとターミナルにはPythonスクリプトでMetaTrader5から取得したAuthorやVersionの値が表示されます。MetaTrader5を停止していた場合は自動的に起動されたと思います。
ターミナルの全文はこちらです。
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
Try the new cross-platform PowerShell https://aka.ms/pscore6
PS C:\mt5python> python testpython.py
MetaTrader5 Author MetaQuotes Ltd.
MetaTrader5 Version 5.0.37
PS C:\mt5python>
エラーになる場合は
Python用のMetaTrader5パッケージをインストールしていない場合は実行できません。ターミナルから次のコマンドを実行してインストールしましょう。詳細はこちらの記事を参照してください。
pip install MetaTrader5
もう少しやってみましょう(公式のサンプルコードの実行方法)
別記事のMetaEditorからPythonを使う方法と同じように、公式のサンプルコードを利用してグラフをプロットしてみましょう。
matplotlibとpandasをインストールしていない場合はターミナルから次のコマンドを実行してインストールしましょう。
pip install matplotlib
pip install pandas
下記のコードをVSCodeに貼り付けて先ほどと同じようにpythonコマンドで実行しましょう。
from datetime import datetime
import matplotlib.pyplot as plt
import pandas as pd
from pandas.plotting import register_matplotlib_converters
register_matplotlib_converters()
import MetaTrader5 as mt5
# MetaTrader 5に接続する
if not mt5.initialize():
print("initialize() failed")
mt5.shutdown()
# 接続状態とパラメータをリクエストする
print(mt5.terminal_info())
# MetaTrader 5バージョンについてのデータを取得する
print(mt5.version())
# EURAUDから1,000ティックをリクエストする
euraud_ticks = mt5.copy_ticks_from("EURAUD", datetime(2020,1,28,13), 1000, mt5.COPY_TICKS_ALL)
# AUDUSDから2019.04.01 13:00 - 2019.04.02 13:00のティックをリクエストする
audusd_ticks = mt5.copy_ticks_range("AUDUSD", datetime(2020,1,27,13), datetime(2020,1,28,13), mt5.COPY_TICKS_ALL)
# 数々の方法で異なる銘柄からバーを取得する
eurusd_rates = mt5.copy_rates_from("EURUSD", mt5.TIMEFRAME_M1, datetime(2020,1,28,13), 1000)
eurgbp_rates = mt5.copy_rates_from_pos("EURGBP", mt5.TIMEFRAME_M1, 0, 1000)
eurcad_rates = mt5.copy_rates_range("EURCAD", mt5.TIMEFRAME_M1, datetime(2020,1,27,13), datetime(2020,1,28,13))
# MetaTrader 5への接続をシャットダウンする
mt5.shutdown()
#データ
print('euraud_ticks(', len(euraud_ticks), ')')
for val in euraud_ticks[:10]: print(val)
print('audusd_ticks(', len(audusd_ticks), ')')
for val in audusd_ticks[:10]: print(val)
print('eurusd_rates(', len(eurusd_rates), ')')
for val in eurusd_rates[:10]: print(val)
print('eurgbp_rates(', len(eurgbp_rates), ')')
for val in eurgbp_rates[:10]: print(val)
print('eurcad_rates(', len(eurcad_rates), ')')
for val in eurcad_rates[:10]: print(val)
#PLOT
# 取得したデータからDataFrameを作成する
ticks_frame = pd.DataFrame(euraud_ticks)
# 秒での時間をdatetime形式に変換する
ticks_frame['time']=pd.to_datetime(ticks_frame['time'], unit='s')
# チャートにティックを表示する
plt.plot(ticks_frame['time'], ticks_frame['ask'], 'r-', label='ask')
plt.plot(ticks_frame['time'], ticks_frame['bid'], 'b-', label='bid')
# 凡例を表示する
plt.legend(loc='upper left')
# ヘッダを追加する
plt.title('EURAUD ticks')
# チャートを表示する
plt.show()
MetaEditorから実行した際と同様にグラフが表示され、ターミナルにはTickデータが出力されます。
VSCodeおすすめ
EA開発者にとってMetaEditorは使い慣れた開発環境だと思いますが、VSCodeの環境を手にしたらもうMetaEditorには戻れなくなると思います。それくらいおすすめですので躊躇されている方はぜひ一度手を出してみてください。
VSCodeを使ってMQLプログラミングする方法もありますのでそれは別の記事でまとめたいと思います。
【参考】VSCodeのPython用Extensionその他
「vscode python 拡張機能 おすすめ」で検索するとたくさん出てきますので好みのExtensionを入れると幸せになれます。
ここまでで紹介したVSCodeやExtensionはMicrosoft製です。「便利に使いたいけど、どこの誰が作ったのかわからないものを入れるのは不安!」という人はMicrosoft製のExtensionだったり、利用者が多く評価が高いExtensionを選択しておけばとりあえず安心できるのではないでしょうか。
コメント / Comments