システムトレードの作り方 TOP > システムトレード上級編:利益目標からのトレイリングストップ >
シスつく1周年記念 エクセルファイル無料プレゼント メルマガキャンペーン開催中
利益目標からのトレイリングストップの作り方
前回、トレイリングストップを3つに分類しました。
今回は分類2の「利益目標からのトレイリングストップ」の作り方をご紹介します。
分類1の「いきなりトレイリングストップ」も今後ご紹介していきますが、まずは2から説明していきますね。
「利益目標からのトレイリングストップ」については、プロフィットリトレースメントストップなどと紹介されている書籍もありますがほとんど意味は同じです。利益の一部を市場へ返すことによって利益を伸ばそうという考え方です。
★利食いルール
移動平均クロスと標準偏差ストップを組み合わせたシステムトレードに、初期リスクをRとし、含み益が2Rを超えた次のタイミングから 、含み益の-10%の位置にトレイリングストップを置く。※2Rや-10%の数値には特に意味はなく僕の適当な数値です。
☆ 「利益目標からのトレイリングストップ」の作り方
以前に作成した移動平均クロスと標準偏差ストップを組み込んだシステムを開く。
1.初期リスクRを計算
・含み損益(W)と利食価格(X)の間に1列挿入する。
・X1に「R」と入力する
・初めて取引が発生した行(例ではX49)に、「=IF(K49="","",IF(AND(K49=1,L49="sell"),T49-J49,IF(AND(K49=1,L49="buy"),J49-T49,X48)))」と入力する。
これは、日数(K)が空白の時は空白、日数(K)が1、かつポジション(L)がsellだった場合、損切価格(T) - 約定価格(J) を表示する。日数(K)が1、かつポジション(L)がbuyだった場合、約定価格(J) - 損切価格(T)を表示し、それ以外は前日のR(X)を表示するという意味。
2.利食価格を変更
・Y2に「2.0」と入力する。これは利益目標2Rを意味する。
・初めて取引が発生した行(例ではY49)に、「=IF(K49="","",IF(AND(K49=1,L49="sell"),J49-X49*Y$2,IF(AND(K49=1,L49="buy"),J49+X49*Y$2,Y48)))」と入力する。
これは、日数(K)が空白の時は空白、日数(K)が1、かつポジション(L)がsellだった場合、約定価格(J) - 2.0R を表示する。日数(K)が1、かつポジション(L)がbuyだった場合、約定価格(J) + 2.0R を表示し、それ以外は前日の利食価格(Y)を表示するという意味。
3.入力した数式をデータ最終行までコピーする。
ここまでで利益目標を2.0Rにする作業が終了した。
ここから、いよいよトレーリングストップ部分の作成に入る。
まず、利食シグナル(AA)と損益(AB)の間に4つの列を挿入する。
1.仮のトレーリングストップ価格を計算
・AB1に「仮T価格」と入力
・AB2に「10%」と入力する。
・初めて取引が発生した行(例ではAB49)に、「=IF(AA48="利食い",IF(L49="buy",E48-(E48-J49)*AB$2,IF(L49="sell",E48+(J49-E48)*AB$2,"")),"")」と入力する。
これは、利食シグナル(AA)が利食いを表示する時、ポジション(L)がbuyを表示するなら、前日の終値 - (前日の終値 - 約定価格) × 10%を表示し、ポジション(L)がsellを表示するなら、前日の終値 + (約定価格 - 前日の終値) × 10%を表示し、あとは空白とするという意味。
2.トレイリングストップ価格を計算
・AC1に「T価格」と入力する
・初めて取引が発生する前日(例ではAC48)に、「'」と入力する。
・AC49に「=IF(OR(AE48<>"",V48<>""),"",IF(AB49="",AC48,IF(AA48="利食い",AB49,IF(L49="buy",IF(AC48<AB49,AB49,AC48),IF(L49="sell",IF(AC48>AB49,AB49,AC48),"")))))」と入力する。
これは、TRS(AE) が空白じゃない、もしくは損切シグナル(V)が空白じゃない場合は空白を表示し、仮T価格(AB)が空白の場合は、前日のT価格(AC)を、
利食いシグナル(AA)が利食いの場合は、仮T価格(AB)を、
ポジション(L)がbuyで、前日のT価格(AC)より仮T価格(AB)が大きかった場合、仮T価格(AB)を、小さかった場合前日のT価格(AC)を、
ポジション(L)がsellで、前日のT価格(AC)より仮T価格(AB)が小さかった場合、仮T価格(AB)を、大きかった場合前日のT価格(AC)を、それ以外は空白を表示するという意味。
かなり長い数式になってしまった(苦笑)
3.トレイリングストップ時の利益額を計算
・AD1に「T額」と入力する
・AD49に「=IF(AND(AC49<>"",L49="buy"),(AC49-J49)*M$2,IF(AND(AC49<>"",L49="sell"),(J49-AC49)*M$2,""))」と入力する。
これは、T価格(AC)が空白じゃなく、ポジション(L)がbuyだった場合、(T価格(AC) - 約定価格(J)) × 10000通貨 を表示し、T価格(AC)が空白じゃなく、ポジション(L)がsellだった場合、(約定価格(J) - T価格(AC)) × 10000通貨 を表示するという意味。
4.トレイリングストップシグナルを計算
・AE1に「TRS」と入力する
・AE49に「=IF(AND(V49="",AD49<>"",M49<AD49),"TRS","")」と入力する。
これは、損切シグナルが空白かつ、T額が空白じゃなく、最悪含損(M)よりT額(AD)が大きかった場合TRSと表示し、それ以外は空白を表示するという意味。
白地の4項目がトレイリングストップ部分になる。
あとは二つの数式を変更する。
1.損益計算を変更
AF49を「=IF(V49="損切り",U49-$AF$2,IF(AE49="TRS",AD49-AF$2,""))」と変更する。
今まで利食いシグナルが発生した場合利食価格から損益を算出していたが、これをTRSのシグナルが発生した場合、T額から算出するように変更した。
2.約定価格を変更
J49を「=IF(OR(V48<>"",AE48<>""),"",IF(AND(I48="sell"),B49,IF(AND(I48="buy"),B49,J48)))」と変更する。
今まで利食いシグナルが空白かどうかで、約定価格を表示するか判断していたが、これをTRSが表示しているかで判断するように変更した。
これでひと通り「利益目標からのトレイリングストップ」の組み込みが終了した。
お疲れ様です。大変だったでしょう?
このサイトを見なくても組み込むことができるように何度も復習してくださいね。
次回は、評価してみようと思う。
↓役に立ったと思ったら、応援クリックお願いします。
★人気ブログランキング★
利益目標からのトレイリングストップの評価
前回、利益目標からのトレイリングストップを作成してみた。
では、早速システムの評価表をみてみることにする。
下にシステムの評価表と損益累積のグラフを表示した。
うむ~。「トレイリングストップ入れない方がよかったんじゃないの?」という声が聞こえてきそうだけど。
ぶっちゃけ、その通りだと思う。
。。。開き直りではないですよ(笑)
前にも書いたとおり、トレイリングストップにはいくつもの種類がある。今回の組み合わせはうまくいかなかった。ただそれだけだ。
今回作成したトレイリングストップは、厳密には2R(初期リスク×2)からのトレイリングストップということになり、初期リスクは標準偏差の2σを使用した。
初期リスクRの算出方法が変われば、当然システムのパフォーマンスも変わってくる。
前にも言ったけど、システム作りは、「自分で考える→検証する→発見する」の繰り返しだと思う。時には上手くいかないこともあるさ!
というか上手くいかないことの方が多いように思うけど。。。
特に利食いは、仕掛けや損切りと比べてみても比較にならないほど難しい。だから、あなたも「自分で考える→検証する→発見する」を繰り返して、是非とも利食いを極めてほしい。
利食いのスペシャリストになってください!!
次は、あなたのためにもう一つ「利益目標からのトレイリングストップ」を紹介しようと思う。
これは、僕も実際に使用している手法なのだが、少しでも参考になればと思い公開することにした。
では、次回。
[スポンサードリンク]


