今日は簡単な自作のストラテジー(決済のみ)を書いてみます。
トレードステーションに付属されている固定トレーリングストップ・固定ロスカットは金額ベースなので
今一つ使い勝手が良くないと感じるかと思います。
なので、株価の何%下がったらトレーリングストップあるいはロスカットを実行するというストラテジーが欲しくなりますね。
以下をコピーしてストラテジーで保存
ロスカット自動設定
[IntrabarOrderGeneration = true] inputs: Amount(2); vars: Amt(0); Amt = IntPortion(Close * (Amount / 100)); SetStopShare; SetStopLoss(Amt);
トレーリングストップ自動設定
[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:金額ベース(株価から一定金額以上の利益が発生したら、金額ベースに切り替える場合の値を設定。不要ならゼロ)
コード解説
IntrabarOrderGeneration とは、ティック(取引)発生時に毎回判定処理を行うかの設定になります。
trueの場合はティック(取引)発生時に毎回判定
falseにすると、チャートの足が確定したタイミングのみの判定となります。
IntPortionは計算結果の整数部のみ取り出す数式です。
SetStopLossあるいはSetPercentTrailingの前にあるSetStopShareは、
「計算を1株あたりで行う」ことを示す予約語となります。
他に「損益額で行う」ことを示すSetStopPosition という予約語がありますが
銘柄や状況によって保持する株数が異なってくると思いますので、計算が面倒になるでしょう。