#author("2024-01-12T06:14:43+00:00","","")
#author("2024-02-18T23:17:41+00:00","","")
[[由利恵]]
#八十住さん
#大谷さん,八十住さん

*目次 [#tabb1af2]
#CONTENTS
*MetaTrader5とPythonによる自動売買 [#f43b914f]

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

**1. 目標 [#i67428c5]
FXのTick情報を収集し、データを用いてテクニカル分析を行い、オンラインのデモトレードで利益や損失を確定していく。

**2. pythonのパッケージのインストール[#kbde4fb5]

プログラムの見やすさや、実行のしやすさにおいて、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
でインストール.

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

 pip install MetaTrader5

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

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

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


**3. MT5のインストール [#ce823f6f]

以下のサイトから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の左上のファイル→デモ口座を開くから残高を増やすことができる

**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 ~~~
と表示されたら完了。

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


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

今回使うファイルは5つあり、一つ目がpythonのファイルで、残りはMT5用のファイルである。

[pythonのファイル]~
#ref(demo.py)

[MT5のファイル]
#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%)~


**5. MT5で自動取引を行う~プログラムの説明~ [#ma1025ac]

demo.pyのコード内でできる限りコメントアウトしてるので、そこを参考にして欲しい。

**6. MT5で自動取引を行う~実行~ [#ma1025ac]

MT5を起動した状態でdemo.pyをコマンドプロンプトから実行することで、自動売買が開始される。

上記写真で用いている、Visual Studio Codeで実行する場合右上の緑△ボタン押すことで自動でターミナルが起動され、プログラムを実行できる。

売買の時の音が気になる場合は、MT5画面上のツールタブ→オプション→イベントの音声アラートを有効にするのチェックを外す。~



実際に動作している状態の画像を下記に載せる。
#ref(11.png,,30%)
#ref(12.png,,30%)

Ctrl+T上記写真の赤線で囲われた取引履歴などを見るツールボックスが表示される。~

また、MT5を閉じると新しいウィンドウで立ち上がるので、~

[[チャートのプロファイル(組表示)を保存・適応・削除する方法:https://myforex.com/ja/mt5guide/chart-profiles.html]]

を参考にウィンドウの保存を行っておく。~

チャートは表示されるがナビゲーターなどが立ち上げるたびに消える時は、「全画面表示」を消す。~

#ref(13.png,,30%)
 
**7. MT5で自動取引を行う~結果~ [#ma1025ac]
**8.単純移動平均ゴールデンクロスの実行結果 [#p2652c7b]

#ref(14.png,,30%)
2020/1/8の1:00~2020/1/8の16:00の間動かした結果
525.86円の損失だった。

#ref(15.png,,30%)
また、短期と長期の間隔を20秒、50秒から100秒、200秒に変更し同じ期間自動売買を行った結果、損失を421.5円減らすことができた。

*[[MT5長短期]] [#ked3a9e2]

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