日別アーカイブ: 2015年2月1日

超シンプルな自動売買プログラム(5) MACD&RSI(続き)

稼ぐ人のFX 儲けの流儀 (超トリセツ) 稼ぐ人のFX 儲けの流儀 (超トリセツ)

バウンド

インターナショナル・ラグジュアリー・メディア 2012-03-23

売り上げランキング : 186567

Amazonで詳しく見る

by G-Tools

前回紹介した「稼ぐ人のFX」というMOOKの第一号の多田さんの手法ですが、

MACD&RSI

  1. MACD のシグナルとのクロス
  2. RSI の値(70以上で売り、30以下で買い
  3. ローソク足のパターン

で2のRSI の値(70以上で売り、30以下で買い)を、「70以下で売り、30以上で買い」としたほうがいい成績になります。

70以上で買い、30以下で売り」とするとちょっと驚くような結果になります。

やはり、誤植ではないのでしょうか。

ドル円の日足に最適化すると「49以上で買い、28以下で売り」がベストとなります。

ドル円日足(2014/1/1-2015/1/1)

70以上で売り、30以下で買い 30以上で買い、70以下で売り 70以上で買い、30以下で売り 49以上で買い、28以下で売り
総損益 -1695 8487 7263 11630
プロフィットファクター 0 1.83 65.31 6.97
勝率 0 51.72 85.71 50
最大ドローダウン 17.92 14.77 9.46 15.09
最大勝ち 0 7216 4279 7511
最大負け -1695 -1905 -112 -483
勝ち 0 30 6 10
負け 1 28 1 10
取引数 1 58 7 20

関連記事

超シンプルな自動売買プログラム(4) MACD&RSI

###

]]>

超シンプルな自動売買プログラム(5) MACD&RSI(続き)

稼ぐ人のFX 儲けの流儀 (超トリセツ) 稼ぐ人のFX 儲けの流儀 (超トリセツ)

バウンド

インターナショナル・ラグジュアリー・メディア 2012-03-23

売り上げランキング : 186567

Amazonで詳しく見る

by G-Tools

前回紹介した「稼ぐ人のFX」というMOOKの第一号の多田さんの手法ですが、

