以下の環境で,動作を確認している.
OS:Windows 10 Home(Version 20H2)
Python:Version 3.8.10
「MetaTrader 5」(以下,「MT5」)は,外国為替市場(FX)などを取引するためのプラットフォームである.
【公式サイト】からインストーラをダウンロードし,インストールする.
「Python」は,インタープリタ型のプログラミング言語であり,ほかのプログラミング言語よりも,「ライブラリ」と呼ばれる拡張機能を簡単にダウンロード,インストールし,自身のプログラムに組みこめることが特徴である.
【公式サイト】から,適切なインストーラをダウンロードし,インストールする.
バージョンは,サポート期間中のものであればどれでもよいと思われるが,
この記事を執筆したときのバージョンは,前述のとおり「3.8.10」である.
くわしい手順は,【このページ】あたりを参考にするとよいだろう.
正しくインストールされていれば,コマンドプロンプトで「py -V」とコマンドを実行すると,
インストールされているバージョンが表示されるはずである.
以下は,プログラムで使用しているPythonのライブラリである.
みどりで書かれたライブラリは,コマンドプロンプトで「py -m pip install [パッケージ名]」を実行すると,Pythonに標準で付属しているソフトウェア「pip」が,便利なことに,インターネットから勝手にダウンロードしてインストールしてくれる.
あかで書かれたライブラリ(talib)は,「pip」でもインターネットから拾ってこられないため*1,手動でダウンロードする必要がある.
【公式サイト】から,適切なものをダウンロードする.
現在ではURL等変更があるため、以下のサイトを参考に行うことを推奨する(追記2024/11/14山本T) https://qiita.com/heroshi/items/9ecd4f9eabe4a0e82ef6
例外もあるが,基本的には以下のようなファイル名になっている.
TA_Lib-x.x.x-cpyy-cpyy-winz.whl
・x.x.x:TA-Libのバージョン(「0.4.21」など)
・yy:Pythonのバージョン(たとえば,「3.8.10」であれば「38」)
・z:Windows OSのビット数(64ビットであれば「_amd64」,32ビットであれば「32」)
Pythonのバージョン,およびWindows OSのビット数は,コマンドプロンプトで,
それぞれ「py -V」,「echo %PROCESSOR_ARCHITECTURE%」を実行することで,確認できる.
ダウンロードしたら,コマンドプロンプトで,
「py -m pip install .\Downloads\TA_Lib-x.x.x-cpyy-cpyy-winz.whl」
を実行する.正しくインストールされれば,「Successfully installed~~~」と表示される.
以下のフォルダに,卒論に記載されているシステムのプログラムなどがある.
――――――――――
――――――――――
ダウンロードののち,解凍して,「C:\Users\[ユーザ名]\」など,
分かりやすいところに置くとよいだろう.
フォルダのなかは,以下のようになっている.
上記であかで書かれているプログラムは,
「in_dat」内や「out_dat」内のcsvファイルを書きこんだり,読みこんだりするときに,絶対パスを使ってあるが,
そのままでは,「C:/Users/xi/MT5/...」になっているはずである.
その「C:/Users/xi/」のところを,すべてのプログラムにおいて,すべての箇所で,
上記でフォルダ「MT5」を置いた絶対パスに修正する必要がある.
「Visual Studio Code」では,特定の文字列をすべて別の文字列に
置換する機能があるので,それを利用しよう.
以下のファイルをダウンロードする
ただし,Trade.csvは以下の手順で保存する.
「右クリック」→「名前を付けてリンク先を保存」
ファイル名は変えずにそのまま保存する.
各ファイルの配置を以下に示す.
MQL5→includeにinitmq4.mqh, stdlib.mqh, stderror.mqhの三つを入れる.
MQL5→scriptsにTradeAI.mq5を入れる.
MQL5→FilesにTrade.csvを入れる.
「common.csv」は,システムの動作を設定するものである.
そのままでは,以下のようになっているはずである.
以下の項目の値が,次のようになっているか確認する.異なっているときは,変更する.
・「use_data」:「short」または「long」
インジケータを計算する期間を選択する
・「data_short」/「data_long」:「10S」,「1T」など
「use_data」が「short」のときは,「data_short」の値を,
「long」のときは,「data_long」の値を期間として,インジケータの計算を行う
・「indi_number」:「7」または「15」
計算を行うインジケータの数
インジケータの計算には,ある程度の処理能力を必要とする.
「15」個は,相当のマシンパワーを必要とするので,基本的には「7」個でよい.
・「trend_frag」:「2」
1台のPCで実行するときは,上記の画像のままでよい.
各プログラムを,以下のとおり,順番に実行する.
――――――――――――――
1. tick_data.py
2. 各インジケータを計算するプログラム(順不同)
「indi_number」が「7」のとき
・indi_EMA.py
・indi_BBAND.py
・indi_MACD.py
・indi_RSI.py
・indi_STOCH.py
・indi_DMI.py
・indi_ULTOSC.py
「indi_number」が「15」のとき
・indi_AROON.py
・indi_BBAND.py
・indi_CCI.py
・indi_DMI.py
・indi_EMA.py
・indi_MACD.py
・indi_MFI.py
・indi_MOM.py
・indi_ROC.py
・indi_RSI.py
・indi_STOCH.py
・indi_TRIX.py
・indi_TSF.py
・indi_ULTOSC.py
・indi_WillR.py
3. rule_generator.py
4. auto_trade.py
――――――――――――――
このシステムでは,PCを2台使い,インジケータの計算に用いる期間を,
一方で長期,もう一方で短期にし,それによって出力されるcsvファイルを,LANを介して共有することで,
長期と短期を組みあわせた取引を行うことができる.
まず,短期側と長期側が,どちらとも同じルータに接続されていることを確認する.
「エクスプローラ」を開き,フォルダ「MT5」で右クリックし,
「アクセスを許可する」から「特定のユーザ...」に進む.
「共有する相手」から「Everyone」を選択し,「追加」する.
さらに,「Everyone」の「アクセス許可レベル」を「読み取り/書き込み」にし,
「共有」する.
「ユーザのフォルダーは共有されています.」と表示されたら,完了である.
ここで,以下の画像で,オレンジの枠で囲われたパスは,のちに使うため,
転記しておくとよいだろう.
「Windows」+「R」を押し,
「ファイル名を指定して実行」で,上記で転記したパスを入力する.
「ネットワーク資格情報の入力」を求められるため,
通常どおり,短期側でデスクトップにログインするときの,ユーザ名とパスワードを入力する.
エクスプローラで,短期側に保存されているフォルダ「MT5」が,
長期側から閲覧できれば,完了である.
以下のプログラムの,以下の行にある絶対パスのうち,
「MT5」以上を,短期側の絶対パスに変更する.
・indi_EMA.py(25行目)
・indi_BBAND.py(26行目)
・indi_MACD.py(25行目)
・indi_RSI.py(25行目)
・indi_STOCH.py(25行目)
・indi_DMI.py(25行目)
・indi_ULTOSC.py(25行目)
・rule_generator.py(37行目)
・auto_trade.py(26,43,44行目)
たとえば,以下の画像のように変更する.
common.csvのうち,以下の項目の値が,
次のようになっているか確認する.異なっているときは,変更する.
・「use_data」:「long」
・「data_short」:「10S」
・「data_long」:「1T」
・「indi_number」:「7」
・「trend_frag」:「1」
common.csvのうち,以下の項目の値が,
次のようになっているか確認する.異なっているときは,変更する.
・「use_data」:「short」
・「data_short」:「10S」
・「data_long」:「1T」
・「indi_number」:「7」
・「trend_frag」:「0」
各プログラムを,短期側と長期側それぞれにおいて,
以下のとおり,順番に実行する.
――――――――――――――
1. tick_data.py
2. 各インジケータを計算するプログラム(順不同)
「indi_number」が「7」のとき
・indi_EMA.py
・indi_BBAND.py
・indi_MACD.py
・indi_RSI.py
・indi_STOCH.py
・indi_DMI.py
・indi_ULTOSC.py
「indi_number」が「15」のとき
・indi_AROON.py
・indi_BBAND.py
・indi_CCI.py
・indi_DMI.py
・indi_EMA.py
・indi_MACD.py
・indi_MFI.py
・indi_MOM.py
・indi_ROC.py
・indi_RSI.py
・indi_STOCH.py
・indi_TRIX.py
・indi_TSF.py
・indi_ULTOSC.py
・indi_WillR.py
3. rule_generator.py
4. auto_trade.py
――――――――――――――