FXシステムトレードの作り方 TOP > :03FXシステムトレード上級編 >
利益目標からのトレイリングストップの作り方
無料で差し上げます!
システムトレードの作り方エクセルファイル
・MACDのトレンド判定、RSIの作り方
・ストキャスティクスの作り方
・ボラティリティストップの作り方
・トレイリングストップの作り方
前回、トレイリングストップを3つに分類しました。
今回は分類2の「利益目標からのトレイリングストップ」の作り方をご紹介します。
分類1の「いきなりトレイリングストップ」も今後ご紹介していきますが、まずは2から説明していきますね。
「利益目標からのトレイリングストップ」については、プロフィットリトレースメントストップなどと紹介されている書籍もありますがほとんど意味は同じです。利益の一部を市場へ返すことによって利益を伸ばそうという考え方です。
★利食いルール
移動平均クロスと標準偏差ストップを組み合わせたシステムトレードに、初期リスクをRとし、含み益が2Rを超えた次のタイミングから 、含み益の-10%の位置にトレイリングストップを置く。※2Rや-10%の数値には特に意味はなく僕の適当な数値です。
☆ 「利益目標からのトレイリングストップ」の作り方
以前に作成した移動平均クロスと標準偏差ストップを組み込んだシステムを開く。
ご迷惑をおかけしております。以前に標準偏差のストップページを改訂した際につじつまが合わなくなってしまったようです。ベクスト様ご指摘ありがとうございます。
誠に勝手ではございますが、ここからは以前に作成した標準偏差のストップからご説明させていただくことにします。ご了承ください。
↓↓↓旧標準偏差のストップの作り方より↓↓↓
今回は、「移動平均線を使ったトレーディングシステム」の損切り部分を標準偏差を使ったストップに変更してみようと思う。
標準偏差を使ったストップのルールは下記の通り
買いの時、約定価格 - (ATR + 2標準偏差)を損切りラインとし、
売りの時、約定価格 + (ATR + 2標準偏差)を損切りラインとする。
ボラティリティストップの作り方で作成したエクセルファイルを使って、その続きから説明することとする。
1.列を挿入する
・ ボラティリティストップのファイルを開き、ATR(Q)と損切り価格(R)の間に1つ列を挿入する。
2.標準偏差を計算する
・R2に「標準偏差」と入力する
・R28に「=STDEV(P3:P27)」と入力する。
これは、25日分のTRを使用して標準偏差を計算するという意味。
・コピーし、データのある最終行まで貼り付ける
3.ATRの日数を変更する
・ボラティリティストップでは、5日のATRを使用したけど、25日の標準偏差を使用するため、ATRも25日に変更する。
・Q28に「=AVERAGE(P3:P27)」と入力する。
・コピーし、データのある最終行まで貼り付ける
4.損切価格を変更する。
・S28に「=IF(AND(J28=1,K28="sell"),I28+(Q28+R28*2),IF(AND(J28=1,K28="buy"),I28-(Q28+R28*2),IF(J28="","",S27)))」と入力する。
これは、日数Jが1、かつポジションKが sell の時、約定価格 + (ATR + 2標準偏差)を表示し、 日数Jが1、かつポジションKが buy の時、約定価格 - (ATR + 2標準偏差)を表示する。日数Jが空白の時は空白を表示し、それ以外は前日の損切価格Sを表示するという意味。
・コピーし、データのある最終行まで貼り付ける
↓↓↓旧移動平均クロスと標準偏差のストップの作り方より↓↓↓
今回は移動平均クロスのトレンド判定と標準偏差ストップを組み合わせると、どのように数値が変化していくのかを見ていこうと思う。
前回作成した移動平均線標準偏差ストップのトレンド判定部分を移動平均クロスに変更する。
1.新たに名前をつけて保存する
例)移動平均線標準偏差ストップを開いて、移動平均クロス標準偏差ストップに変える。
エクセルのシステム開発は編集前に必ず保存してバージョン管理していくと便利ですよ!
2.トレンド判定部分に列を1つ挿入する
移動平均線のトレンド判定の場合は2列でよかったけど、移動平均クロスのトレンド判定は3列必要になるので1列挿入する。
3.移動平均クロスの数式を貼り付ける
以前作成した移動平均クロスのドテンシステムのトレンド判定部分のF(10日移動平均)、G(30日移動平均)、H(トレンド判定)をコピーし、貼り付ける。
4.余分な数式を削除する
初めてシグナルが点灯する日に合わせて、J(約定価格)の余分な数式を削除します。下の例は、49行目でトレンドが反転しているので、49行目までの数式を消そうとしています。
これでひと通り変更は完了した。
実際の結果を見てもらえばわかるが、変更によって出た数値をそのまま評価してしまうと、とてもじゃないが改善された数値とは言い難い。
このように「とてもじゃないが改善された数値とは言い難い」結果に終わった移動平均クロスと標準偏差ストップの組み合わせだったが、これにはちゃんと原因があった。
それは、もともとの投資戦略がボヤケタまま改善と検証を行ってしまったから。。。
システムを構築する時には、一つの投資戦略を実現するためにはどんな組み合わせが必要か、または最適なのかを考える必要がある。
今回の場合、トレンドフォローという戦略に基づいて以下のように考え、進める必要があった。
仕掛け・・・移動平均クロス
仕掛けのタイミングが多少遅れたとしても、より精度の高いトレンド判定が実現でき、大きなトレンドをしっかりと利益に結びつける戦略が必要。
損切り・・・標準偏差ストップ
トレンドは上下にジグザグと動きながら、より大きなトレンドを形成していく。そのため日常のノイズを考慮した損切り戦略が必要。
ということは、より大きな利益を実現できる利食い戦略が必要だったわけで、前回採用した2%利食いルールはそれに該当しなかったということだ。
システムはいくつもの要素が絡み合ってひとつのシステムと作り上げている。その点を考慮して一貫性のある考え方でシステムを設計する必要があるのだ。
↑↑↑と、ここまでが旧標準偏差のストップである↑↑↑
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の算出方法が変われば、当然システムのパフォーマンスも変わってくる。
前にも言ったけど、システム作りは、「自分で考える→検証する→発見する」の繰り返しだと思う。時には上手くいかないこともあるさ!
というか上手くいかないことの方が多いように思うけど。。。
特に利食いは、仕掛けや損切りと比べてみても比較にならないほど難しい。だから、あなたも「自分で考える→検証する→発見する」を繰り返して、是非とも利食いを極めてほしい。
利食いのスペシャリストになってください!!
ExcelVBAで自作する売買システム自動大量製造マシン
テキストの目的
・ExcelとVBAでシステム構築ツールを作れるようになること
・付属のExcelブックを使えるようになること
9種類のトレンドフォロー系のエントリー戦略
5種類のイグジット戦略
ドリームゲートFX 4つのシステムで安定運用
ドリームゲートFXの成績
・ 1月 318pips
・ 2月 272pips
・ 3月 83pips
・ 4月 -26pips
・ 5月 552pips
・ 6月 155pips


