技術資料

目次 

売買ルールの基礎知識 

1. 目標 

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

2. 【Windows】pythonのパッケージとMT5のインストール 

以下のサイトを参考にして行った。
参考サイト第九回 MT5とPythonを連携してみよう!

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

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

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

sudo apt install python3-pip

でインストール.

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

pip install MetaTrader5

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

今回インストールが必要なのは、

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

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

下記のリンクでインストールするものはアプリ
MetaTrader 5をダウンロードしましょう

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

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

3. TA-Libのインストール 

参考サイトWindows環境のPythonでTA-Libを使えるようにする

  1. 環境の確認 まず、使っているパソコンが何ビットなのを確認する。
    「スタート」→「コントロールパネル」→「システムとセキュリティ」→「システム」
    ここに書いてある「システムの種類」が32ビットなのか64ビットなのかを覚えておく。
    次に、使っているpythonのバージョンを確認する。コマンドプロンプトを呼び出し、
    python -V
    と入力するとpythonのバージョンが確認できる。

  2. ダウンロード コンパイル済みのTA-Libをダウンロードします。
    Unofficial Windows Binaries for Python Extension Packages
    上記の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直下に保存する

  3. インストール ダウンロードしたので、インストールする。コマンドプロンプトを呼び出し、
    python -m pip install TA_Lib‑0.4.17‑cp36‑cp36m‑win_amd64.whl
    と打ち込む。(TA_Lib以下を自分がインストールしたものに書き換えるのを忘れずに)
    Successfully installed ~~~
    と表示されたら完了。

4. MT5で自動取引を行う~準備~ 

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

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

[pythonのファイル]

[MT5のファイル]

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

まず、MT5を起動し、左上のファイルからデータフォルダを開くを押す。

1.png

そのあと、開いたフォルダの

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

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

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

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

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

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

以下の画像に従う。

2.png
3.png

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

次にUSDJPYのチャートを表示する

11.png

次にTradeAIをUSDJPYに入れる。

※もし、ウィンドウが出てきたらで自動売買の許可にチェックを入れる。

12.png

その後、上のタブからツール→オプションで下記の画像の箇所にチェックを入れ、OKを押す。

5.png

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

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

下記の画像の場所を自分に合ったディレクトリに変更する。

pathchange2.png

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

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

6. MT5で自動取引を行う~実行~ 

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

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

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

実際に動作している状態の画像を下記に載せる。

7.png
8.png

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

7. MT5で自動取引を行う~結果~ 

【単純移動平均ゴールデンクロスの実行結果】 

9.png

2020/1/8の1:00~2020/1/8の16:00の間動かした結果 525.86円の損失だった。

10.png

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

8. 2020/11/04追加分 

大谷卒業研究 

以下はシステムの流れである.

  1. MT5からTickデータを取得,指定した時間足ごとにリサンプリングし,csvファイルに保存.
    dataget.png
  2. csvファイルから時間足データを取得し,15個のインジケーターそれぞれを同時に最適化,最適なパラメータをそれぞれ保存.
    paraopt.png
  3. 全てのパラメータにおける最適な値をファイルから取得,そのパラメーターを使用し直交表に基づいた16個のルールについてバックテスト,そのときの評価指標を取得.
    直交表と評価指標を回帰分析しそれぞれのインジケーターの主効果を算出し,それらをもちいて2^15通りの組み合わせに対して評価の予測値を算出.
    全ての評価値を用いて最適なルールの組み合わせを選択する.
    ruleselect.png
  4. 最適なルールの組み合わせで実際に売買を行う.

以下は全てのプログラムが入ったファイル.

#ref(): File not found: "MT5.zip" at page "MetaTrader5とPythonによる自動売買"

1.データ取得 

PythonやMT5等のインストール方法は上記のゼミ引き継ぎ内容と同じ.
Pythonのライブラリは必要なものは少し変わっているため,自分がプログラム内で使用しているもの全てをを以下に示す.

Python標準搭載のものもあるが,インストールが必要なものもあるので各自インストールする.

以下プログラムの説明


コードの細かい説明はコード内にコメントしてあるの見てください.

tickdata.pyの流れは以下のようになっている.

  1. MT5からTickデータを取得し,Tickデータに付随している時間の中でsecが変わったらデータフレームにticks_frameに保存.
  2. 指定秒足(10S,30S,1M,5M,30M,4H)でリサンプリングしticks_frame2〜7へ保存,それぞれの新しい行が増えたら最後から1つ前の行を別のデータフレームtick_10s〜4hに保存.
  3. tick_10s〜4hをcsvファイルに保存(インジケータの数だけ同じデータをcsvファイルの名前を変えて保存).

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

2.パラメータの最適化 

コードの細かい説明はコード内にコメントしてあるの見てください.

各インジケーターの最適化プログラム(indi_@@@.py)の流れは以下のようになっている.

  1. それぞれのインジケーターの名前が入ったcsvファイル(OHLCV_10S_@@@.csv)からOHLCVデータを取得
  2. Backtesting.pyをもちいてそれぞれのインジケーターの計算に必要なパラメータ(期間等)と,tpとslの幅に利用するATRの計算に必要な期間・適用時の倍率を最適化する.
  3. 最適化したときのパラメータの結果をcsvファイル(para_@@@.csv)に保存.

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

3.最適なルール選択 

コードの細かい説明はコード内にコメントしてあるの見てください.

Backtest_rule.pyの流れは以下のようになっている.

  1. それぞれのインジケーターの最適なパラメータの結果をcsvファイル(para_@@@.csv)から,OHLCVデータをOHLCV_10S_RULE.csvから取得.
  2. L15直交表をもちいて16通りのルールを作成(1なら使用,0なら使用しない),それぞれのインジケーターの計算には先ほど取得した最適なパラメーターを使用.
    L15.png
  3. 16個のルールでバックテストを行い,その結果得られた評価指標の値をそれぞれデータフレームに保存.
  4. 直交表と評価指標のデータフレームで回帰分析を行い,インジケーターごとの主効果を算出.
  5. 2^15個全ての組み合わせの直交表を作成,その直交表と主効果をまとめたデータフレームを使って全ての組み合わせにおける評価指標の予測値を算出.
  6. 最適な組み合わせを選択し,そのときのデータフレームのindex(15桁の2進数を10進数にした値と同じ)の値をcsvファイルに保存.

4.トレード 


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS