*

MACDバーシステムの改良

公開日: : 最終更新日:2015/01/11 マネー

MACDバーを使った自動売買システム

昨日自作したプログラムですが、短期用、中期用、長期用の3つの MACD を同時に判断に使用するものです。

買いエントリ

3つのMACD全部がゴールデンクロス後 かつ 長期 MACD がゼロより上

売りエントリ

3つのMACD全部がデッドクロス後 かつ 長期 MACD がゼロより下

買い決済

短期、中期の MACD がデッドクロス後

売り決済

短期、中期の MACD がゴールデンクロス後

注意

買い増し、売り増しは行わない

ロスカットなし

結果 

2013年3月から昨日までの結果(ドル円1時間足)です。

1万ドルの口座が 22ヶ月で 2.2倍に増えています

ただし、ロットは 10万通貨なのでレバレッジは10倍強となり、買い増し、売り増しは行っておりません。

もっとも、同じ時期のドル円相場は下のように 96円から120円まで上昇していたので、ドル定期預金でも 1.2倍+金利はいただけたようですね。

 

利益曲線とレートの曲線を比べますと、最初の円のところで、ジリ下げのときに損失がふくらみ大きなディップを作っています。

2つめの円のジリ上がりのところは買い発動できていないのか、利益曲線はフラットなままです。

この2つは長期の MACD のパラメータの変更でなんとかなるかもしれませんね。

3つめの円はレートが急降下してまた反転していますが、このシステムはうまく対応してくれたようです。生身の人間ならこうはうまくいきませんね。このあたりが自動売買の最もすばらしいところです。

改良版

長期の MACD のパラメータをいじらずに、ロスカットをもうけてディップを消すことに挑戦。

最適なロスカット値を決めるのに手間取りましたが、最初の2つのディップは消えて、同じ期間で 2.8倍と収益も増加しましたね。

最初の円のところは回避できたので、2つ目の円のところの問題を消すべく、次はパラメータの最適化を行うことにします。

関連記事

改良版(ロスカット付き)ソースコード

 

//
// yasciiMACD_3cross03.mq4
//                LossCut
//

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

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

extern int Fast_EMA_Period1 = 6;
extern int Slow_EMA_Period1 = 19;
extern int Signal_Period1 = 6;
extern int Fast_EMA_Period2 = 12;
extern int Slow_EMA_Period2 = 26;
extern int Signal_Period2 = 9;
extern int Fast_EMA_Period3 = 19;
extern int Slow_EMA_Period3 = 39;
extern int Signal_Period3 = 9;

extern double LossCut = 100.0 ;

//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0;   //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0;   //売りポジションの決済注文の結果をキャッチする変数

double   MACD_MAIN1_1 ;
double   MACD_SIGN1_1 ;
double   MACD_Value1_1 ;

double   MACD_MAIN1_2 ;
double   MACD_SIGN1_2 ;
double   MACD_Value1_2 ;

double   MACD_MAIN1_3 ;
double   MACD_SIGN1_3 ;
double   MACD_Value1_3 ;

int OS ;

int start()
  {
    if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;
   MACD_MAIN1_1 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_MAIN, 1 );
   MACD_SIGN1_1 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_SIGNAL, 1 );
   MACD_Value1_1 = MACD_MAIN1_1 - MACD_SIGN1_1 ;

   MACD_MAIN1_2 = iMACD(NULL, 0, Fast_EMA_Period2 , Slow_EMA_Period2, Signal_Period2, PRICE_CLOSE, MODE_MAIN, 1 );
   MACD_SIGN1_2 = iMACD(NULL, 0, Fast_EMA_Period2 , Slow_EMA_Period2, Signal_Period2, PRICE_CLOSE, MODE_SIGNAL, 1 );
   MACD_Value1_2 = MACD_MAIN1_2 - MACD_SIGN1_2 ;

   MACD_MAIN1_3 = iMACD(NULL, 0, Fast_EMA_Period3 , Slow_EMA_Period3, Signal_Period3, PRICE_CLOSE, MODE_MAIN, 1 );
   MACD_SIGN1_3 = iMACD(NULL, 0, Fast_EMA_Period3 , Slow_EMA_Period3, Signal_Period3, PRICE_CLOSE, MODE_SIGNAL, 1 );
   MACD_Value1_3 = MACD_MAIN1_3 - MACD_SIGN1_3 ;

   OS = OrderSelect(Ticket_L, SELECT_BY_TICKET);  

   //買いポジションのエグジット
   if(    ((MACD_Value1_1 <0 && MACD_Value1_2 <0) || ( OrderOpenPrice() - LossCut * 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;}
    }    

   OS = OrderSelect(Ticket_S, SELECT_BY_TICKET); 

   //売りポジションのエグジット
   if(    ((MACD_Value1_1 >0 && MACD_Value1_2 >0) ||( OrderOpenPrice() + LossCut * Point <= Close[1] ))
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Blue);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(    MACD_Value1_1 >0 && MACD_Value1_2 >0 && MACD_Value1_3 >0 && MACD_MAIN1_3 >0
       && ( 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(    MACD_Value1_1 <0 && MACD_Value1_2 <0 && MACD_Value1_3 <0 && MACD_MAIN1_3 <0
       && ( 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,Blue);     
    } 
    
     
   return(0);
  }

###

関連記事

関東と関西

* 関西人はいかに安く買ったかを自慢し、関東人はいかに高く買ったかを自慢すると言われていますが

記事を読む

2026-3-9 日経平均も下げ

イラン戦争のおかげで全世界株安のようです。 ハメネイ氏の次男をイラン政府が選んだということで、まだ

記事を読む

FX 本のジョーク

FX の本を読んでいると、次のようなジョークが書いてありました。 友達と山道を歩いていると

記事を読む

ブレイクアウトシステムと BBW フィルタ

自作ブレイクアウトシステム(yasciiBreakout05)に BBW フィルタを組み込んでみ

記事を読む

2023/3/1 外国債券(既発債)続伸中

以前の記事「2023/2/22 外国債券が調子良い」で書きましたが、まだまだ米国の金利が上がりそうだ

記事を読む

日本市場で買える毎月配当の投資信託?

「日本の市場に上場している投資信託の中で毎月配当で実績の高いものを5つ挙げてください」と Gemin

記事を読む

本日アメリカの社債を売りました

本日アメリカの社債を全部売りました(先日は米国債を全部売りました)。 今月8日の利払日が過ぎた

記事を読む

【FX】 Fintokei はアヤシイ?

日本で事業を行っているプロップファームである Fintokei について、「詐欺ではないか」というス

記事を読む

高配当株投資 GXスーパーディビETF (2564) 配当ありました

現在日本市場に上場している高配当ETF で私の所有しているものは 8種類。 そのうちの1つであ

記事を読む

【FX】 Hunter Scalper 1.10 という EA(2)

「【FX】 Hunter Scalper 1.10 という EA」の続きです。 この Hunt

記事を読む

Message

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

Gemini で知識をまとめたウェブページを簡単につくる

どういう風に AI を使うか、人によって違います。 ちょこまか調

Meta という Meta の AI

Meta(旧名:Facebook)社の Meta という AI を試用

昆虫由来の食用色素

博物学が好きな人はご存じかもしれませんが、西洋ではコチニールカイガラム

Antigravity で遊ぶ

数日前から Google の AI エージント Antigravity

AXI Select のエッジスコアがついに 70に

一昨日、「プロップファームの AXI Select の なかなか上がら

→もっと見る

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