EAと機械学習
EA作成中
最近は、平均足、ブレイクアウト(ストキャスティクス)、プライスアクションを軸にEA、インジケータ作成を進めているのですが、なかなか安定するロジックができていません。
近頃の不安定な株式、為替ではEAに厳しい状況ですしね。テスト運用してもボロボロです。
少し前からEA作成を方向転換しようとしています。
EAに機械学習を組み込む!
もうAIを使っているというEAはありますが、なかなか難しいです。
MT4で機械学習を動かすには色々「壁」があります。
- MT4の言語は「MQL4」
- 機械学習に使われる言語は「Python」
- MT4は基本VPS、それも非力なサーバーで動作している
- 機械学習は学習コストが大きい→CPUパワーが要る
- 機械学習ライブラリにはライセンスがある(ことが多い)
- 機械学習ライブラリはサイズが大きい
他にもあるのですが、解決するためには、
自分で1から機械学習プログラムを作成する!( ̄□ ̄;)
自分で作成すると、
- ライセンスは気にしなくていい
- プログラムサイズが小さい
- いろいろ自由自在
ただし、大変( ̄へ ̄|||)
方針としては、自作機械学習ライブラリをDLLにして、MT4から呼び出して予測させる!
(きっと)王道ですね。
機械学習と言っても
いろいろあります。
今は、ニューラルネットワーク(ディープラーニング)全盛という雰囲気ですが、それ以前の機械学習もまだまだ使われているようです。
ニューラルネットワークを作成するのは敷居が高すぎるので、他の手法を比較してみました。
- ロジスティック回帰
- デシジョンツリー(分類、回帰)
- サポートベクターマシン(分類、回帰)
- ランダムフォレスト(分類、回帰)
- ブースティング(分類、回帰)
基本的に回帰と分類があります。
回帰はEAで考えると、今の情報から価格を推測することです。
例えば現在終値が104円では、明日の終値は105円になるとかですね。
(ざっくりしすぎw)
分類(クラス分類)は、今の情報からカテゴリー分けすることです。
例えば現在終値が104円では、明日の終値は1円上がるとかです。
ちょっとわかりにくいですが、
- 24時間以内に100PIPS上がる
- 24時間以内に100PIPS下がる
- 24時間以内に上下100PIPSは動かない
EAに当てはめると、このようにカテゴリー分けして、予測させます。
(本当はクラス分類には予測という観点はないですw)
回帰よりも分類のほうがEAには性格が合っていそうなので、分類をすることにして・・・
さてデシジョンツリー、サポートベクターマシン、ランダムフォレスト、ブースティングのどれがいいのか。
調べてみると回帰精度から比較すると、
- サポートベクターマシン
- ブースティング
- ランダムフォレスト
- デシジョンツリー
作りやすさから比較すると、
- デシジョンツリー
- ランダムフォレスト
- ブースティング
- サポートベクターマシン
全く逆の結果ですが、機械学習の勉強が目的ではなく、EA作成が目的なので作成難度から「ランダムフォレスト」をターゲットにします。
EAへ組み込むには
EAに組み込むにはいろいろ問題があります。
- C++でDLLを作成する必要がある(Pythonではない)
- 運用時には学習できない(CPUパワーがない)
- 学習モデルを保存、ロードする必要がある
- 時系列データをどう扱うのか?
- 時系列を考えて入力するデータは何にするのか?
大きな問題は、学習モデルを保存、ロードすることと、時系列データの扱いですね。
機械学習をPythonで実装している人は少なからずいますが、学習モデルの保存、ロードはサンプルが全く転がっていないww
そして、時系列データの扱いはRNN(再帰型ニューラルネットワーク)という優れたディープラーニング手法があるので、他の手法では実験的に試している程度のサンプルしかありません。
だからといって出来ない訳ではない!
b( ̄- ̄;)
どういう入力データにするかが問題ですね。
問題はいろいろ
問題はありますが、機械学習をEAに組み込む方針はできました。
大きな問題の学習モデルの保存、ロード、時系列データの扱いの方針が整えば、実装に入っていけます。
機械学習は本当にFXに有効なのか・・・時間をかけて作るのだから、絶対にFXに有効になるようにしないと!
がんばろう・・・o( ̄ー ̄;)ゞ