日別アーカイブ: 2015年3月3日

[FX]前週の平均値と順張り&逆張り EA化(3) 半自動のススメ

前回の記事「前週の平均値と順張り&逆張り EA化(2)」でお披露目したプログラムをお昼にサーバーに仕込んでおきました。

自動売買の結果

エントリ時刻 B/S ロット 通貨 エントリ値 決済時刻 決済値 損益(円)
2015-03-03 14:00:00 sell 1 gbpjpy 184.21 15:21:28 183.92 29000

 

じつは 16:00:00 で決済されるか待たずに、老婆心で入れた トレーリングストップがヒットして 15:21:28 で決済されました。

最近は EA にエントリだけさせて裁量で決済するクセがついてしまっています。

決済は OCO注文かトレーリングストップを使います。

OCO のプライスはきちんと押し目や戻り目、一目均衡表の雲などで設定しているので EA に決済させるよりはうまくいくケースが多いと思います。

利益がどこまでいくかわからないときはフィボナッチリトレースメントより MetaTrader4 搭載のトレーリングストップ機能で追いかけるようにしています。

EA でエントリさせて、自分で利益確定(あるいは損切り) というのは案外有効な方法だと思います。

達成感も残るしね。

関連記事

前週の平均値と順張り&逆張り EA化(2)

おまけ

最近の EA の状況です。

3/2 00:00:20 buy 1 eurusd 1.11826 3/2 15:14:57 1.12267 52819
3/2 00:02:12 sell 1 gbpjpy 184.57 3/2 11:00:00 184.681 -11100
3/2 02:15:02 buy 1 usdjpy 119.927 3/2 08:15:02 119.789 -13800
3/2 11:00:00 buy 1 gbpjpy 184.684 3/2 13:37:46 184.477 -20700
3/2 13:00:00 buy 1 usdjpy 119.832 3/2 13:15:01 119.796 -3600
3/2 14:00:00 sell 1 gbpjpy 184.514 3/2 15:14:01 184.279 23500
3/2 14:45:02 sell 1 usdjpy 119.716 3/2 15:00:01 119.781 -6500
3/2 18:15:01 buy 1 usdjpy 120.125 3/3 03:10:14 120.03 -9500
3/3 09:00:00 buy 1 gbpjpy 184.092 3/3 12:42:10 184.19 9800
3/3 14:00:00 sell 1 gbpjpy 184.21 3/3 15:21:28 183.92 29000

総損益は +49919円。

まずまずですか。

###

[FX]前週の平均値と順張り&逆張り EA化(2)

前回の記事は 2014/1/1 – 2014/12/31 での結果から作成しました。

私は実際に稼働する EA の最適化は直前3ヶ月のバックテストで行っていますので、このプログラムも直前3ヶ月の結果を反映します。

GBPJPY 順張り のみの場合ですが、以下のプログラムのように変更しました。

結果は、

GBPJPY 1時間足 2013/12/1 – 2015/2/28

3ヶ月で2倍強なのでうまくいきそうです。

残りも全部つくらないとなあ・・・

問題点

上のようにポンド/円 では影響がないのですが、スイスフランがらみの通貨ペアは 2015/1/15 12時(サーバー時間)にいわゆるスイスショックがありまして、それにバックテストがかなり影響されてしまいます。

影響があれば資産曲線の中央あたりに”ガケ”が出現します。CHFJPY や USDCHF などはモロです。

関連記事

プログラムソース

//
// yasciiDaily02GJ.mq4 1時間足で動作 順張り 最新バージョン

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

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

//---- input parameters

extern int Fast_period = 5;

//変数の設定//
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) ;

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();
   if(  (Hour() == 5 || Hour() == 10 ||  Hour() == 16 || Hour() == 21 || Hour() == 0)    
       && ( 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(   (Hour() == 5 || Hour() == 10 ||  Hour() == 16 || Hour() == 21 || Hour() == 0)   
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(  (Hour() == 4 || Hour() == 9 || Hour() == 14 ||  Hour() == 20 || Hour() == 23) 
       && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) < Close[1]
       && ( 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(  (Hour() == 4 || Hour() == 9 || Hour() == 14 || Hour() == 20 || Hour() == 23) 
       && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) > Close[1]
       && ( 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]前週の平均値と順張り&逆張り EA化

以前の記事「超シンプルな自動売買プログラム(13) 前週の平均値と順張り 時間特性」での結果を踏まえて、自動売買用の EA を作るわけですが、1つのチャートで全通貨分を動かすのは結構面倒なので、それぞれの通貨ペアごとに順張り、逆張りを分けて作れば超カンタンにできてしまします。

たとえば、GBPJPY 順張り のみの場合は、以下のプログラムのようにします。

結果は、

GBPJPY 1時間足 2014/1/1 – 2014/12/31

このようなものを順張り、逆張り用にそれぞれ作ればいいのですね。

結構面倒のようですが、コピペでできます。

これで毎朝早起きしないでよくなった・・・かな。

関連記事

プログラムソース

//
// yasciiDaily02GJ.mq4 1時間足で動作 順張り

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

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

//---- input parameters

extern int Fast_period = 5;

//変数の設定//
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) ;

   //買いポジションのエグジット
   OS1 = OrderSelect(Ticket_L, SELECT_BY_TICKET);  
   OOPL = OrderOpenPrice();
   if(  (Hour() == 5 ||  Hour() == 11 || Hour() == 16 || Hour() == 18 || Hour() == 0)    
       && ( 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(   (Hour() == 5 ||  Hour() == 11 || Hour() == 16 || Hour() == 18 || Hour() == 0)   
       && ( Ticket_S != 0 && Ticket_S != -1 ))
    {     
      Exit_S = OrderClose(Ticket_S,Lots,Ask,Slip,Red);
      if( Exit_S ==1 ) {Ticket_S = 0;} 
    }   

   //買いエントリー
   if(  (Hour() == 4 || Hour() == 9 || Hour() == 15 || Hour() == 17 || Hour() == 23) 
       && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) < Close[1]
       && ( 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(  (Hour() == 4 || Hour() == 9 || Hour() == 15 || Hour() == 17 || Hour() == 23) 
       && iMA(NULL, 1440, Fast_period, 0, 0, PRICE_CLOSE, 1) > Close[1]
       && ( 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);
  }

###

ブログの意味 自己の文明の確立

ヴェネツィア(ベネチア)の発祥は北イタリアからゲルマン人が避難して始まったとされます。

湿地帯(潟)だったので騎馬民族の追撃を免れたわけですが、彼らは湿地の真ん中に何本も杭をうち、その上に都市を作りました。

都市を作る前は潮の流れに身を任せるしかありませんでしたが、杭の上に都市を作ることで高度の文明を発展させることができたのです。

*

我々も同じ。

なにもしないと潮の流れ(他人の考えや世の中の情勢)に流されるだけですが、ブログを書き、自ら考えたことを綴ることで足場となる確固たる視点や判断基準を得ることができます。

ヴェネツィアと同じように自分の中に文明をつくる・・・自分を野蛮人から脱却させ、自分独自の文明を発展させるわけです。

*

ブログと言っても、「あれが好き、この XX はおいしい」などという自分の感情を書きなぐったものは”文明”以前です。

好きや嫌いの感情は獣にもありますから。

論理的な思考を書き溜めていけば、杭のような足場ができ、独自の価値観を築くことができます。

毎朝目を覚ましたときに、フレッシュな野蛮人として目覚めるのか、発達していっている文明人として目覚めるのか、どちらがいいでしょうか。

*

なんてことを昼飯を食べながら考えつきました。

関連記事

ブログは単なる日記じゃない

###