#author("2024-12-04T07:35:34+01:00","","")
#author("2024-12-04T07:41:00+01:00","","")
[[辻]]

*実行の流れ [#e890b3d5]
*(1) [#e890b3d5]
 
Teamasのレネ研究室にアップロードしてある「データとるやつ」「インジケータ」「自動売買」「fx_trading_system」 4つ をダウンロードする。

ダウンロードしたやつらはDesktopにおいたほうがいい。 

そして、3つ


「データとるやつ」
「インジケータ」
「自動売買」

各 .py のディレクトリをfx_trading_systemがあるディレクトリに置換する。

「データとるやつ」10こ
「インジケータ」  70こ
「自動売買」      3こ


インジケータ\サーバー上のプログラム\MT5__銘柄\src\indi

に各銘柄ごとのインジケータが入っている。

下の画像みたいに、エクスプローラーのタブと、変えないといけないプログラムのタブを半々にして、プログラムを開いてくと楽。


合計83このプログラムを開いておいて、一気に置換していく。



ここで、

Ctrl + s  で保存も忘れずに。(画像バカでかいわ。画像クリックしたら見やすい。あと画像内では hop.ipynb と step.ipynb を開いているけど関係ない)

#ref(スクリーンショット (158).png)





*(2) [#e890b3d5]

※ここからはプログラムを同時に実行する。

「データとるやつ」のなかのプログラムを一つ実行する。TypeERRORがでたらMT5に銘柄がないので追加する。銘柄は、プログラムを開いたら見れるので、それで確認。

注意!!!!

cop_data.py , oil_data.py は銘柄の名前が変わっている。(2024/12/04)  
 
なので  cop → HGCOP-MAR25 , oil → OILCash にする。
なので、銘柄のところを、元々の銘柄から

  cop_data.py → HGCOP-MAR25 , oil_data.py → OILCash にする。

実行したら最初は、うまく動かないが、時間を置いたらいける。


AttributeErrorがでたら、だいたいPandasのバージョンが違う。


はじめは、module が入ってないから片っ端から入れていく。


ここで Python311 と Python312 の二つ入っている人のために下のコマンド


Pythonのバージョンを特定してpipインストールするコマンド



py -3.?? -m pip install ________  (??は 11 か 12)



下の3つは書いてあるバージョンで pip install する

numpy                    1.26.2 ,
pandas                   1.3.5 ,
TA-Lib                   0.4.32 ,

*(3) [#e890b3d5]

「データとるやつ」で実行した銘柄に、対応した「インジケータ」の中のプログラムを全部実行する。

例) 「データとるやつ」→ cop_data.py なら 、C:\Users\tsuji\Desktop\インジケータ\高田のです\サーバー上のプログラム\MT5_cop\src\indi

*(4) [#e890b3d5]

「自動売買」の causal.py →  buysell.py →  Trade.py  の順で実行する。


*(5) [#e890b3d5]
完成形
#ref(Figure_1.png)


*目次 [#e890b3d5]

#CONTENTS

**[[売買ルールの基礎知識]] [#o4c5ab32]

**1. 目標 [#i67428c5]
FXや金,株価のtickを取得しそれらから時間足データを作成する.時間足データを用いて
テクニカル分析,グレンジャー因果性分析をすることでオンラインのデモトレードを行う.

**2 wsl [#kbde4fb5]
とりあえず、WSL2のインストールから始める。

管理者権限でPowerShellを開き、次のコマンドを入力する。
 dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

次に、同じくpowershellでwindowsのどのシステムを使用しているか次のコマンドで確認する。
 systeminfo | Select-String  "システムの種類"

コマンドプロンプトの場合はこれ
 systeminfo | find "システムの種類"



次にwindowsのバージョンを確認する。バージョンとビルド番号を確認するには、 Windows ロゴ キー + R キー を押して、「 winver 」と入力し、 [OK] を選択します。 (または、Windows コマンド プロンプトで ver コマンドを入力します)。 一つ前の手順で調べたシステムに必要な最新の Windows バージョンを満たしてない場合、更新します。
-x64 システムの場合: バージョン 1903 以降、 ビルド 18362 以上。
-ARM64 システムの場合: バージョン 2004 以降、 ビルド 19041 以上。
-18362 より前のビルドは WSL 2 をサポートしていません。 Windows 更新アシスタントを使用して、お使いのバージョンの Windows を更新します。Windows 10 バージョン 1903 または 1909 を実行している場合は、Windows メニューから [設定] を開き、[更新とセキュリティ] に移動して、[更新プログラムのチェック] を選択します。 ビルド番号は、18362.1049+ または 18363.1049+ で、マイナー ビルド番号は .1049 より大きい必要があります。windowsのマイナービルド番号を満たしていない場合は、windowsマークをクリックして、歯車マークをクリックして設定を開きWindows Updateを行う。

WSL 2 をインストールする前に、" 仮想マシン プラットフォーム " オプション機能を有効にする必要があります。管理者として PowerShell を開き、以下を実行します。

 dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

お使いのパソコンを&size(20){&color(red,white){再起動};};して WSL のインストールを完了し、WSL 2 に更新します。

次にWSL2Linuxカーネル更新プログラムパッケージをダウンロードする。システムがx64の場合はx64、ARM64の場合はARM64をクリックする。

[[x64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi]]

[[ARM64:https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi]]

ダウンロード後、ダウンロードしたファイルを実行する。

次に、次のコマンドで、新しい Linux ディストリビューションをインストールする際の既定のバージョンとして WSL 2 を設定します。

 wsl --set-default-version 2

次に、Ubuntu 20.04 LTSをMicrosoft Storeからインストールする。
下のリンクに行って入手を選択する。

[[Ubuntu 20.04 LTS:https://www.microsoft.com/store/apps/9n6svws3rx71]]

複数のデバイスで使うか聞かれたら必要ないと答える。

その後、起動し、ユーザー名とパスワードを設定する。もちろん、どちらも覚えるか記録しておく。

このユーザー名およびパスワードは、インストールする Linux ディストリビューションごとに固有であり、Windows ユーザー名とは関係ありません。
ユーザーがユーザー名およびパスワードを作成すると、そのアカウントがディストリビューションの既定のユーザーとなり、起動時に自動的にサインインされます。
このアカウントは、Linux 管理者と見なされ、sudo (Super User Do) 管理コマンドを実行できます。





**3. 【Windows】pythonのパッケージとMT5のインストール[#kbde4fb5]
-MacはMT5が対応していないため、Windowsで作業を行う。~
(以下のサイトのようにしてMacでもできないことはないが、Windowsがあるならそっちで始めた方が早い)~
参考サイト[[Mac OSでのプラットフォームのインストール:https://www.metatrader5.com/ja/terminal/help/start_advanced/install_mac]]

以下のサイトを参考にして行った。~
参考サイト[[第九回 MT5とPythonを連携してみよう!:https://metaquotes.co.jp/2019/07/01/blog09/]]

pythonは予めインストールされているものとする。~
また、プログラムの見やすさや、実行のしやすさにおいて、visual stdio codeを使ってpythonを書くのがおすすめ。~

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

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

Win10ではコマンドプロンプトを起動し、必要なライブラリをインストールする。
インストールの仕方はコマンドプロンプトで~

 pip install MetaTrader5

のように入力してインストールする。

今回インストールが必要なのは、
-MetaTrader5
-pytz
-pandas
-numpy
-(mplfinance)

(インジケータの計算に利用するTA-Libはインストールの仕方が特殊なため、後述する)

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

下記のリンクでインストールするものはアプリ~
[[MetaTrader 5をダウンロードしましょう:https://www.metatrader5.com/ja/download]]~

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

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

**4. TA-Libのインストール [#hde192be]
参考サイト[[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 ~~~
と表示されたら完了。

**4. MT5で自動取引を行う~準備~ [#ma1025ac]


注意点として、口座番号は上記で作ったXMの口座IDである。

最初に自分が取引に使用する市場の気配値を表示させる.


※もし、ウィンドウが出てきたらで自動売買の許可にチェックを入れる。
#ref(木下さん卒論/MT5準備.png,,30%)

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

これでMT5はpythonを用いたオーダーリクエストに応じてくれるようになり、アルゴリズムトレードが可能になる。



*木下卒業研究 [#u1b391ed]

*プログラムの流れ  [#e890b3d5]
**1,データ取得 [#g329190e]
MT5から市場のtickデータを取得し,common.csvで指定した時間足ごとにリサンプリングを行いcsvに保存する.これらを各市場に対して行う.

#ref(木下さん卒論/15.png,,30%) 

tickdata.pyやgolddata.pyなどの流れは以下のようになっている.
+MT5からTickデータを取得し,Tickデータに付随している時間の中でsecが変わったらデータフレームにticks_frameに保存.
+指定秒足(10S,30S,1M)でリサンプリングしそれぞれのデータフレームへ保存,
+最新の時間足データが保存されたデータフレームを、次のインジケータのバックテストに使用するためにcsvファイルに保存する.

OHLCVが保存されたcsvは指定した行数に達すると,古い順から削除され最新のデータが入るようになっている

tickdata.pyやgolddata.pyはバックグラウンドで常に動かしておき,データを貯め続ける.


**2.パラメータの最適化 [#lcddfb22]
csvファイルから時間足データを取得し,使用するインジケーターそれぞれを同時に最適化,最適なパラメータをそれぞれ保存.すべての市場に対して行う

#ref(木下さん卒論/backtest.png,,30%) 


各インジケーターの最適化プログラム(indi_@@@.py)の流れは以下のようになっている.
+それぞれのインジケーターの名前が入ったcsvファイル(OHLCV_10S_@@@.csvやOHLCV_1T_@@@.csv)からOHLCVデータを取得
+Backtesting.pyをもちいてそれぞれのインジケーターの計算に必要なパラメータ(期間等)と,tpとslの幅に利用するATRの計算に必要な期間・適用時の倍率を最適化する.
+最適化したときのパラメータの結果をcsvファイル(para_@@@.csv)に保存.
+各時間足で最適化されたパラメータを用いた際の評価指標を比較し,一番良かった時間足とパラメータを選択する.

各indi_@@@.pyのプログラムはバックグラウンドで常に動かしておき,最適なパラメータを更新し続ける.

**3.市場間分析 [#lcddfb22]
円ドルや株価などの異なる市場間の分析を行う.時間足データを用いてグレンジャー因果分析また相関を求める.

#ref(木下さん卒論/市場間分析.PNG,,30%) 

causal.pyの流れとしては単位根検定,共和分検定を行った後に,グレンジャー因果分析に使用できると判断された市場データを用いてVARモデルを推定し
グレンジャー因果分析を行う。相関はすべての市場で求めて、因果性の有無と相関をまとめた情報をcausal.csvに保存する.

このプログラムもバックグラウンドで常に動かす.

詳しくは木下のところにある参考文献から勉強してください.
-[[参考文献:https://www.pu-toyama.ac.jp/IS/IIE/Wiki.IIE.IS.20211128.toyama.pu/lab_log/wiki_lab.php?%E5%8D%92%E6%A5%AD%E7%A0%94%E7%A9%B6%28%E6%9C%A8%E4%B8%8B%29#face3bc8]]


プログラムを実装するにあたり参考にしたサイトも張っておきます。
-[[pythonで時系列解析(因果推論):https://qiita.com/omuram/items/3d71881c5488d3aabd27]]

**4.各市場に出ている売買シグナルの抽出 [#lcddfb22]
バックテストにおいて時間足を選択しパラメータの選択を行った.今度はそれらが保存されたcsvを用いて最適な時間足のおけるパラメータを使用して現在の市場を分析した際,売買シグナルが出ているのかということを抽出する.

#ref(木下さん卒論/シグナル.png,,30%) 

画像のように各市場対する各インジケータのシグナルをcsvに保存する.これも常に動かす

**5.シグナルと市場間分析の結果を用いた取引 [#lcddfb22]

#ref(木下さん卒論/teian3.PNG,,30%) 

~
**order request [#g329190e]

https://metasys-seeker.com/index/%E6%A8%99%E6%BA%96%E7%9A%84%E3%81%AA%E5%AE%9A%E6%95%B0%E3%80%81%E5%88%97%E6%8C%99%E3%81%A8%E6%A7%8B%E9%80%A0%E4%BD%93/%E5%8F%96%E5%BC%95%E5%AE%9A%E6%95%B0/

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