またろうのシストレブログ

マネックス証券が提供しているトレードステーションと、MT4などシストレ関連について色々書きます。株と自動売買、EasyLanguageについても。

トレーリングストップとロスカットを株価ベース(%)で設定する



今日は簡単な自作のストラテジー(決済のみ)を書いてみます。

トレードステーションに付属されている固定トレーリングストップ・固定ロスカットは金額ベースなので
今一つ使い勝手が良くないと感じるかと思います。

なので、株価の何%下がったらトレーリングストップあるいはロスカットを実行するというストラテジーが欲しくなりますね。
以下をコピーしてストラテジーで保存

ロスカット自動設定

[IntrabarOrderGeneration = true]

inputs: 
	Amount(2);

vars:
	Amt(0);

Amt = IntPortion(Close  * (Amount / 100));

SetStopShare;
SetStopLoss(Amt);

Amountにロスカット割合%(株価の何%下がったらロスカット実行)を設定ください。

トレーリングストップ自動設定

[IntrabarOrderGeneration = true]

inputs: 
	PropAmt(11), 
	TrailingPct(10),
	ProfitAmt(0);

vars:
	Amt(0);

Amt = IntPortion(Close  * (PropAmt / 100));

IF ProfitAmt <> 0 and Amt > ProfitAmt then Amt = ProfitAmt;

SetStopShare;
SetPercentTrailing(Amt, TrailingPct);

PropAmt:利益割合%(株価の何%上昇を利益目標とするか)を設定
TrailingPct:決済実行割合%(PropAmt成立後、何%下がったら決済するか)を設定
ProfitAmt:金額ベース(株価から一定金額以上の利益が発生したら、金額ベースに切り替える場合の値を設定。不要ならゼロ)

f:id:tsukinowaapp:20180618083200p:plain

コード解説

IntrabarOrderGeneration とは、ティック(取引)発生時に毎回判定処理を行うかの設定になります。
trueの場合はティック(取引)発生時に毎回判定
falseにすると、チャートの足が確定したタイミングのみの判定となります。

IntPortionは計算結果の整数部のみ取り出す数式です。

SetStopLossあるいはSetPercentTrailingの前にあるSetStopShareは、
「計算を1株あたりで行う」ことを示す予約語となります。

他に「損益額で行う」ことを示すSetStopPosition という予約語がありますが
銘柄や状況によって保持する株数が異なってくると思いますので、計算が面倒になるでしょう。