https://s3-us-west-2.amazonaws.com/secure.notion-static.com/eef02574-a671-4969-adeb-062aefa09a14/chart3.png

モメンタムは、現在のバーの終値が、一定本数前のバーの終値からどう変化したかを表す指標です。変化がなければ100、上昇すれば100を上回り、下落すれば100を下回ります。

一定本数前のバーの終値から上昇しているときに買いシグナル、下落しているときに売りシグナルを出します。

仕掛けシグナル

<aside> 💡 買いシグナル:1本前のモメンタムが100を上回ったとき 売りシグナル:1本前のモメンタムが100を下回ったとき

</aside>

コード

//共通ライブラリ
#include "LibEA.mqh"

sinput double Lots = 0.1; //売買ロット数

//ティック時実行関数
void Tick()
{
   int sig_entry = EntrySignal(); //仕掛けシグナル
   //成行売買
   MyOrderSendMarket(sig_entry, sig_entry, Lots);
}

input int MomPeriod = 20; //モメンタムの期間

//仕掛けシグナル関数
int EntrySignal()
{
   //1本前のモメンタム
   double mom1 = iMomentum(_Symbol, 0, MomPeriod, PRICE_CLOSE, 1);

   int ret = 0; //シグナルの初期化

   //買いシグナル
   if(mom1 > 100) ret = 1;
   //売りシグナル
   if(mom1 < 100) ret = -1;

   return ret; //シグナルの出力
}

説明

モメンタムは、iMomentum()というテクニカル指標関数で求められます。

モメンタムの期間として、別途宣言した変数MomPeriodを引数periodに代入します。

1本前のモメンタムmon1100の大小関係でシグナルを判定します。