決定木アルゴリズムを使った自動取引EAを作成
scikit-learnを使って決定木アルゴリズムにより自動取引させるEAを作ってみました。
BTCUSDの日足チャートで、チャート更新時に明日のOpen価格の上昇・下降を予測します。
上昇シグナル時は買いを入れ、もし買いポジションを持っていた場合は、そのまま保持します。
下降シグナル時は何もしません。もし買いポジションがある場合は決裁します。
コードの解説
iPySafeExec("import numpy as np");
iPySafeExec()
は引数である文字列をPythonコマンドとしてそのまま実行します。
iPySafeExec("for i in range(0, theNumberOfTrainAndKyoushiSet):\n train_X.append(data[1 + i:theNumberOfTrainData + 1 + i])\n train_y.append(int(0 < data[i]))");
Pythonはfor文やif文は改行で表してやるので、iPySafeExec()
に改行文字を渡さなければいけません。
改行文字をn\
として記述してやります。
iPyListAppendDouble("data", data);
iPyListAppendDouble()
は、EA内のdouble型配列をPython内のdouble型リストにコピーします。
upOrDownRatio=fPyEvalDouble("upOrDownRatio");
fPyEvalDouble()
は、Python内のdouble型変数をEA内のdouble型変数にコピーします。
取りあえずこれだけできれば大抵のことはできると思いますが、その他の関数に関してはOTMql4Pyのwikiサイトを参照のして下さい。
バックテストの実施
トレーニングデータ数:36、トレーニングデータと教師データのセット数:36で、期間2016-04-01から2015-08-6までのバックテスト結果です。
まあ、こんなもんでしょうね。
バックテストのトレード結果をチャートで見てみましょう。
上昇トレンドはうまくとらえてますが、レンジ相場では全然だめですね。
もっと勉強しましょう。