【EasyLanguage⑩】ストラテジー | 移動平均線交差/モーメンタム交差【トレードステーション】

Cute retro robot isolated on white background. 3D rendering image with clipping path.

どんどん基本的なストラテジーをEasyLanguageでコードして練習していきましょう。今回はよくある移動平均とモーメンタムを使って長期と短期の線が交差したらエントリーやエグジットするストラテジーを書いてみましょう。

移動平均交差(いわゆるゴールデンクロス・デッドクロス)

短期移動平均線が長期起動平均線を上抜いたら買い、下抜いたら売り。ポジションを保持してから任意の足数経過後、任意の含み益に到達していなければ、ポジションを決済する。

エントリーしてからの経過足数を返す予約語はBarsSinceEntryです。現在のポジションの含み益はOpenPositionProfitです。

Input: HoldLen(4), MinProfit(5000), SLen(5), LLen(25);

Vars: ShortMA(0), LongMA(0);

ShortMA = Average(Close, SLen);

LongMA = Average(Close, LLen);

If ShortMA crosses over LongMA then

Buy next bar at market;

If ShortMA crosses under LongMA then

SellShort next bar at market;

If BarsSinceEntry > HoldLen and OpenPositionProfit < MinProfit then begin

Sell next bar at market;

BuyToCover next bar at market;

end;

MRO(MostRecentOccurrence)関数

MRO は Most Recent Occurrence の略で「直近に発生した事象」という意味です。MRO 関数は任意の条
件下で発生した事象を捉えることができる関数です。次の 3 つのパラメータを持ってい
ます。

MRO(事象, 期間, 事象の順番)

事象には真偽式が入ります。期間は事象の発生を確認する現在の足を含めた足数が入り
ます。事象の順番には、発生した事象の順番を指定する数値が入ります。例えば、1 で
あれば直近に発生した事象、2 であれば直近から 2 番目に発生した事象、という意味で
す。
期間内に事象の順番目の事象が発生していれば、関数は事象が発生した経過足数を返し
ます。期間内に事象の順番目の事象が発生していなければ、関数は-1 を返します。

例えば、MRO(Close > Open, 3, 1)というMRO関数について考えてみましょう。

上記例は、現在の足を含めて 3 足の中で、終値が始値より高いという事象が 1 度でも発
生しているかどうかを確認することができます。つまり、現在の足を含めて 3 足連続で
終値が始値より高くない場合に-1 を返します。もし、現在の足を含めて 3 足の中で終
値が始値より高い事象が、現在の足の 1 足前で発生している場合、1 を返します。また
もし、現在の足を含めて 3 足の中で終値が始値より高い事象が、現在の足で発生してい
る場合、0 を返します。

モメンタム交差

10日前と比較したモメンタムが現在の足を含めて 4 足連続で 0 を下回っておらず、現在の足で 0 を上抜いたとき現在足の終値で指値買い、またはモメンタムが現在の足を含めて 4 足連続で 0 を上回っておらず、現在の足で下抜いた時に現在足の終値の指値で売る。モメンタムが 2 足連続で下降したら決済売り、2 足連続で上昇したら決済買いを行う。

Input: Length(10);

Vars: Mom(0), MomPlus(0), MomMinus(0);

Mom = Momentum(Close, Length);

MomPlus = Mom > 0;

MomMinus = Mom < 0;

If MRO(MomPlus, 4, 1) = -1 and Mom > 0 then

Buy next bar at Close of this bar limit;

If MRO(MomMinus, 4, 1)  = -1 and Mom < 0 then

SellShort next bar at Close of this bar limit;

If Mom < Mom[1] and Mom[1] <Mom[2] then

Sell next bar at market;

If Mom > Mom[1] and Mom[1] > Mom[2] then

BuyToCover next bar at market;

指値は limit を付けるといいだけです。したがって at Close of this bar limit は現在足の終値を指値としてという意味になります。他の表現では + .5 limit などの表現も有効です。

参考文献:

  1. マネックス証券 ホームスタディーコースPDF

シェアする

  • このエントリーをはてなブックマークに追加

フォローする