[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);
}
###
関連記事
-
-
2023-07-24 投資メモ
前回の記事「2023-06-27 投資メモ」から約1ヶ月。 楽天証券の分ですが、現在の資産は以
-
-
アメリカ株投資 2021-8-28
先日の記事「アメリカ株投資 2021-8-25」の続き。 昨日ジャクソンホール(世界の中央銀行
-
-
[FX] VQ をエントリートリガーにした自動売買プログラム ysVQ03a.ex4
魔法のインジケーター VQ をエントリーのトリガーに使ったものは今までも結構作ってきたのですが、VQ
-
-
【FX】FX 自動売買再運転開始
最近は毎日いくつか自動売買プログラム(Expert Advisor;EA)を作っています。 米
-
-
【FX】ThreeTrader で新たなタイプの口座を開いてみる
以前の記事「ThreeTrader という FX業者」で書きましたが、ThreeTrader は な
-
-
カジノに行きますか?
ラスベガスなどのカジノには行ったことがありませんが、行こうとは全然思いません。 豪華な設備を見
-
-
【FX】Axiory のナノスプレッド口座を開く
Axiory という FX業者は比較的評判がいいので口座を開いたのですが、誤ってスタンダード口座を開
-
-
【FX】2023年11月 決算
「【FX】2023年11月第3週までの決算」の続きです。 今月の全口座の決算が出ました
-
-
【FX】Monopolist という EA
久々に FX の話です。 MQL5 で売られている Monopolist という EA ですが







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