(EAコード無料公開)ニャン吉CFD-SMA

バイデン政権になってすっかり環境も変わってしまったので、久しぶりにCFDを再開してみようと考えています。
とは言っても裁量取引は面倒なのでMT4のEAを組んでみました。

残念ながらFXとは異なり、勝率100%を目指した方法ではありません
レバレッジもそれなりに使うので損切り設定もあります
バイデン政権移行から今日までの値動きに合わせた取引手法なので決して長期的なものではなく、今後の状況次第では稼働の見直しも必要になってしまうかもしれません。
とりあえずJacksonHoleの影響を見極めてから稼働させるか決める予定です。

また、1台のPCでMT4のCFDとFXを同時にEA稼働できないので、FX側の資金を削るか又はFX口座を閉じる事になりそうです。
今FXでは2種類のEAを稼働しているのですが今後も期待できるのはニャン吉Repeatのほうなので、ニャン吉EAを停止してOandaMT4をCFDにして一部資金を移動させようと思います。
FX口座にも一部資金を残して、別PCでの裁量取引としてFX側でも取引手法を模索する予定です。

このEAはあくまでニャン吉が自分用として使う前提で制作しています。
ご利用は自己責任のうえLive口座での本稼働は避けるようにお願いします

今回のCFD用EAは初期資金100万円をSP500日足で稼働させる予定で作りました。
デフォルトのパラメーター設定もそれに合わせてあります。

ロジック(取引手法)は本当にシンプルで、50日移動平均線が上昇中のときに1SMAがゴールデンクロスしたらエントリーとしました。
利確と損切の幅はpipsではなく1000pointsですがパラメーター設定で変更可能です。

本当はローソク足が50SMAへゴールデンクロスしたときにしたかったのですが、直接の値動きをあてはめるとデッドクロスの時でも当日の値動きのノイズでエントリーしてしまうケースが頻発してしまったので、1日移動平均線を使ってみました。
しかしながら1SMAを使ってもノイズがある時はあるので、使いながら修正するかもしれません。

今回のEAはバックテストでの挙動は確認できたものの、プレフォワードテストが実施できなかったのでその点不安もあります・・・
何れにしても2連続で損失が出たら一旦EAを停止して様子をみるつもりです。
プレテストできる環境が欲しいのでMT4でEA使用可の国内業者があれば是非教えて貰いたいです(ノ_く。)

 

(後日50SMAだけでなく100SMAや200SMAにもゴールデンクロスしたときエントリーするように、それぞれ3つのチャートにこのEAを適用するようにしました。)

 

//+------------------------------------------------------------------+
//|                                                     ニャン吉CFD-SMA |
//|                         商用利用及び再配布を禁じます,c2021.8,ニャン吉ちゃんねる|
//|                                          https://ニャン吉ちゃんねる.com |
//+------------------------------------------------------------------+
#property copyright   "商用利用及び再配布を禁じます,c2021.8,ニャン吉ちゃんねる"
#property link        "https://ニャン吉ちゃんねる.com"

input int Magic =11;
input double Lot =10;
input double MAPeriod =50;
input double TakeProfit =1000;
input double StopLoss =1000;

   int CurrentOrder()
    {
   int cnt=0; 
   for(int i=0;i<OrdersTotal();i++) {   
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
      if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;     
      if(OrderType()==OP_BUY) {
         cnt++;
      }
      if(OrderType()==OP_SELL){
         cnt++;
      }   
    }
    return(cnt);
    }   

void OnTick(void)
  {
   double MA50c,MA50p,MA1c,MA1p;
   int    ticket;

   MA50c=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,0);
   MA50p=iMA(NULL,0,MAPeriod,0,MODE_SMA,PRICE_CLOSE,1);  
   MA1c=iMA(NULL,0,1,0,MODE_SMA,PRICE_CLOSE,0);
   MA1p=iMA(NULL,0,1,0,MODE_SMA,PRICE_CLOSE,1);

   if(CurrentOrder()<1)
     {   
    if(MA1p<=MA50c && MA50c<MA1c && MA50p<=MA50c)
        {
         ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,30,Ask-Point*StopLoss,Ask+Point*TakeProfit,NULL,Magic,0,Green);
         if(ticket>0)
           {
            if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
               Print("BUY order opened : ",OrderOpenPrice());
           }
         else
            Print("Error opening BUY order : ",GetLastError());
         return;
        }
      return;
     }       
    }

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です