スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | CM(-) | --/--/--(--) --:--

JK_Carry_Trade_EA_1.1.mq4

JK_Carry_Trade_EA_1.1.mq4の変更点

RCIで底を捉えて、ナンピンしていく仕様に変更しました。

強制ロスカットになる可能性を低下させるために、底を捉えてからナンピンしています。

また、利確にフィボナッチの考えを取り入れることにより、利益確定のタイミングを最適化しています。

問題は下落しないとポジションを取らないため、トレード回数が非常に少ないということです。

8年間で96回のトレードでは少なすぎるため、今後、改良していきます。


JK_Carry_Trade_EA_1.1.mq4のバックテスト結果

StrategyTester_Carry_Trade_EA_1.1

(クリックで拡大)

8年間で資産が10倍になりました。


JK_Carry_Trade_EA_1.1.mq4:MQL4プログラムソース

//+------------------------------------------------------------------+
//|                                        JK_Carry_Trade_EA_1.1.mq4 |
//|                                               作成日:2008.01.12 |
//|                                                 著作者:人生解放 |
//+------------------------------------------------------------------+
#property copyright "人生解放"
#property link      "http://winnerlife.blog35.fc2.com/"
#define MAGIC  2000
//---- Input Parameters
extern int OrderModifyTime = 0;
extern double Lots = 0.1;
extern double MaxLots = 0.4;
extern int CalBars_H1 = 72;
extern double Fibo_Re1 = 0.236;
extern double Fibo_Re2 = 0.382;
extern double Fibo_Re3 = 0.500;
extern double Fibo_Re4 = 0.618;
extern double Fibo_Re5 = 0.764;
extern double Swap1dayPoint = 1;
extern double TakeProfit;
extern double FreeMargin = 5000;
extern double FreeMargin2 = 2800;
extern int    Slippage = 3;
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start(){
//---- Leverage
   if(AccountFreeMargin() > FreeMargin){
      FreeMargin=FreeMargin+FreeMargin2;
      FreeMargin2=FreeMargin2*2;
      Lots=Lots+0.1;
   }   
//---- RCI
   int rangeN = 26;
   double RCI1 = iCustom(NULL,0,"SpearmanRankCorr",rangeN,0,1);
       rangeN = 52;
   double RCI2 = iCustom(NULL,0,"SpearmanRankCorr",rangeN,0,1);
       rangeN = 104;
   double RCI3 = iCustom(NULL,0,"SpearmanRankCorr",rangeN,0,1);

   double Highest1 = iHigh(NULL, PERIOD_H1, iHighest(NULL, PERIOD_H1,
                           MODE_HIGH, CalBars_H1, 0));
   double Lowest1 = iLow(NULL, PERIOD_H1, iLowest(NULL, PERIOD_H1,
                         MODE_LOW, CalBars_H1, 0));

//---- Buy
   if(OrdersTotal() == 0){
   TakeProfit = (Highest1-Lowest1)*Fibo_Re1;
      if(RCI1 < -0.90 && RCI2 < -0.90){
         OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Red);
         return(0);
      }
   }
   if(OrdersTotal() == 1){
   OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
   if(OrderOpenTime()+60*60*3 >= TimeCurrent()) return(0);
//   Print("OrderOpenTime = ",OrderOpenTime());
   TakeProfit = (Highest1-Lowest1)*Fibo_Re2;
      if(RCI1 < -0.90 && RCI2 < -0.90 && RCI3 < -0.80){
         OrderSend(Symbol(),OP_BUY,Lots*2,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Blue);
         return(0);
      }
   }
   if(OrdersTotal() == 2){
   OrderSelect(1,SELECT_BY_POS,MODE_TRADES);
   if(OrderOpenTime()+60*60*3 >= TimeCurrent()) return(0);
   TakeProfit = (Highest1-Lowest1)*Fibo_Re3;
      if(RCI1 < -0.90 && RCI2 < -0.90 && RCI3 < -0.90){
         OrderSend(Symbol(),OP_BUY,Lots*3,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Yellow);
         return(0);
      }
   }
   if(OrdersTotal() == 3){
   OrderSelect(2,SELECT_BY_POS,MODE_TRADES);
   if(OrderOpenTime()+60*60*3 >= TimeCurrent()) return(0);
   TakeProfit = (Highest1-Lowest1)*Fibo_Re4;
      if(RCI1 < -0.95 && RCI2 < -0.95 && RCI3 < -0.95){
         OrderSend(Symbol(),OP_BUY,Lots*4,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Lime);
         return(0);
      }
   }
   if(OrdersTotal() == 4){
   OrderSelect(3,SELECT_BY_POS,MODE_TRADES);
   if(OrderOpenTime()+60*60*3 >= TimeCurrent()) return(0);
   TakeProfit = (Highest1-Lowest1)*Fibo_Re5;
      if(RCI1 < -0.95 && RCI2 < -0.95 && RCI3 < -0.95){
         OrderSend(Symbol(),OP_BUY,Lots*5,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Orange);
         return(0);
      }
   }
   if(OrdersTotal() == 5){
   OrderSelect(3,SELECT_BY_POS,MODE_TRADES);
   if(OrderOpenTime()+60*60*3 >= TimeCurrent()) return(0);
   TakeProfit = (Highest1-Lowest1)*Fibo_Re5;
      if(RCI1 < -0.95 && RCI2 < -0.95 && RCI3 < -0.95){
         OrderSend(Symbol(),OP_BUY,Lots*6,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Gold);
         return(0);
      }
   }
   if(OrdersTotal() == 6){
   OrderSelect(3,SELECT_BY_POS,MODE_TRADES);
   if(OrderOpenTime()+60*60*3 >= TimeCurrent()) return(0);
   TakeProfit = (Highest1-Lowest1)*Fibo_Re5;
      if(RCI1 < -0.95 && RCI2 < -0.95 && RCI3 < -0.95){
         OrderSend(Symbol(),OP_BUY,Lots*7,Ask,Slippage,0,Ask+TakeProfit,
                   "",MAGIC,0,Gray);
         return(0);
      }
   }
//---- OrderModify
   for(int i = 0; i < OrdersTotal(); i++){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == false) break;
      if(OrderMagicNumber() != MAGIC || OrderSymbol() != Symbol())
      continue;
      if(TimeHour(TimeCurrent())==OrderModifyTime
         && TimeMinute(TimeCurrent())==0
         && TimeSeconds(TimeCurrent())==0){
         OrderModify(OrderTicket(),OrderOpenPrice(),0
                     ,OrderTakeProfit()-Swap1dayPoint*Point,0,White);
      }
   }
//----
   return(0);
}
//+------------------------------------------------------------------+

JK_Carry_Trade_EA | CM(0) | 2008/01/12(土) 23:56
コメントの投稿
題名
名前
メールアドレス
URL
コメント
PASS
SECRET管理者にだけ表示を許可する


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。