#author("2024-01-12T06:22:00+00:00","","")
#author("2024-01-15T06:16:25+00:00","","")
[[動的,時間的データ利活用(FX長短期)]]

*目次 [#tabb1af2]
#CONTENTS
*[[MetaTrade5とPythonによる自動売買:https://www.pu-toyama.ac.jp/IS/IIE/IIE.IS.Wiki.230331/lab_wiki/wiki_lab.php?%E5%8B%95%E7%9A%84%EF%BC%8C%E6%99%82%E9%96%93%E7%9A%84%E3%83%87%E3%83%BC%E3%82%BF%E5%88%A9%E6%B4%BB%E7%94%A8%EF%BC%88FX%E9%95%B7%E7%9F%AD%E6%9C%9F%EF%BC%89]] [#hed5816a]
*MT5長短期 [#a41a7273]

**1.今回動作させた環境 [#ye1fadcc]
OS:Windows 11 Pro~
Python:3.9.13~

MetaTrader5とPythonによる自動売買を先に行っていた場合、~

''「2.準備するもの」''~

''「4.MT5の準備」''~

前回行っているので飛ばしてもよい。

**&color(pink){2.準備するもの };[#de62734c]

''【Python】''~
プログラムの見やすさや、実行のしやすさにおいて、visual stdio codeを使ってpythonを書くのがおすすめ。~

〈Mac〉~

[[Python入門|Macにダウンロード・インストールする基礎知識:https://proengineer.internous.co.jp/content/columnfeature/22312]]~

[[VS CodeでPythonを始めよう!【Mac】:https://biotech-univ.com/2021vs-codepythonmac/#:~:text=Python%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E6%89%8B%E9%A0%86%201%20VS%20Code%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B%20%E4%BD%95%E3%81%AF%E3%81%A8%E3%82%82%E3%81%82%E3%82%8C%E3%80%81VS%20Code%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82%20...%202,...%204%20%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%99%E3%82%8B%20%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A7%E3%81%8D%E3%81%9F%E3%82%89%E6%AC%A1%E3%81%AFPython%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%BE%E3%81%97%E3%82%87%E3%81%86%E3%80%82%20...%205%20%E4%BB%BB%E6%84%8F%E3%81%AEPython%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%20]]~

[[Visual Studio CodeでMacにPython開発環境を整える:https://daeudaeu.com/vscode/]]~

〈Windows〉~

[[PythonインストールWindows10(64bit)編:https://qiita.com/ssbb/items/b55ca899e0d5ce6ce963]]~

[[Python+VScode+Windows11の環境構築:https://www.useful-python.com/env-python-vscode-windows/#:~:text=Visual%20Studio%20Code%E3%81%A7Python%E3%82%92%E4%BD%BF%E3%81%86%201%20%E2%91%A0%20Python%E7%94%A8%E3%81%AE%E6%8B%A1%E5%BC%B5%E6%A9%9F%E8%83%BD%E3%82%92%E8%BF%BD%E5%8A%A0%20VSCode%E3%81%AF%20%E6%8B%A1%E5%BC%B5%E3%83%91%E3%83%83%E3%82%AF%E3%82%92%E5%B0%8E%E5%85%A5%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%A7%EF%BC%8C%E6%A9%9F%E8%83%BD%E3%82%92%E8%BF%BD%E5%8A%A0%E3%81%97%E4%BE%BF%E5%88%A9%E3%81%AB,3%20%E2%91%A2%20Python%E3%81%8A%E3%82%88%E3%81%B3%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%81%AE%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%20...%204%20%E2%91%A3%20pip%E3%81%AB%E3%82%88%E3%82%8B%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E3%81%9D%E3%81%AE%E5%8B%95%E4%BD%9C%E7%A2%BA%E8%AA%8D%20]]~

(うまくPythonがインストールできない事例があったのでインストールの流れ書いておきます)~
リンク先確認:[[Pythonのインストール方法(Windows)]]~

ubuntuの場合,pipが初期でインストールされていない?からインストールしなきゃいけない.~
 sudo apt install python3-pip
でインストール。

次にコマンドプロンプトを起動させ必要なライブラリをインストールする。

 pip install MetaTrader5

のように~

・MetaTrader5~
・datetime~
・pandas~
・numpy~
・mplfinance~
・backtesting~
・scikit-learn~
・pulp~

をインストールする。~

''【Mrta Trader 5】''~

以下のサイトからMT5をインストールする。~
※ここでのMT5は前述したpip install MetaTrader5のMT5とは名前が同じだけで別物。

下記のリンクでインストールするものはアプリ~

[[MetaTrader 5をダウンロードしましょう:https://www.metatrader5.com/ja/download]]~

PythonとMT5を連携させる~

[[PythonとMT5を連携する方法を現役エンジニアが解説【初心者向け】:https://magazine.techacademy.jp/magazine/48502#sec2]]~

MT5での最低取引量は0.01lot(10000通貨)なので残高は大体10万以上にしておくべき

MT5の左上のファイル→デモ口座を開くから残高を増やすことができる

''【TA-Lib】''

[[Windows環境のPythonでTA-Libを使えるようにする:http://shinyaowari.com/archives/1831]]

+環境の確認
まず、使っているパソコンが何ビットなのを確認する。~
 「スタート」→「コントロールパネル」→「システムとセキュリティ」→「システム」
ここに書いてある「システムの種類」が32ビットなのか64ビットなのかを覚えておく。~
次に、使っているpythonのバージョンを確認する。コマンドプロンプトを呼び出し、~
 python -V
と入力するとpythonのバージョンが確認できる。~
~
+ダウンロード
コンパイル済みのTA-Libをダウンロードします。~
[[Unofficial Windows Binaries for Python Extension Packages:https://www.lfd.uci.edu/~gohlke/pythonlibs/#ta-lib]]~
上記のURLの中に「TA-Lib」があるので探す。
TA-Libにもいろんなバージョンがあり、その中で自分の環境に合ったものをダウンロードする。PCは64ビット、pythonのバージョンは3.6.4の場合、~
 TA_Lib‑0.4.17‑cp36‑cp36m‑win_amd64.whl
これをダウンロードする。「win_amd64」がパソコンのビット数を指し、「cp36」がpythonのバージョンを指している。ここが自分の環境に合ったものをダウンロードする。~
その後、ダウンロードファイルを、さきほどコマンドプロンプトを開いた際に表示されたフォルダに保存する。例えば、C:\Users\user>と出たなら、user直下に保存する~
~
+インストール
ダウンロードしたので、インストールする。コマンドプロンプトを呼び出し、~
 python -m pip install TA_Lib‑0.4.17‑cp36‑cp36m‑win_amd64.whl
と打ち込む。(TA_Lib以下を自分がインストールしたものに書き換えるのを忘れずに)~
 Successfully installed ~~~
と表示されたら完了。

**3.プログラム [#w1f9b1e4]

以下のフォルダに、システムのプログラムなどがある。~

''----------''

#ref(MT5.zip)

''----------''

ダウンロードしたら、解凍して

C:\Users

の中に「xi」というフォルダを作りそこに解凍したものを置いておく。

フォルダの中は

- ''in_dat''
-- ''&color(green){common.csv};''
-- ''tick.csv''
-- ''USDJPY1M.csv''
-- ''long''
--- ''OHLCV_long.csv''
--- ''OHLCV_long_AROON.csv''
--- ''...''
-- ''short''
--- ''OHLC_short.scv''
--- ''OHLC_short.csv''
--- ''...''
- ''out_dat''
-- ''Entry_long.csv''
-- ''Entry_short.csv''
-- ''Position.csv''
-- ''rule.csv''
-- ''Strategy.csv''
-- ''long''
--- ''opt''
--- ''para''
-- ''short''
--- ''opt''
--- ''para''
- ''src''
-- ''&color(red){tick_data.py};''
MT5を介してTickを取得するプログラム
-- ''indi''
各インジケータごとに,パラメータを最適化するプログラム
--- ''&color(red){indi_AROON.py};''
--- ''&color(red){indi_BBAND.py};''
--- ''&color(red){indi_CCI.py};''
--- ''&color(red){indi_DMI.py};''
--- ''&color(red){indi_EMA.py};''
--- ''&color(red){indi_MACD.py};''
--- ''&color(red){indi_MFI.py};''
--- ''&color(red){indi_MOM.py};''
--- ''&color(red){indi_ROC.py};''
--- ''&color(red){indi_RSI.py};''
--- ''&color(red){indi_STOCH.py};''
--- ''&color(red){indi_TRIX.py};''
--- ''&color(red){indi_TSF.py};''
--- ''&color(red){indi_ULTOSC.py};''
--- ''&color(red){indi_WillR.py};''
-- ''&color(red){rule_generator.py};''
最適なルールを選択するプログラム
-- ''&color(red){auto_trade.py};''
MT5上で取引を行うプログラム

&br;

***プログラムを修正する [#u8a66422]

上記で''&color(red){あかで書かれているプログラム};''は、
「in_dat」内や「out_dat」内のcsvファイルを書き込んだり、読み込んだりするときに、絶対パスを使ってある。

C:\Users\xi\MT5\

となっているので、先ほど「xi」というフォルダを置いた場所と同じになっているはずである。

**&color(pink){4.MT5の準備}; [#h0de6286]

以下のファイルをダウンロードする

#ref(initmql4.mqh)
#ref(stdlib.mqh)
#ref(stderror.mqh)
#ref(Trade.csv)
#ref(TradeAI.mq5)
#ref(MQL5.zip)

MT5用のファイルの置き場所を下記に示す

まず、MT5を起動し、左上のファイルからデータフォルダを開くを押す。
#ref(1.png,,30%)
そのあと、開いたフォルダの

MQL5→includeにinitmq4.mqh、stdlib.mqh、stderror.mqhの三つを入れる。

MQL5→scriptsにTradeAI.mq5を入れる。

MQL5→FilesにTrade.csvを入れる。

demo.pyの場所は任意で大丈夫。

これでファイルの配置は終了。

次に、TradeAI.mq5のコンパイルを行う。

以下の画像のものを立ち上げる。
#ref(2.png,,50%)~

ナビゲーターのscriptsからTradeAI.mql5を開く。
#ref(3.png,,30%)~

また、修正が2か所あるため以下に示す。~

①17行目から25行目までの「extern」を消す。~

#ref(4.png,,30%)~

②402行目と420行目の{0}の中の0を消す。~

#ref(5.png,,30%)~

以下の画像のようになればコンパイルを行う。~

#ref(6.png,,30%)~

これでファイルのコンパイルは終了

次にUSDJPYのチャートを表示する
#ref(7.png,,30%)
次にTradeAIをUSDJPYに入れる。

※もし、ウィンドウが出てきたらで自動売買の許可にチェックを入れる。
#ref(8.png,,30%)

その後、上のタブからツール→オプションで下記の画像の箇所にチェックを入れ、OKを押す。
#ref(9.png,,30%)

これでMT5の設定は終わり。

次にpythonのdemo.pyをテキストエディタなどで開き、Trade.csvのディレクトリを書き換える。

下記の画像の場所を自分に合ったディレクトリに変更する。~
#ref(10.png,,30%)

*システムを実行する~ [#ve0cd38a]

**1台のPCで実行する [#f1a958cf]

***&color(green){common.csv};を確認する [#v0a66716]

「''&color(green){common.csv};''」は,システムの動作を設定するものである.~
そのままでは,以下のようになっているはずである.~

#ref(common.jpg,,50%)

以下の項目の値が,次のようになっているか確認する.異なっているときは,変更する.~

・「''use_data''」:「''short''」または「''long''」~
インジケータを計算する期間を選択する~

・「''data_short''」/「''data_long''」:「''10S''」,「''1T''」など~
「use_data」が「short」のときは,「data_short」の値を,~
「long」のときは,「data_long」の値を期間として,インジケータの計算を行う

・「''indi_number''」:「''7''」または「''15''」~
計算を行うインジケータの数~
&color(red){インジケータの計算には,ある程度の処理能力を必要とする.};~
&color(red){「15」個は,相当のマシンパワーを必要とするので,基本的には「7」個でよい.};~

・「''trend_frag''」:「''2''」~

''1台のPCで実行するときは,上記の画像のままでよい.''~

*** 各プログラムを実行する [#g8df52b0]

各プログラムを,以下のとおり,''&color(red){順番に};''実行する.~

――――――――――――――~

''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''~

――――――――――――――~

** 2台のPCで実行する [#zb6967f9]

このシステムでは,PCを2台使い,インジケータの計算に用いる期間を,~
一方で長期,もう一方で短期にし,それによって出力されるcsvファイルを,LANを介して共有することで,~
長期と短期を組みあわせた取引を行うことができる.~

*** ''&color(skyblue){短期側};'':ファイルをLAN上で公開する [#g34e8jgf]

まず,短期側と長期側が,どちらとも同じルータに接続されていることを確認する.~

「エクスプローラ」を開き,フォルダ「MT5」で右クリックし,~
「''アクセスを許可する''」から「''特定のユーザ...''」に進む.~

#ref(01.jpg,,50%)

「共有する相手」から「''Everyone''」を選択し,「''追加''」する.~

#ref(02.jpg,,50%)

さらに,「Everyone」の「アクセス許可レベル」を「''読み取り/書き込み''」にし,~
「''共有''」する.~

#ref(02-1.jpg,,50%)

「ユーザのフォルダーは共有されています.」と表示されたら,完了である.~
ここで,''以下の画像で,オレンジの枠で囲われたパスは,のちに使うため,''~
''転記しておくとよいだろう.''~

#ref(03.jpg,,50%)

&br;

*** &color(orange){長期側};:共有されたフォルダにアクセスできるか確認する [#k93b98d7]

''「Windows」+「R」''を押し,~
「ファイル名を指定して実行」で,上記で転記したパスを入力する.~

#ref(04.jpg,,70%)

「ネットワーク資格情報の入力」を求められるため,~
通常どおり,''&color(skyblue){短期側};''でデスクトップにログインするときの,''ユーザ名''と''パスワード''を入力する.~

#ref(05.jpg,,50%)

エクスプローラで,''&color(skyblue){短期側};''に保存されているフォルダ「MT5」が,~
''&color(orange){長期側};''から閲覧できれば,完了である.~

#ref(06.jpg,,50%)

&br;

*** &color(orange){長期側};:プログラムを修正する [#d2a6e4e0]

以下のプログラムの,以下の行にある絶対パスのうち,~
「MT5」以上を,''&color(skyblue){短期側};''の絶対パスに変更する.~

・''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''行目)~

たとえば,以下の画像のように変更する.~

#ref(07.jpg,,70%)

&br;

*** &color(orange){長期側};:&color(green){common.csv};を確認する [#sf86fb01]

&color(green){common.csv};のうち,以下の項目の値が,~
次のようになっているか確認する.異なっているときは,変更する.~

・「use_data」:「''long''」~
・「data_short」:「''10S''」~
・「data_long」:「''1T''」~
・「indi_number」:「''7''」~
・「trend_frag」:「''1''」~

*** &color(skyblue){短期側};:&color(green){common.csv};を変更する [#oc3c6221]

&color(green){common.csv};のうち,以下の項目の値が,~
次のようになっているか確認する.異なっているときは,変更する.~

・「use_data」:「''short''」~
・「data_short」:「''10S''」~
・「data_long」:「''1T''」~
・「indi_number」:「''7''」~
・「trend_frag」:「''0''」~

*** &color(skyblue){短期側};・&color(orange){長期側};:各プログラムを実行する [#d3acc759]

各プログラムを,&color(skyblue){短期側};と&color(orange){長期側};それぞれにおいて,~
以下のとおり,''&color(red){順番に};''実行する.~

――――――――――――――~

''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''~

――――――――――――――~



トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS