2つの値の片方が条件を満たした場合か両方が満たした場合か

アイキャッチ

真偽値をうまく使うことで様々な条件式を表現できる

タイトル見ても何のことかよくわからないと思いますので、例を用いて説明します。

トレード戦略を考える際に、ある2つの値(インジケーター等)のうち、値1が0を越えたら○○する、値2が0を越えたら○○する、どちらかが0を超えたら○○する、両方とも0を超えたら○○する、そもそもこの条件は使わない、と表現したいことがあると思います。

※”0を越えたら”の部分は他の文言に置き換えても構いません。

どのパターンが最も適しているか分からない時は、全パターンで試してみたくなるものです。

その時、1つのパターンをプログラミングしてはテストして、だと非効率ですし、機能としても決め打ちとなるため、汎用性に欠けます。

そこで、上記の条件式をうまく表現できる方法をご紹介します。

Val_KbnをEAのパラメータにしておき、その値で条件式を制御しています。条件が成立したら、フラグを立てます(真偽値を真trueにします)。

  • 0の場合:インジケーターを使わないので、無条件で条件が成立します。
  • 1の場合:val1が0を越えると条件が成立します。val2は無視です。
  • 2の場合:val2が0を越えると条件が成立します。val1は無視です。
  • 3の場合:val1かval2のどちらかが0を越えると条件が成立します。
  • 4の場合:val1とval2の両方が0を越えると条件が成立します。

条件の厳しさで言うと、左から厳しい順で「(厳)4 > 1 = 2 > 3 > 0(緩)」となります。

最後のif(val1_Flg && val2_Flg)は、val1とval2のフラグが両方とも立っている場合のみ、仕掛け等のアクションを行うことを意味します。

両方のフラグを必ず見るため、0~2の場合は、無視している値については強制的にフラグを立てていることに注目してください。

ブログランキングに参加中!

ポチっとクリック頂けると励みになります♪
(クリックしてもランキング一覧が表示されるだけですが、それでOKです)

  にほんブログ村 為替ブログ FX システムトレード派へ

コメントを残す



1 × three =