ナイトスカルパー マルチ通貨 - MetaTrader 5用のEA

Mike 2017.01.18 18:24 41 0 0
添付ファイル

ナイトスカルパー マルチは、ボリンジャーバンド指標を用いて狭い範囲 (r) で取引を行うマルチ通貨のナイトスカルパーです。取引は0時まで行われます。

BBHandle=iBands(symb,0,per,0,dev,0);
   CopyBuffer(BBHandle,1,0,1,up);
   CopyBuffer(BBHandle,2,0,1,dn);

   double r=up[0]-dn[0];

指定された開始の時間以降、シンボルにオープンポジションがない場合にポジションが開かれます。

if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))

ボリンジャーバンドの下限を下回る価格の場合、チャネルがRazmah変数で指定された範囲よりも小さいときに買いを行います。

if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);

ボリンジャーバンドの上限を上回る価格の場合、チャネルがRazmah変数で指定された範囲よりも小さいときに売りを行います。

if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);

ポジションはストップロスによって閉じられるか、0時以降に強制的に閉じられます。

elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);

取引は、SymbolTrade関数を使用し、СTradeクラスを利用します:

void SymbolTrade(string symb,int stop,int take,int per,double dev,double razmah,int start)
  {
   string s=(string)start+":00";
   doubleAsk=SymbolInfoDouble(symb,SYMBOL_ASK);
   doubleBid=SymbolInfoDouble(symb,SYMBOL_BID);

   BBHandle=iBands(symb,0,per,0,dev,0);
   CopyBuffer(BBHandle,1,0,1,up);
   CopyBuffer(BBHandle,2,0,1,dn);

   double r=up[0]-dn[0];

   if(CountTrades(symb)<1 && TimeCurrent()>StringToTime(s))
     {
      if(Ask<dn[0] && r<razmah*_Point) trade.PositionOpen(symb,0,Lot,Ask,Ask-stop*_Point,Ask+take*_Point);
      if(Bid>up[0] && r<razmah*_Point) trade.PositionOpen(symb,1,Lot,Bid,Bid+stop*_Point,Bid-take*_Point);
     }
   elseif(CountTrades(symb)>0 && TimeCurrent()<StringToTime(s)) CloseAll(symb);
  }

取引操作は新しいバーで実行されます。

if(bars!=Bars(NULL,0))
     {
      if(Symbol1!="") SymbolTrade(Symbol1,StopLoss1,TakeProfit1,BBPeriod1,BBDev1,Razmah1,Start1);
      if(Symbol2!="") SymbolTrade(Symbol2,StopLoss2,TakeProfit2,BBPeriod2,BBDev2,Razmah2,Start2);
      if(Symbol3!="") SymbolTrade(Symbol3,StopLoss3,TakeProfit3,BBPeriod3,BBDev3,Razmah3,Start3);
        ...
     }
   bars=Bars(NULL,0);


設定:

inputstring Symbol1     = "USDCAD";       // シンボル1名inputint    StopLoss1   = 370;            // ストップロス1inputint    TakeProfit1 = 20;             // テイクプロフィット1inputint    BBPeriod1   = 40;             // バンド期間1inputdouble BBDev1      = 1;              // バンド偏差1inputdouble Razmah1     = 450;            // バンド偏差1 (ポイント)inputint    Start1      = 19;             // 開始時間1inputstring Symbol2     = "GBPUSD";       // シンボル2名inputint    StopLoss2   = 450;            // ストップロス2inputint    TakeProfit2 = 80;             // テイクプロフィット2inputint    BBPeriod2   = 8;              // バンド期間2inputdouble BBDev2      = 1;              // バンド偏差2inputdouble Razmah2     = 200;            // バンド偏差2 (ポイント)inputint    Start2      = 20;             // 開始時間2inputstring Symbol3     = "NZDUSD";       // シンボル3名inputint    StopLoss3   = 410;            // ストップロス3inputint    TakeProfit3 = 40;             // テイクプロフィット3inputint    BBPeriod3   = 4;              // バンド期間3inputdouble BBDev3      = 1.2;            // バンド偏差3inputdouble Razmah3     = 450;            // バンド偏差3 (ポイント)inputint    Start3      = 19;             // 開始時間3inputstring Symbol4     = "";             // シンボル4名inputint    StopLoss4   = 500;            // ストップロス4inputint    TakeProfit4 = 40;             // テイクプロフィット4inputint    BBPeriod4   = 24;             // バンド期間4inputdouble BBDev4      = 1;              // バンド偏差4inputdouble Razmah4     = 200;            // バンド偏差4 (ポイント)inputint    Start4      = 20;             // 開始時間4inputstring Symbol5     = "";             // シンボル5名inputint    StopLoss5   = 500;            // ストップロス5inputint    TakeProfit5 = 40;             // テイクプロフィット5inputint    BBPeriod5   = 24;             // バンド期間5inputdouble BBDev5      = 1;              // バンド偏差5inputdouble Razmah5     = 200;            // バンド偏差5 (ポイント)inputint    Start5      = 20;             // 開始時間5inputstring Symbol6     = "";             // シンボル6名inputint    StopLoss6   = 500;            // ストップロス6inputint    TakeProfit6 = 40;             // テイクプロフィット6inputint    BBPeriod6   = 24;             // バンド期間6inputdouble BBDev6      = 1;              // バンド偏差6inputdouble Razmah6     = 200;            // バンド偏差6 (ポイント)inputint    Start6      = 20;             // 開始時間6inputstring Symbol7     = "";             // シンボル7名inputint    StopLoss7   = 500;            // ストップロス7inputint    TakeProfit7 = 40;             // テイクプロフィット7inputint    BBPeriod7   = 24;             // バンド期間7inputdouble BBDev7      = 1;              // バンド偏差7inputdouble Razmah7     = 200;            // バンド偏差7 (ポイント)inputint    Start7      = 20;             // 開始時間7inputstring Symbol8     = "";             // シンボル8名inputint    StopLoss8   = 500;            // ストップロス8inputint    TakeProfit8 = 40;             // テイクプロフィット8inputint    BBPeriod8   = 24;             // バンド期間8inputdouble BBDev8      = 1;              // バンド偏差8inputdouble Razmah8     = 200;            // バンド偏差8 (ポイント)inputint    Start8      = 20;             // 開始時間8inputstring Symbol9     = "";             // シンボル9名inputint    StopLoss9   = 500;            // ストップロス9inputint    TakeProfit9 = 40;             // テイクプロフィット9inputint    BBPeriod9   = 24;             // バンド期間9inputdouble BBDev9      = 1;              // バンド偏差9inputdouble Razmah9     = 200;            // バンド偏差9 (ポイント)inputint    Start9      = 20;             // 開始時間9inputdouble Lot         = 1;              // 取引ボリューム

図1. EAの取引結果。EURUSD, H1

図2. EAの取引のジャーナル

図3. EAの取引結果と最適化 (2016年1月11日から2016年9月13日まで)。USDCAD, GBPUSD, NZDUSD, H1


ヒント:

  • このEAは取引アシスタントとしての使用を推奨し、自分の戦略を開発するのに役立ちます。
リスト
コメント 0