FC2ブログ

EAと機械学習

EA作成中
08 /16 2019
最近は、平均足、ブレイクアウト(ストキャスティクス)、プライスアクションを軸にEA、インジケータ作成を進めているのですが、なかなか安定するロジックができていません。
近頃の不安定な株式、為替ではEAに厳しい状況ですしね。テスト運用してもボロボロです。

少し前からEA作成を方向転換しようとしています。

EAに機械学習を組み込む!

もうAIを使っているというEAはありますが、なかなか難しいです。
MT4で機械学習を動かすには色々「壁」があります。
  • MT4の言語は「MQL4」
  • 機械学習に使われる言語は「Python」
  • MT4は基本VPS、それも非力なサーバーで動作している
  • 機械学習は学習コストが大きい→CPUパワーが要る
  • 機械学習ライブラリにはライセンスがある(ことが多い)
  • 機械学習ライブラリはサイズが大きい

他にもあるのですが、解決するためには、
自分で1から機械学習プログラムを作成する!( ̄□ ̄;)
自分で作成すると、
  • ライセンスは気にしなくていい
  • プログラムサイズが小さい
  • いろいろ自由自在

ただし、大変( ̄へ ̄|||) 
方針としては、自作機械学習ライブラリをDLLにして、MT4から呼び出して予測させる!
(きっと)王道ですね。

機械学習と言っても

いろいろあります。
今は、ニューラルネットワーク(ディープラーニング)全盛という雰囲気ですが、それ以前の機械学習もまだまだ使われているようです。
ニューラルネットワークを作成するのは敷居が高すぎるので、他の手法を比較してみました。
  • ロジスティック回帰
  • デシジョンツリー(分類、回帰)
  • サポートベクターマシン(分類、回帰)
  • ランダムフォレスト(分類、回帰)
  • ブースティング(分類、回帰)

基本的に回帰と分類があります。
回帰はEAで考えると、今の情報から価格を推測することです。
例えば現在終値が104円では、明日の終値は105円になるとかですね。
(ざっくりしすぎw)

分類(クラス分類)は、今の情報からカテゴリー分けすることです。
例えば現在終値が104円では、明日の終値は1円上がるとかです。
ちょっとわかりにくいですが、
  1. 24時間以内に100PIPS上がる
  2. 24時間以内に100PIPS下がる
  3. 24時間以内に上下100PIPSは動かない
EAに当てはめると、このようにカテゴリー分けして、予測させます。
(本当はクラス分類には予測という観点はないですw)

回帰よりも分類のほうがEAには性格が合っていそうなので、分類をすることにして・・・
さてデシジョンツリー、サポートベクターマシン、ランダムフォレスト、ブースティングのどれがいいのか。

調べてみると回帰精度から比較すると、
  1. サポートベクターマシン
  2. ブースティング
  3. ランダムフォレスト
  4. デシジョンツリー

作りやすさから比較すると、
  1. デシジョンツリー
  2. ランダムフォレスト
  3. ブースティング
  4. サポートベクターマシン

全く逆の結果ですが、機械学習の勉強が目的ではなく、EA作成が目的なので作成難度から「ランダムフォレスト」をターゲットにします。

EAへ組み込むには

EAに組み込むにはいろいろ問題があります。
  • C++でDLLを作成する必要がある(Pythonではない)
  • 運用時には学習できない(CPUパワーがない)
  • 学習モデルを保存、ロードする必要がある
  • 時系列データをどう扱うのか?
  • 時系列を考えて入力するデータは何にするのか?
大きな問題は、学習モデルを保存、ロードすることと、時系列データの扱いですね。

機械学習をPythonで実装している人は少なからずいますが、学習モデルの保存、ロードはサンプルが全く転がっていないww
そして、時系列データの扱いはRNN(再帰型ニューラルネットワーク)という優れたディープラーニング手法があるので、他の手法では実験的に試している程度のサンプルしかありません。
だからといって出来ない訳ではない!
b( ̄- ̄;)

どういう入力データにするかが問題ですね。

問題はいろいろ

問題はありますが、機械学習をEAに組み込む方針はできました。
大きな問題の学習モデルの保存、ロード、時系列データの扱いの方針が整えば、実装に入っていけます。

機械学習は本当にFXに有効なのか・・・時間をかけて作るのだから、絶対にFXに有効になるようにしないと!
がんばろう・・・o( ̄ー ̄;)ゞ

パペ太

パペ太は自動人形(EA)を操るという意味で、puppeteer(人形遣い)から付けました。
高収益のEAを目指して日々悩んでいます。