*

[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);
  }

関連記事

みんなで大破さん

「みんなで大家さん」というあやしいスキームが問題になっています。 不動産開発に出資して利益を分配す

記事を読む

【FX】Voorloper という EA(3) デモトレード5日目

「Voorloper という EA(2) 同時トレード数と通貨ペア数の変更」の続きです。 変更

記事を読む

月収の10倍稼ぐ外資投資―横尾式トレンドフォローで着実に儲けよう / 横尾 寧子

月収の10倍稼ぐ外資投資―横尾式トレンドフォローで着実に儲けよう 横尾 寧子

記事を読む

【FX】グリッドトレード(グリッド戦略)

グリッドトレード(グリッド戦略)とは株や外為で昔からよくある方法で、相場に対し等間隔の値幅で複数のポ

記事を読む

後悔しない家 / 小枝不動産

* 関西のTV番組「土曜日はダメよ!」の人気コーナー「小枝不動産」で紹介していた番組史上最高額

記事を読む

[FX] Tokyo Box(ロンドン・コーリング) の新作プログラム (6) おまけプログラム

以前の記事「 Tokyo Box(ロンドン・コーリング) の新作プログラム (5) 2週間めの実動結

記事を読む

早起きは5pipsの得 (3)

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

記事を読む

【FX】新戦略のためのデモトレード

現在の FX 自動売買は Evening Scalper Pro を中心に行っていますが、逆張りナン

記事を読む

[FX] Tokyo Box(ロンドン・コーリング)プログラム完成

「 Tokyo Box(ロンドン・コーリング)プログラムにトレーリングストップをつける(2)」の続き

記事を読む

【FX】CCI をエントリトリガに使ったEA を試作してみた

CCI は Commodity Channel Index(商品チャネル指数)というオシレーター系の

記事を読む

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 ↑