解決済み

「乖離率」でエントリーしない

2025/01/28 18:11
173

乖離率を使ったエントリー条件を組んだのですが、

・「時間足」は15分足
・「計算期間」を300に設定
・「移動平均線種類」をSMAに設定
・「適用価格」は終値
・「乖離率<0.1」で買い

という条件にしてバックテストを行なったところ、一切エントリーしませんでした。

しかし、計算期間の数値を300以下に設定すると問題なくエントリーします。(ちなみに300以上の数値に設定すると一切エントリーしなくなる。)
また、数値を300以上に設定したとしても「移動平均線種類」をEMAに設定すると問題なくエントリーします。

これらの原因について分かりますでしょうか?

コメント

GogoJungle
2025/01/28 21:23

乖離率を計算する際の分母が0になり、乖離率が計算不能となっている可能性が高いと考えられます。
もしもバックテストを行った際、操作履歴に

zero divide in '(EA名)'

というログが出ているなら、原因はこちらであると考えてよいでしょう。

MT4のiMA関数はSMAモードで期間を長く設定すると計算結果が0になってしまうという性質があり、これはMT4自体の仕様のため残念ながら諦めるしかない状況です。

詳しい説明は省きますが、EMAは期間を長くとっても0とはなりません。

一方でSMAは(内部処理については確認することができないのであくまでエンジニアの私の予想ですが)

「各時点での価格の和をとり、それを期間で除す」
のではなく
「各時点での価格を期間で除したものを用意し、その和を取る」
という計算方法を用いているのでしょう。

後者では、期間が長いと足される各要素が0に極めて近い値となるため、微小量が0とみなされてしまう計算機による計算において、合計も0となってしまいます。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。