2024年6月17日月曜日

遺伝的アルゴリズム

MT4、MT5には、遺伝的アルゴリズムによる最適化機能が標準で搭載されています。

遺伝的アルゴリズムはAIの一種ですが、ディープラーニングとは異なります。

ほとんどの人が遺伝的アルゴリズムを使った経験はあるかもしれませんが、実際に活用している人はほとんどいないと思います。その理由は、遺伝的アルゴリズムが「使い物にならない結果」を選択することが多いためです。

遺伝的アルゴリズムは、「最適化パラメータ」を最適化の目標として選択します。最適化パラメータには、以下のようなものがあります。

  • Balance(残高)
  • Profit Factor(PF)
  • Expected Payoff(期待利得)
  • Maximal Drawdown(DD)
  • Drawdown Percent(DD%)
  • Custom(カスタム)

例えば、目標を残高にした場合、取引数が1で残高が最高の設定値を選ぶことがあります。しかし、このような設定値では実際に運用を行うことはできません。

最大ポジション数1で固定LOTのEAであれば、残高、PF、期待利得、DD、取引数のすべての指標を総合的に判断する必要があります。(複数のポジションを持つ場合や可変ロットの時はDD%です)

そこで、目標をCustomに設定し、OnTester()関数内でこれらすべての指標を使用した関数を用いて、遺伝的アルゴリズムに挑戦してみましょう。具体的な流れは以下の通りです。

  1. 残高、PF、期待利得、DD、取引数を取得する
  2. 各指標を正規化する
    ※最適化の途中では最大値、最小値はわからないので想定される最大値、最小値で正規化します
  3. 1で取得した値の平均二乗誤差からコスト(損失)を算出する
  4. コスト(損失)が低い設定値を選ぶために、1/コストを返す

各パラメーターを1つずつ最適化するか、すべてをまとめて遺伝的アルゴリズムで最適化するか、どちらの方法が再現性の高い、より利益を出せる設定値を作れるでしょうか

つづく(かも)

--------------------
追記
最適化の量が多い時はMT4からMT5にコンパイルしてMT5で最適化しましょう。
最適化時間が数分の1になります。


0 件のコメント:

コメントを投稿