モメンタムは、現在のバーの終値が、一定本数前のバーの終値からどう変化したかを表す指標です。変化がなければ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本前のモメンタムmon1
と100
の大小関係でシグナルを判定します。