MACD&RSI

  1. MACD のシグナルとのクロス
  2. RSI の値(70以上で売り、30以下で買い
  3. ローソク足のパターン

で2のRSI の値(70以上で売り、30以下で買い)を、「70以下で売り、30以上で買い」としたほうがいい成績になります。

70以上で買い、30以下で売り」とするとちょっと驚くような結果になります。

やはり、誤植ではないのでしょうか。

ドル円の日足に最適化すると「49以上で買い、28以下で売り」がベストとなります。

ドル円日足(2014/1/1-2015/1/1)

70以上で売り、30以下で買い 30以上で買い、70以下で売り 70以上で買い、30以下で売り 49以上で買い、28以下で売り
総損益 -1695 8487 7263 11630
プロフィットファクター 0 1.83 65.31 6.97
勝率 0 51.72 85.71 50
最大ドローダウン 17.92 14.77 9.46 15.09
最大勝ち 0 7216 4279 7511
最大負け -1695 -1905 -112 -483
勝ち 0 30 6 10
負け 1 28 1 10
取引数 1 58 7 20

関連記事

超シンプルな自動売買プログラム(4) MACD&RSI

###

超シンプルな自動売買プログラム(4) MACD&RSI

稼ぐ人のFX 儲けの流儀 (超トリセツ) 稼ぐ人のFX 儲けの流儀 (超トリセツ)

バウンド

インターナショナル・ラグジュアリー・メディア 2012-03-23

売り上げランキング : 186567

Amazonで詳しく見る

by G-Tools

前回と前々回紹介した「稼ぐ人のFX」というMOOKの第一号に多田さんというトレーダーの手法が載っていました。

MACD&RSI

  1. MACD のシグナルとのクロス
  2. RSI の値(70以上で売り、30以下で買い)
  3. ローソク足のパターン

で売買シグナルとエクシットを決めるものです。

下のようにプログラムしてテストしてみましたが、さっぱりいい成績が出ませんでした(2014/1/1-2015/1/1)。

売買回数がどれもヒトケタで少なすぎます。

エントリ条件を少しゆるめてみても同じ。

どこか間違っているのでしょうか。

関連記事

超シンプルな自動売買プログラム(3) クラウドブレイク

超シンプルな自動売買プログラム(5) MACD&RSI(続き)

プログラムソース

//
// yasciiSimple04  MACD & RSI
//
//マジックナンバーの定義
#define MAGIC  42105        
//パラメーターの設定//
extern double Lots = 1.0;     //取引ロット数
extern int Slip = 10;         //許容スリッページ数
extern string Comments =  "Simple03"; //コメント
extern int Fast_EMA_Period1 = 6;
extern int Slow_EMA_Period1 = 19;
extern int Signal_Period1 = 6;
extern int RSI_Period = 14;
//変数の設定//
int Ticket_L = 0; //買い注文の結果をキャッチする変数
int Ticket_S = 0; //売り注文の結果をキャッチする変数
int Exit_L = 0;   //買いポジションの決済注文の結果をキャッチする変数
int Exit_S = 0;   //売りポジションの決済注文の結果をキャッチする変数
int OS1 ;
int OS2 ;
double   OOPL;
double   OOPS;

int start()
  {
   if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;
   double MACD_Main1 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_MAIN, 1 );
   double MACD_Sign1 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_SIGNAL, 1 );
   double MACD_Main2 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_MAIN, 2 );
   double MACD_Sign2 = iMACD(NULL, 0, Fast_EMA_Period1 , Slow_EMA_Period1, Signal_Period1, PRICE_CLOSE, MODE_SIGNAL, 2 );
   double RSI1 = iRSI(NULL,0,RSI_Period,PRICE_CLOSE,1);
   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( RSI1 >= 70.0 
      || MACD_Main1 < MACD_Sign1 
      || MathAbs(Close[1]-Open[1]) > 2.0*MathAbs(Open[2]-Close[2])
      || MathAbs(Close[1]-Open[1])< 0.25*MathAbs(Close[2]-Open[2])
      && (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); 
   OOPS = OrderOpenPrice();
   if( RSI1 <= 30.0 
      || MACD_Main1 > MACD_Sign1 
      || Close[1] >Open[1] && Close[2] >Open[2]
      || MathAbs(Open[1]-Close[1])> 2.0 * MathAbs(Open[2]-Close[2])
      || MathAbs(Close[1]-Open[1])< 0.25*MathAbs(Close[2]-Open[2])
       && (Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   
   //買いエントリー
   if( RSI1 <= 30.0 
       &&  MACD_Main1 > MACD_Sign1 && MACD_Main2 < MACD_Sign2
       && Close[1] > Open[1] && Close[2] > Open[2]
       && ( 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( RSI1 >= 70.0 
       &&  MACD_Main1 < MACD_Sign1 && MACD_Main2 > MACD_Sign2
       && Close[1] < Open[1] && Close[2] < Open[2]  
       && ( 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);
  }
  

###

超シンプルな自動売買プログラム(3) クラウドブレイク

稼ぐ人のFX 儲けの流儀 (超トリセツ) 稼ぐ人のFX 儲けの流儀 (超トリセツ)

バウンド

インターナショナル・ラグジュアリー・メディア 2012-03-23

売り上げランキング : 186567

Amazonで詳しく見る

by G-Tools

前回紹介した「稼ぐ人のFX」というMOOKの第一号に富永さんというトレーダーの手法も載っていました。

クラウドブレイク

  • 買い:平均足が雲を上抜ける
  • 売り:平均足が雲を下抜ける
  • 決済:平均足が連続して逆転したとき または 大きな実態の逆の足が出たとき

私の作った平均足システムにクラウドフィルタを適用したものとロジックは似ていますが、こちらのほうがよりシンプルで厳格です。

早速 EAに組み込んでテストしてみました。

ドル円 4時間足での成績がもっともましのようです。

ドル円 4時間足 2014/1/1 – 2015/1/1

ちなみに私の平均足+クラウドフィルター(最大ドローダウンがほぼ同じようになるようにロット数を7割に削減)では

プロフィットファクターもそうですが、取引数が大きく違いますね。それが収益に大きく関わっています。

詳しく見てみると、富永さんのクラウドブレイクでは

○印が売買ポイントと決済ポイントを示しています。

私の平均足+クラウドフィルターでは細かく売買を繰り返しています。

富永さんのクラウドブレイクのほうがエントリと決済の条件が厳格なだけ、取りこぼしが多いようですね。

関連記事

超シンプルな自動売買プログラム(2) ボリ平ドラゴン式

プログラムソース(平均足クロス+クラウドフィルター)

//
// yasciiHA04.mq4
//           Heiken_Ashi_Real(移動平均線クロス)を使用
//         通常平均足との組み合わせ Cloud filter

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

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

extern int Fast_period = 14 ;
extern double margin = 0.0 ;

extern double ILC = 20.0 ;

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;

int start(){

    //暴落対策(始め)

   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);  
   if( Bid < FastLL1-margin 
       && ( 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); 
   if( Ask> FastHH1+margin
       && ( 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);

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

   //買いポジションのエグジット
    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] ) ) //|| ( OOPL+TP <= 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] ) ) //|| ( OrderOpenPrice()-TP >= 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_openMA2 < HA_closeMA2 && HA_open1 < HA_close1// && HA_open3 < HA_close3 && HA_close1 > HA_close2 && HA_close2 > HA_close3
       //&& (Close[1]> cla1 && Close[1]>clb1)
       && ((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_openMA2 > HA_closeMA2 && HA_open1 > HA_close1 // && HA_open3 > HA_close3 && HA_close1 < HA_close2 && HA_close2 < HA_close3
       //&& (Close[1]< cla1 && Close[1]<clb1)
       && ((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 儲けの流儀 (超トリセツ) 稼ぐ人のFX 儲けの流儀 (超トリセツ)
バウンド
インターナショナル・ラグジュアリー・メディア 2012-03-23
売り上げランキング : 186567
Amazonで詳しく見る
by G-Tools

稼ぐ人のFX」というMOOKの第一号にボリ平さん(女性です)という有名なトレーダーの手法が載っています。

ボリ平ドラゴン式

  • 買い:遅行線がボリンジャーの+3σを上抜ける
  • 売り:遅行線がボリンジャーの-3σを下抜ける
  • 決済:5分足の終値が逆行したとき

ずいぶんシンプルです。

以前書かれた著書のものより新しい手法ということで、早速 昨日のシンプルなEAに組み込んでテストしてみましたが、2014/1/1 – 2015/1/1 のバックテストでの結果はほとんどの通貨ペアで赤字が出ています。

このMOOKが出たのは2年前。

それまで通用していた手法がたまたま昨年は通用しなかったのでしょうが、専業で食っていくのは大変だなあ、と思います。

関連記事

超シンプルな自動売買プログラム(EA)

プログラムソース

//
// yasciiSimple03
// ボリ平ドラゴン式
//

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

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

extern int BB_Period=20;
double Deviation=3.0;

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

int start()
  {

   if (Volume[0]>1 || IsTradeAllowed() == false) return(0) ;

     double bbw1 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 26) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, 26)+Close[26];
     double bbw2 = iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 1, 27) -  iBands( NULL, 0, BB_Period, Deviation, 0, PRICE_CLOSE, 0, 27)+Close[27];

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

if (iClose( NULL, 5, 1)==0) return(0);
if (iClose( NULL, 5, 2)==0) return(0);

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();   
   if( Ticket_L != 0 && Ticket_L != -1 && (iClose( NULL, 5, 1) < iClose( NULL, 5, 2)))
    {     
      Exit_L = OrderClose(Ticket_L,Lots,Bid,Slip,Blue);
      if( Exit_L ==1 ) {Ticket_L = 0;}
    }    

   //売りポジションのエグジット
   OS2 = OrderSelect(Ticket_S, SELECT_BY_TICKET); 
   OOPS = OrderOpenPrice();
   if( Ticket_S != 0 && Ticket_S != -1&& (iClose( NULL, 5, 1) > iClose( NULL, 5, 2)))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if( Close[1] > bbw1 && Close[2] < bbw2 
       && ( 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( Close[1] < bbw1 && Close[2] > bbw2 
       && ( 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);
  }

###

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門 名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波 はるか Kuma

扶桑社 2008-05-23

売り上げランキング : 305594

Amazonで詳しく見る

by G-Tools

★★★☆☆(当時はよかったが、今は不要?)

名波はるかというちょっと過激な方のグラビアアイドル(私はよく知りませんでしたが)が、Kuma さんという人の作った単一のシステムトレードプログラムを紹介するという、なんとも不思議な構成の本。

エクセルのマクロで作られたトレードシステム「Kuma システム」の入った CD-ROM が付属。

データを自分で打ち込む必要がありますし、資金も結構必要ですし、勝率は低いしプロフィットファクターも低そうで、MetaTrader4 で FX をやるのに比べると敷居が10倍は高いですね。

それにこれをやったからといって、他人のロジックをそのまま使うだけ。

勝っても負けても他人任せなので、自分に進歩がないし、うまくいかなくなっても原因がわかりません。

FX のほうをお勧めします。デモ口座で練習できますからね。

###

]]>

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門 名波はるか&Kumaさんが教える!![日経225&mini]で始めるシステムトレード入門

名波 はるか Kuma

扶桑社 2008-05-23

売り上げランキング : 305594

Amazonで詳しく見る

by G-Tools

★★★☆☆(当時はよかったが、今は不要?)

名波はるかというちょっと過激な方のグラビアアイドル(私はよく知りませんでしたが)が、Kuma さんという人の作った単一のシステムトレードプログラムを紹介するという、なんとも不思議な構成の本。

エクセルのマクロで作られたトレードシステム「Kuma システム」の入った CD-ROM が付属。

データを自分で打ち込む必要がありますし、資金も結構必要ですし、勝率は低いしプロフィットファクターも低そうで、MetaTrader4 で FX をやるのに比べると敷居が10倍は高いですね。

それにこれをやったからといって、他人のロジックをそのまま使うだけ。

勝っても負けても他人任せなので、自分に進歩がないし、うまくいかなくなっても原因がわかりません。

FX のほうをお勧めします。デモ口座で練習できますからね。

###