*

[FX] PRICE_MEDIAN を使う

公開日: : 最終更新日:2020/03/08 マネー

以前作った ADX 指標を使った EA の yasciiADXcross02 は何度か改良して試しています。

トレンドに乗るのが素早く、降りるのもそこそこ早いのに、長いトレンドを最初から最後までよく捕まえるという優れものです。

Damiani フィルタは効果が薄いので除き、クラウドフィルタとタイムフィルタを加えて yasciiADXcross03 を作りました。

  • エントリシグナル: +DI と -DI のクロス+ADX フィルタ+クラウドフィルタ+タイムフィルタ
  • 決済シグナル: +DI と -DI の反転、もしくはHLBand のブレイク、もしくは固定ロスカット値を割る、もしくは暴落時

ADX の計算にはふつうは終値を使うのですが、試しに半値(PRICE_MEDIAN)を使うと結構面白い結果になりました。

EURUSD 1時間足 2015/3/12-2015/4/8

上が終値、下が半値(高値と低値の平均)を使った場合。

半値の方がはるかに優れていますね。

いつもこうなるとは限りませんが、一目均衡表 でも重視されている半値って実はすごく意味があるなあと思います。

理由は後述します。> [FX] PRICE_MEDIAN を使う (2) 半値の概念

あ、今回の総損益は 1万通貨単位のもので、いつも(1.0ロット=10万通貨単位)の 1/10 になっています。

リアル口座で運用し始めるときはいつも 0.1ロットからなので間違えないようにするため変更しました。

関連記事

プログラムソース yasciiADXcross03d.mq4

//
// yasciiADXcross03d.mq4
//     
//                with cloud filter ,PRICE_MEDIAN, Time filter

//マジックナンバーの定義
#define MAGIC  42576        

//パラメーターの設定//
extern double Lots = 0.1;     //取引ロット数
extern int Slip = 10;         //許容スリッページ数
extern string Comments =  "ADX03d"; //コメント

extern int ADXcrossesPeriod = 10;
extern int Fast_period = 18 ;
double margin = 0.0 ;

extern int in_time = 10; // 取引開始時間
extern int out_time = 20; // 取引停止時間

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;

extern double ILC = 20.0 ; 

int start()
  {

   double lc = ILC;
   if(( Digits ==3 ) ||(Digits ==5)) lc = lc*10.0 ;

    //暴落対策(始め)

   double FastHH1 = Close[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 1)];
   double FastLL1 = Close[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 1)];

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET); 
   OOPL = OrderOpenPrice();
   if( (Bid < FastLL1 || ( OOPL - lc*Point >= Bid ))
       && ( 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 > FastHH1 || ( OOPS + lc*Point <= Ask ))
       && ( 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 plusdi2 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_PLUSDI, 2);
     double plusdi1 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_PLUSDI, 1);
     double minusdi2 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_MINUSDI, 2);
     double minusdi1 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_MINUSDI, 1);  

     double maindi1 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_MAIN, 1); 
     double maindi2 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_MAIN, 2);
     double maindi3 = iADX(NULL, 0, ADXcrossesPeriod, PRICE_MEDIAN, MODE_MAIN, 3);
     double mainsig = ( maindi1 + maindi2 + maindi3 ) / 3.0 ;

     double FastHH2 = Close[iHighest(NULL, 0, MODE_CLOSE, Fast_period, 2)];
     double FastLL2 = Close[iLowest(NULL, 0, MODE_CLOSE, Fast_period, 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);  
   if(    ((plusdi1 < minusdi1 && plusdi2 > minusdi2 )  || Close[1] < FastLL2 - margin ) 
       && ( Ticket_L != 0 && Ticket_L != -1 ))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Blue);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   //売りポジションのエグジット

   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   if(    ((plusdi1 > minusdi1 && plusdi2 < minusdi2 )   || Close[1] > FastHH2 + margin ) 
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   
    
   //買いエントリー
   if(    ((plusdi1 > minusdi1 && plusdi2 < minusdi2 && maindi1 > 18.0 && maindi1 < 50.0 ) ||  
       (plusdi1 > minusdi1 && maindi1 > 18.0 && maindi1 < 50.0  && maindi1 > mainsig))
       && (Close[1] > cla1 && Close[1] > clb1)
       && (Hour() >= in_time && Hour() <= out_time)
       && ( 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,Blue);
    }
    
   //売りエントリー
    if(    ((plusdi1 < minusdi1 && plusdi2 > minusdi2  && maindi1 > 18.0 && maindi1 < 50.0 ) ||
       (plusdi1 < minusdi1 && maindi1 > 18.0 && maindi1 < 50.0   && maindi1 > mainsig))
       && (Close[1] < cla1 && Close[1] < clb1)
       && (Hour() >= in_time && Hour() <= out_time)
       && ( 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,Red);     
    } 
    
     
   return(0);
  }

関連記事

iFreeレバレッジ NASDAQ100 購入開始しました

iFreeレバレッジ NASDAQ100 は昨日から買付を始めた投資信託で、日本の大和投資信

記事を読む

5時間でわかる!KOSEI式ネット株 デイトレ&スイング 必勝法 / 石田 高聖

