どうも潤奈です( ・Д・)
YouTubeでトラリピEAを作成する作業配信、第3回で作成した最後半のトラリピの説明をして行きたいと思います。
解説動画ではなく、作業配信ですので時間に余裕がある時にながら見をして頂けたら何か気付きが得られるかもしれません( ・Д・)
前半は前回の記事トラリピ作業ですので、移動平均線StopLoss化トラリピ作業は1:01~になります。
是非、イイネとチャンネル登録をよろしくお願い致します♪( ・Д・)
トラリピとは?
上限と下限を決めた予想レンジの中にトラップを仕掛けて、そのトラップでエントリーして設定した利幅で決済を繰り返す(リピート)手法です。
そのトラップには、新規と決済の注文を同時に発注できる「イフダン注文」を使用し、トラップ・リピート・イフダンの言葉を組合わせて「トラリピ」と言います。
今回のロジック
買いトラップは移動平均線の上に、売りトラップは移動平均線の下に設置して稼働されるようにパラメーターから選択が出来ます。(ロジック選択:トレンド)
パラメーターでロジック選択の項目を「レンジ」に設定すると、買いトラップが移動平均線の下で、売りトラップは移動平均線の上に設置して稼働も出来ますが、その設定だと前回の記事の内容になります。
移動平均線StopLoss化トラリピ(買い)
移動平均線StopLoss化トラリピ(売り)
移動平均線の上(トレンド)の時は買いトラップでエントリーして行き、移動平均線を下回るまでポジションを持つ事で利益の最大化が見込めます。
売りは逆で移動平均線の下でトラップを仕掛け、移動平均線を上回るとポジションを全決済します。
パラメーター
設定出来るパラメーターもシンプルに分かりやすくしています。
マジックナンバー
各EAの注文がどのEA・ロジックから実行されたかを識別するための番号です。
スリッページ(point)
注文価格と約定価格の非意図的な差の許容範囲の設定です。
建玉設定
建玉設定は(通常稼働、注文キャンセル、全決済)から選択出来ます。
稼働中に設置しているトラップだけを削除したい場合は、注文キャンセルを選択し、設置しているトラップ&ポジション決済したい場合は全決済を選択すれば可能です。
エントリー選択
エントリー選択は(買いのみ、売りのみ、両建て)から選択出来ます。
ロット数
発注するロット数を設定出来ます。
利確幅(pips)
利益確定させる値幅を設定出来ます。
損切幅(pips)
損切させる値幅を設定出来ます。0を設定する事で損切を設定しない事も出来ます。
レンジ上限、下限(価格)
トラリピの設定はレンジ上限と下限を設定し、注文値幅でトラップの間隔を決めて頂きます。
発注レンジ幅(pips)
発注レンジ幅とは、現在値から上下何pipsまでにトラップを仕掛けるかの設定になります。
例えば、120円~90円の間に10pipsのトラップを仕掛けると約300もの数になり無駄ですよね。
発注レンジ幅を100pipsに設定すると、トラップを仕掛けるのは現在値から上50pips、下50pipsの間に10pips間隔のトラップを仕掛ける事が出来るので無駄なトラップを節約する事が出来ます。
注文値幅(pips)
トラリピのトラップを設置する間隔の値幅を設定出来ます。
ロジック選択
ロジックを(トレンド、レンジ)から選択出来ます。
時間軸
移動平均線インジケーターの計算基準となる時間軸を選択出来ます。
期間
移動平均線インジケーターの計算期間を設定出来ます。
検証
馴染みのあるUSDJPYの通貨ペアで運用した時にどうなったかを検証してみます。
注文値幅を狭くすればそれだけリピート回数が増えて収益が上がりますが、その分ポジションを持ってしまい、逆方向に動いてしまうと大きい含み損を抱えてしまうので注意が必要です。
注文値幅の設定値は今回こちらの「ボラチェッカー」というサイトを参考にさせて頂きました。
年間の日平均ボラティリティが0.57円でしたので、注文値幅と利確幅を50pipsに設定して検証しました。
検証期間は2016.1.7~2021.8.31までとし、レンジ上限118円、下限100円に設定し、移動平均線は時間軸1時間の200期間で設定しました。
ロジックはトレンドを選択しています。
利確幅は移動平均線で利益最大化が目的なので500pipsと掛からない数値に設定します。
損切幅は0で設定しています。
結果
移動平均線トラリピ(買い)
設定:レンジ上限109円 レンジ下限100円 ロジック:トレンド(買いのみ)
利確幅:500pips 損切幅:0pips
総損益:60,436円
総取引数:962回
最大ドローダウン:50,284円
移動平均線トラリピ(売り)
設定:レンジ上限118円 レンジ下限109円 ロジック:トレンド(売りのみ)
利確幅:500pips 損切幅:0pips
総損益:‐35,671円
総取引数:941回
最大ドローダウン:99,314円
考察
移動平均線にストップロスを置くトラリピを作成してみました。
結果はかなり残念な感じになってしまいましたねw
今までのトラリピは基本損切しないので想定レンジから外れない&資金が尽きなければ右肩上がりになるのは必然ですので、今回のはちょっと現実に引き戻された感じですw
原因は沢山ありますが、根本的にトレンド判断が移動平均線の上と下という安易な考えが大きな要因だと思います。
基本的にレンジ7割:トレンド3割と言われるように、レンジ相場が長いが為に損益グラフは右肩下がりの期間が長くなっています。
右肩上がりになっている箇所は検証期間のチャートと照らし合わせて頂くと分かりますが、一方的な上げや下げがあった箇所になりますので、利益の最大化という点では上手く行っています。
よって完全放置では運用出来ず、テクニカル&ファンダメンタルズでここからしばらくトレンド相場が来る!って所で稼働させてレンジ相場では止めるという方法を取る必要があります。
そんなの誰も使いませんよね・・・w
さて、ここでこの損切を含めたトラリピ手法は使える?使えない?の判断をどうしましょうかw
【疑問1】検証した移動平均線は1時間足の200期間で行っていますので、時間足を短くor期間を短くすれば小さいトレンドを捉える事が出来るのでは?
とも考えられると思いますが、その分短いレンジ相場でも捕まってしまってマイナスを叩き出すのでトレンド期間<レンジ相場の関係がある以上難しいと思います。
【疑問2】トレンドとレンジを判別出来るもう少し良いインジケーターと組み合わせたどうかな?
と、移動平均線とは違う、もしくは他のインジケーターと組み合わせてトレンドとレンジ相場を精度よく判別する組合わせを探す。という事が出来るのであればトラリピにしなくても大丈夫ですよねw
今更ですが、これはトラリピと言って良いのでしょうかね?すみません自分で作ってて・・・
という訳でこの先の派生は考えておりません。
もし、何か良さげな案があれば募集致しますのでコメント下さいw
トラリピ手法比較
期間:2016.1.7~2021.8.31 USDJPY:100~118円 | 総損益 | 総取引数 | 最大ドローダウン |
通常トラリピ(両建て) | 463,871円 | 1,734回 | 266,330円 |
ハーフトラリピ(買い) | 191,148円 | 405回 | 87,420円 |
ハーフトラリピ(売り) | 216,997円 | 488回 | 88,551円 |
ハーフトラリピ(合算) | 408,146円 | 893回 | (仮)175,971円 |
移動平均線トラリピ(買い) | 242,551円 | 672回 | 231,268円 |
移動平均線トラリピ(売り) | 196,017円 | 521回 | 249,685円 |
移動平均線トラリピ(合算) | 438,568円 | 1,193回 | (仮)480,953円 |
移動平均線StopLoss(買い) | 60,436円 | 962回 | 50,284円 |
移動平均線StopLoss(売り) | -35,671円 | 941回 | 99,314円 |
移動平均線StopLoss(合算) | 24,765円 | 1,903回 | (仮)149,598円 |
一番利益が取れたのが通常トラリピ(両建て)ですが、ハーフトラリピ(合算)もそこまで負けていません。
総取引数と最大ドローダウンに目を向けると、ハーフトラリピの方が取引数が少ないですし、最大ドローダウンも少なく手数料やリスクを考えるとハーフトラリピの方がオススメですね。
※合算の最大ドローダウンに(仮)がついているのは、単純に合計した為です。実際は売りと買いの最大ドローダウンが同時に来ることはないので、実際はもっと少ない数値になると思います。
あとは、移動平均線トラリピ使用するぐらいであれば、通常トラリピを稼働させた方が良いかもしれませんね。
通常トラリピの結果をまとめた記事はこちらです。
ハーフトラリピの結果をまとめた記事はこちらです。
移動平均線トラリピの結果をまとめた記事はこちらです。
まだ見ていなかったという方は是非ご覧下さい。EAも無料でダウンロード出来ますので試す事も出来ます。
次回も他にトラリピ手法ベースとして、他の手法と組み合わせて良いのが出来ないか検証して行きたいと思います( ・Д・)
プログラム修正点
YouTube作業配信内で書いたプログラムについて修正点がありますので、こちらに記述させて頂きます。
以下のコードは移動平均線にストップロスを変更するプログラムになります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
//損切位置変更 void MAStopLoss(double ma,int magic){ int res; double ErrorFilter=0.5*_Point; for(int i=OrdersTotal()-1;i>=0;i--){ if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true){ if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic){ if(OrdeerType()==OP_BUY){ if(OrderStopLoss()+ErrorFilter<ma){ if(ma<Bid-StopLevel*_Point){ res=OrderModify(OrderTicket(),OrderOpenPrice(),ma,OrderTakeProfit(),0,0); } } }else if(OrderType()==OP_SELL){ if(OrderStopLoss()-ErrorFilter>ma || OrderStopLoss()==0){ if(ma>Ask+StopLevel*_Point){ res=OrderModify(OrderTicket(),OrderOpenPrice(),ma,OrderTakeProfit(),0,0); } } } } } } } |
追加&変更した箇所は以下になります。
1 |
deouble ErrorFilter=0.5*_Point; |
これは「OrderModify error 1」のエラーを回避する為に使用します。
このエラーはOrderStopLoss()と同じ価格でもう一度設定しようとした時に発生します。
配信時のプログラムにこの様に追加しています。
1 2 3 4 5 6 7 8 9 |
//買い if(OrderStopLoss()<ma && OrderStopLoss()!=ma) ↓ if(OrderStopLoss()+ErrorFilter<ma) //売り if(OrderStopLoss()>ma && OrderStopLoss()!=ma) ↓ if(OrderStopLoss()-ErrorFilter>ma || OrderStopLoss()==0) |
まず移動平均線よりストップロスが買いでは小さくて、売りでは大きい場合は移動平均線の値をストップロスに置き換えるプログラムでした。
移動平均線と同じ値で再設定しないように!=を使って条件を重ねていましたが、OrderModify error 1が発生していました。
何故ならOrderStopLoss()の値でMQL4内部の浮動小点数の丸め誤差によって、この条件式をスルーしていた為です。
例えば移動平均線値が109.5でストップロスに設定したとします。
次にOrderStopLoss()値が「109.5000000000002」と誤差が出る事があります。
これによって売り条件に当てはめると、移動平均線値より大きいと判断されてしまい再度109.5円でストップロスに設定しようとしてエラーが出てしまいます。
この誤差を無視出来るようにErrorFilterに小さい値を入れて比較式に組み込んでいます。
あと、売りの損切値を0に設定していると条件式に一切当てはまらなくなるので、ストップロス値が0の時は変更する。という条件式を追加しています。
次は無駄があったのでシンプルにしています。
1 2 3 4 5 6 7 8 9 |
//買い if(Bid-StopLevel*_Point<ma)ma=ma-StopLevel*_Point; ↓ if(ma<Bid-StopLevel*_Point) //売り if(Ask+StopLevel*_Point>ma)ma=ma+StopLevel*_Point; ↓ if(ma>Ask+StopLevel*_Point) |
if文の中は同じ内容ですが、内容が前後しているのはただの気分ですw
この「StopLevel*_Point」は OrderModify error 130 を防ぐ為に必要で、損切り価格と利益確定価格をストップレベルの範囲内に設定した場合に発生します。
そのエラーが発生しない為の条件式になります。
※StopLevelはオリジナル変数で予め宣言しているのでMQL4内には存在しませんので注意して下さい。配信でパラメーターの下辺りに記述しています。
EAのダウンロード
こちらから無料ダウンロードする事が出来ますので、是非試してみて下さい。
コードについては冒頭のYouTube作業配信ですべて公開していますのでご覧ください( ・Д・)
※一部公開していない部分で修正を加えている部分もありますのでご容赦下さい。
コメント