*

[FX] zero trailing を平均足システムに / yasciiHA04d.ex4

公開日: : 最終更新日:2021/06/03 マネー

昨日発表した平均足システム yasciiHA04c.ex4 に以前発表した「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);
  }

###

関連記事

住宅ローン完済

* 平成2年に買った我が家(マンション)ですが、先月ようやくローンが完済のはこびとなりました。

記事を読む

【FX】朝スキャ(2)

前回の記事「【FX】朝スキャ」の続きです。 早朝スキャルピング(朝スキャ)は、日本の朝6時ごろ

記事を読む

[FX] 4TFStochBars というインジケータ

4TFStochBars.mq4 というストキャスティクスを4つの時間足でバー表示するインジケータが

記事を読む

早起きは5pipsの得 (3)

前回の記事「早起きは5pipsの得 (2)」の続きです。 6時台のスプレッドの広がりの対抗策と

記事を読む

ディナポリ手法で利用するDMA

ディナポリ手法という FX 手法の体系があるのですが、そこでは利用する移動平均線に DMA という特

記事を読む

郵便振替という過去の遺物

久しぶりにちょっと離れていた郵便局に行ってきました。 以前勤めていた大津市民病院の敷地に隣接し

記事を読む

FX 大ダメージ 暴落対策用コードの導入

  自動売買のデモ口座が今朝とんでもないことに。 昨日は調子よく、30万円プラ

記事を読む

【米国株】上昇開始 今年中はもはや利上げなし?

昨日のアメリカの CPI 発表ではインフレのかなりの改善が見込めたということで、株高ドル安が進みまし

記事を読む

令和3年分確定申告

令和3年分確定申告 本日、令和3年分確定申告に税務署に行ってきました。 今回は申告書を全部書

記事を読む

OANDA のオープンオーダーとオープンポジションについて(1)

これが OANDA のオープンオーダーとオープンポジション。 全世界の3割近くの注文と保有

記事を読む

Comment

  1. onem より:

    こんばんわ
    わざわざお手数を取らせてしまい申し訳ありません。
    早速試してみましたが、なるほど改めて納得いたしました。

    書かれておられるようにもともとは大きな流れをとるための物ですから勝ち数で稼ぐ系ではない以上、こういった損失を抑えるというのは勝ちを抑制するデメリットが大きすぎますね・・・

    ありがとうございました。
    前記事のバージョンCを試させて頂きますとともに御礼申し上げます。

  2. onem より:

    それと少しバージョンCにて触っていたのですが、AUDHKDが存外いいかもしれません。
    FP12
    ILC14
    intime7
    Outtime17
    でテストして見ましたがいい成績を出してるように見受けられます。
    エキゾチック通貨故の固有不安はありますが、最適化が出来れば結構良くなるかもしれません。
    お手すきの時にでもご検証いただければ幸いです。

    • kotaro.yasuiwa@gmail.com より:

      エキゾチック通貨はほとんど見ていなかったのですが、オーストラリア香港ドルですか。
      検証していませんが、パラメーターも適正値(日本時間で 13-23時でOK、ILCも十分低め)のように思います。

      よほどの政情変化がない限り直近 1-2ヶ月で最適化した複数の EA を複数の通貨ペアで動作させてポートフォリオを組むのが一番いいと思っています。

      来週から稼働の分に加えてみます。ありがとうございました。

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

【FX】IS White という EA(2) デモの結果

以前紹介した EA です。 Exness でデモを開始し

【FX】TitanFX はデモ口座開設が簡単

TitanFX のブレード口座は最良というわけではありませんが、そこそ

HDMI VGA 変換アダプタ 1080p 対応

HDMI⇔VGA の変換アダプタです。 短いケーブルがついている

フリーレン第一期終わる

アニメ「葬送のフリーレン」第一期が今週で終わってしまいました。

カミのみぞ知るミノキシジル

【第1類医薬品】ミノアップ 6

→もっと見る

  • アクセスカウンター
PAGE TOP ↑