5時間でわかる!KOSEI式ネット株 デイトレ&スイング 必勝法 石田

記事を読む

【FX】EA Gold Stuff という EA

MQL5 フォーラムで 50$で販売されている EA Gold Stuff という EA です。

記事を読む

【FX】IS White という EA

昨日は「【FX】IS Black という EA」を紹介したので、同じ作者による「IS White」を

記事を読む

SBIホールディングス(8473)買いました

一昨日、日本の高配当株としてよく名前が挙がる SBIホールディングスの株を 100株式会社買いました

記事を読む

ディナポリ手法で利用するDMA (4) ATRトレイリングストップ

前回の記事「ディナポリ手法で利用するDMA (3) HLバンドトレイリングストップ」で、ディナポリ移

記事を読む

マンガ 生き残りの株入門の入門 / 矢口 新 てらおかみちお

マンガ 生き残りの株入門の入門―あなたは投資家?投機家? (ウィザードコミッ

記事を読む

【FX】なつかしの Vulkan Profit インジケーター

Vulkan Profit というインジケーターは有名なので大昔から知っているのですが、そのロジック

記事を読む

[FX] THV Trend のロジック

メタトレーダー4 の裁量トレード用テンプレートで有名な THV V3 のインジケーターのうち、THV

記事を読む

[FX]ドラゴン・ストラテジーFX 1分スキャル について(3)

前回の記事「ドラゴン・ストラテジーFX 1分スキャル について(2)」の続きです。 エ

記事を読む

Comment

  1. matsu より:

    はじめまして。
    ADXについて調べていてこちらに辿り着きました。
    yasciiADXcross03d.mq4を試してみたく、MT4のIndicaterにいれてみたのですが、何も表示されません。
    何かやり方があるのでしょうか?
    教えていただけるとうれしいです。
    よろしくお願いします。

    • kotaro.yasuiwa@gmail.com より:

       はじめまして。
       これはインディケーターではなく、EA(自動売買プログラム)ですので Experts フォルダに入れてください。

       EA ですので実際に使用するときはパラメーターを設定する必要があります。
       それにはストラテジーテスターを使って最適化パラメーターを求めます。
       設定するパラメーターは、ADXcrossesPeriod、Fast_period 、in_time、out_time、ILC の5つです。
       in_time = 0 & out_time = 23 とするとタイムフィルタが無効になり、24時間取引するようになります。

  2. matsu より:

    お返事ありがとうございました。
    EAなのですね。
    あまり詳しくなくすみませんでした。
    もしよろしければ、ADX フィルタとクラウドフィルタはどういうフィルタなのか教えていただけないでしょうか?
    よろしくお願いします。

    • kotaro.yasuiwa@gmail.com より:

       この EA は ADXcrosses というインディケーター(MetaTrader4 から無料でダウンロード可)を EA にしたものです。
       インディケーターをお探しなら ADXcrosses をダウンロードされてはいかがでしょうか。

       この EA では ADX はフィルタ(トリガーを実際に採用するかという条件)としてではなく、トリガーとして使います。
       ADXcrossesPeriod は ADX 計算の際のパラメーター(参照期間)です。

       クラウドフィルタは一目均衡表の「雲」の中に現在値があるときは売買を実行しないというフィルタです。

       タイムフィルタは一日のうちの何時から何時まで採用するかというフィルタです。通貨によって取引の多い
      人種が異なりますよね。その人たちが寝静まっている時間帯にはダマシが多いので採用しないというものです。

       ILC は初期ロスカット(initial loss cut)です。pips単位です。
       FP_period はトレーリングストップ機能に使っているパラメータで、その参照期間を示します。

  3. matsu より:

    お返事ありがとうございました。
    ADXcrossesは先日見つけましていれてみたのですが、もう少しサインをふるいにかけたいのと、あと、ローソク足が終わらないうちに+DIと-DIがクロスしたらサインが出ているようですが、ローソク足終了時にクロスが解消されてしまったときどうしようかと思い、いろいろ検索しているところでした。
    クロスが解消されても矢印は消えず、チャートを再表示させると消えるので、それも困ったなと・・・。
    検索してみて、STDDEVやADXの傾きなど見てる方もいて、もう少しいろいろ試してみようと思います。
    どうもありがとうございました。

matsu へ返信する コメントをキャンセル

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

【FX】平均足とプライスアクションチャンネルを使ったEA

5分足で動作する EA が欲しいなと思う今日このごろ。 大抵のインジ

CEPI(REX クリプト・エクイティ・プレミアム・インカムETF)について

CEPI とは REX社の運用している ETFの「クリプト・エクイティ

【FX】ボリンジャーバンド順張りの EA を運用開始

昨日作った「ボリンジャーバンド順張りの EA(改良版)」は jjBB0

【FX】ボリンジャーバンド順張りの EA(改良)

ボリンジャーバンドは順張りで使えと、ボリンジャーさんは草葉の陰で唱えて

【FX】2本のWMAでエントリする EA(Vulkan Profit風)

Vulkan Profit というそこそこ有名なインジケーターがありま

→もっと見る

  • 2026年2月
     1
    2345678
    9101112131415
    16171819202122
    232425262728  
  • アクセスカウンター
PAGE TOP ↑