CrossMA - MetaTrader 5向けのシステムトレーディング

Mike 2017.01.26 18:05 28 0 0
添付ファイル

アイデアの作者George F.PeskovMQL5コードの作者barabashkakvn

このトレーディングシステムは、2つの移動平均(iMA)の交差を基にしており、ATRの値に基づいてストップロスが自動的に設定されます。ポジションが開かれたり閉じられたりするたびに、メール通知が送信されます。パラメーターはバックテストによって選択可能です。

インジケーターの値を取得する

最初と2番目のバーのインジケーター値を取得するためのコードは以下の通りです:

//--- 移動平均を取得
   mas=iMAGet(handle_iMA1,1);       // ロング移動平均 12
   maf=iMAGet(handle_iMA2,1);       // ショート移動平均 4
   mas_p=iMAGet(handle_iMA1,2);     // ロング移動平均 12
   maf_p=iMAGet(handle_iMA2,2);     // ショート移動平均 4
   Atr=iATRGet(0);

売りの条件を確認する

//--- 売りの条件
   if(maf<mas && maf_p>=mas_p)
     {
      double lots=LotsOptimized();
      double stop_loss=NormalizeDouble(m_symbol.Ask()+Atr,Digits());
      res=m_trade.Sell(lots,Symbol(),m_symbol.Bid(),stop_loss,0);
      if(SndMl==true && res)
        {
         sHeaderLetter="Operation SELL by"+Symbol()+"";
         sBodyLetter="Deal Sell by"+Symbol()+" at "+DoubleToString(m_symbol.Bid(),Digits())+
                     ", and set stop/loss at "+DoubleToString(stop_loss,Digits())+"";
         sndMessage(sHeaderLetter,sBodyLetter);
        }
      return;
     }

買いの条件を確認する

//--- 買いの条件
   if(maf>mas && maf_p<=mas_p)
     {
      double lots=LotsOptimized();
      double stop_loss=NormalizeDouble(m_symbol.Bid()-Atr,Digits());
      res=m_trade.Buy(lots,Symbol(),m_symbol.Ask(),stop_loss,0);
      if(SndMl==true && res)
        {
         sHeaderLetter="Operation BUY at"+Symbol()+"";
         sBodyLetter="Deal Buy at"+Symbol()+" for "+DoubleToString(m_symbol.Ask(),Digits())+
                     ", and set stop/loss at "+DoubleToString(stop_loss,Digits())+"";
         sndMessage(sHeaderLetter,sBodyLetter);
        }
      return;
     }


 

リスト
コメント 0