[FX] zero trailing を平均足システムに / yasciiHA04d.ex4
公開日:
:
最終更新日:2021/06/03
マネー
昨日発表した平均足システム yasciiHA04c.ex4 に以前発表した「zero trailing」を組み込んで見ました。
- yasciiHA04c.ex4 > [FX] 来週は yasciiHA04c.ex4 を投入
- zero trailing > [FX] 勝率を上げる zero trailing
zero trailing は私の造語ですが、エントリ後ある程度思惑通りに進んで、エントリポイントを十分超えたなと思ったら、ストップロスを初期ロスカットからエントリポイント(+スプレッド上乗せ)のところに置き直すことをさしています。
こうするとこの後は損切りしたときの損害がゼロになるので、損切りという概念はなくなり利益確定のみとなり、要するに”負け”はなくなります。
とりあえずエントリポイントを初期ロスカットと同じ幅だけ超えたら、ストップロスをエントリポイント(スプレッド分上乗せ)に移動するように改良してみました。それが yasciiHA04d.ex4 です。
結果 15/3/15 – 15/4/11 1時間足
| 通貨ペア | HA04c | HA04d |
| EURUSD | 503 | 157 |
| AUDUSD | 491 | 463 |
| USDCHF | 846 | 587 |
| GRPUSD | 854 | 451 |
| GRPJPY | 310 | 272 |
改良前後のシステムの総損益(ドル)だけを比べてみました。
勝率はアップするものの早すぎる利益確定になって、後のおいしい部分をとりきれずに終わってしまうようです。
早く終わっちゃってダメねえ・・・”早漏ぎみ”だということでしょう。^^
平均足システムとのコンセプトのズレ
そもそも平均足システムは比較的長いトレンド(1時間足で 10-30本程度続くような)をターゲットに開発されています。
ADXcross や VQ ほど小回りがききませんので。
ですから 1時間より短い足ではうまく働かないことが多いのです。
1時間以内の細かな上下動のダマシを防ぐため平滑化した”平均足”なので、ある程度の逆行は許容してやらないといけません。
そもそも 1時間足というのは過去1時間のデータをたった4つの値(始値、終値、高値、安値)にしたものなので、細かな変動のデータなどは全部捨てています。さらに移動平均線などの指標ではこのうち終値しか見ないことが多いわけです。
どんなシステムを使ってエントリしても、エントリポイントではすでに逆行が始まっているバッドなタイミングのときも結構あります・・・たとえば、買いエントリしたときに”買い”とは真逆の方にグングン進行中だったりします。
要するに、ロスカットにはかなりの余裕が必要だということです。
そして時間足が長くなればなるほど余裕は大きめに持たせないといけません。
*
ある程度思惑通りにいくと、HLバンドトレーリングにより押し目にストップが切り上がって(売りの場合は切り下がって)いくので、zero trailing は HLバンドトレーリングが働くまでの逆行によってマイナス(せいぜい初期ロスカット分)になることを防ぐだけしか効果がありません。
それを防ぐのと、得られる利益が結構減るのと どちらを許容するかですね。
ADX や VQ のシステムも小回りがきくといってもせいぜい 15分足が限界ですから、これらに組み込んでも多少まし といったくらいで、同じ傾向であることは想像がつきますね。
ということで、あまりお勧めではありませんが、いちおうソースを載せます。
プログラムソース yasciiHA04d.mq4
//
// yasciiHA04d.mq4
// Heiken_Ashi_Real(移動平均線クロス)を使用
// 通常平均足との組み合わせ
// with Time Filter
// 暴落対策変更 zero trailing
//マジックナンバーの定義
#define MAGIC 42222
//パラメーターの設定//
extern double Lots = 0.1; //取引ロット数
extern int Slip = 10; //許容スリッページ数
extern string Comments = "HA04d"; //コメント
extern int HL_period = 12 ;
extern double ILC = 35.0 ;
extern int in_time = 10; // 取引開始時間
extern int out_time = 17; // 取引停止時間
int Tenkan_sen=9;
int Kijun_sen=26;
double Senkou_span_b=52;
//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0; //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0; //売りポジションの決済注文の結果をキャッチする変数
int OS1 ;
int OS2 ;
double OOPL;
double OOPS;
double TS1 = 0.0 ;
double TS2 = 1000.0 ;
int start(){
double lc = ILC;
if(( Digits ==3 ) ||(Digits ==5)) lc = lc*10.0 ;
//暴落対策(始め)
double HH1 = High[iLowest(NULL, 0, MODE_HIGH, HL_period, 1)];
double LL1 = Low[iHighest(NULL, 0, MODE_LOW, HL_period, 1)];
//買いポジションのエグジット
OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
OOPL = OrderOpenPrice();
if(Bid > OOPL + lc*Point ) TS1 = OOPL + Ask - Bid ;
if( (Bid < LL1 || ( OOPL - lc*Point >= Bid ) || Bid <= TS1)
&& ( Ticket_L != 0 && Ticket_L != -1 ))
{
Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
if( Exit_L ==1 ) {Ticket_L = 0;}
}
//売りポジションのエグジット
OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET);
OOPS = OrderOpenPrice();
if( Ask < OOPS - lc*Point ) TS2 = OOPS - Ask + Bid ;
if( (Ask > HH1 || ( OOPS + lc*Point <= Ask ) || Ask >= TS2)
&& ( Ticket_S != 0 && Ticket_S != -1 ))
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
if( Exit_S ==1 ) {Ticket_S = 0;}
}
//暴落対策(終わり)
if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;
double HA_open1 = ( Open[2] + Close[2] ) / 2.0 ;
double HA_close1 = ( Open[1] + Close[1] + High[1] + Low[1] ) / 4.0 ;
double HA_open2 = ( Open[3] + Close[3] ) / 2.0 ;
double HA_close2 = ( Open[2] + Close[2] + High[2] + Low[2] ) / 4.0 ;
double HA_openMA1 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",2,1);
double HA_openMA2 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",2,2);
double HA_closeMA1 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",3,1);
double HA_closeMA2 = iCustom(NULL,0,"Downloads\\Heiken_Ashi_Real",3,2);
double cla1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 3, Kijun_sen);
double clb1 = iIchimoku( NULL, 0, Tenkan_sen, Kijun_sen, Senkou_span_b, 4, Kijun_sen);
//買いポジションのエグジット
OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);
OOPL = OrderOpenPrice();
if( ((HA_openMA1 > HA_closeMA1 && HA_openMA2 > HA_closeMA2) || ( HA_open1 > HA_close1 && HA_open2 > HA_close2) ||( OOPL - lc*Point >= Close[1] ) )
&& ( Ticket_L != 0 && Ticket_L != -1 ))
{
Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Red);
if( Exit_L ==1 ) {Ticket_L = 0;}
}
//売りポジションのエグジット
OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET);
OOPS = OrderOpenPrice();
if( ((HA_openMA1 < HA_closeMA1 && HA_openMA2 < HA_closeMA2) || ( HA_open1 < HA_close1 && HA_open2 < HA_close2) || ( OOPS + lc*Point <= Close[1] ) )
&& ( Ticket_S != 0 && Ticket_S != -1 ))
{
Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Aqua);
if( Exit_S ==1 ) {Ticket_S = 0;}
}
//買いエントリー
if( HA_openMA1 < HA_closeMA1 && HA_open1 < HA_close1
&& (Hour() >= in_time && Hour() <= out_time)
&& ( (Close[1] > cla1 && Close[1] > clb1) || (Close[1] < cla1 && Close[1] < clb1) )
&& ( Ticket_L == 0 || Ticket_L == -1 )
&& ( Ticket_S == 0 || Ticket_S == -1 ))
{
Ticket_L = OrderSend(Symbol(),OP_BUY,Lots,Ask,Slip,0,0,Comments,MAGIC,0,Red);
}
//売りエントリー
if( HA_openMA1 > HA_closeMA1 && HA_open1 > HA_close1
&& (Hour() >= in_time && Hour() <= out_time)
&& ( (Close[1] > cla1 && Close[1] > clb1) || (Close[1] < cla1 && Close[1] < clb1) )
&& ( Ticket_S == 0 || Ticket_S == -1 )
&& ( Ticket_L == 0 || Ticket_L == -1 ))
{
Ticket_S = OrderSend(Symbol(),OP_SELL,Lots,Bid,Slip,0,0,Comments,MAGIC,0,Aqua);
}
return(0);
}
###
関連記事
-
-
FX最強チャート GMMAの真実 / 陳 満咲杜 (3)
FX最強チャート GMMAの真実 陳 満咲杜 扶桑社 2012-06-29
-
-
【FX】2024年5月第1,2週総括
2024年5月第2週のトレードが終わりました。 今月の日ごとの利益は次の通り。
-
-
[FX]yasciiHA04a パラメーター変更
以前の記事「yasciiHA04a 実戦投入」の続きです。先週金曜日は指標発表のため EA は止
-
-
【FX】なかなかすごいブレイクアウト Inquisition Breakout EA(2)
「【FX】なかなかすごいブレイクアウト Inquisition Breakout EA」の続きです。
-
-
【FX】MT4 build1420 の不具合(2)
以前の記事「【FX】MT4 build1420 の不具合」の続きです。 前回の記事へのコメント
-
-
完全ガイド 100%得するふるさと納税生活 / 金森 重樹
完全ガイド 100%得するふるさと納税生活 (SPA!BOOKS) 金森 重樹
-
-
[FX]冬時間から夏時間への切り替わりの検証
最近忙しくて、FX についてはデータをとるだけになっています。 データ取得は VPSサーバーが
-
-
【FX】MT4 build1420 に全乗り換え
MT4 が build1420 になって、動かなくなった EA が多数出ました。 ちょっと調べ
-
-
FX トレード 2014/11/28-2014/12/1
この期間は MetaTrader4 で EA の検証を主にやっていました。 11/29,30







Comment
こんばんわ
わざわざお手数を取らせてしまい申し訳ありません。
早速試してみましたが、なるほど改めて納得いたしました。
書かれておられるようにもともとは大きな流れをとるための物ですから勝ち数で稼ぐ系ではない以上、こういった損失を抑えるというのは勝ちを抑制するデメリットが大きすぎますね・・・
ありがとうございました。
前記事のバージョンCを試させて頂きますとともに御礼申し上げます。
それと少しバージョンCにて触っていたのですが、AUDHKDが存外いいかもしれません。
FP12
ILC14
intime7
Outtime17
でテストして見ましたがいい成績を出してるように見受けられます。
エキゾチック通貨故の固有不安はありますが、最適化が出来れば結構良くなるかもしれません。
お手すきの時にでもご検証いただければ幸いです。
エキゾチック通貨はほとんど見ていなかったのですが、オーストラリア香港ドルですか。
検証していませんが、パラメーターも適正値(日本時間で 13-23時でOK、ILCも十分低め)のように思います。
よほどの政情変化がない限り直近 1-2ヶ月で最適化した複数の EA を複数の通貨ペアで動作させてポートフォリオを組むのが一番いいと思っています。
来週から稼働の分に加えてみます。ありがとうございました。