2015年12月25日金曜日

EA金閣寺!! ☆☆☆☆ 無料MT4ソースコード公開

クリスマスといえばサンタクロースがプレゼントを持ってくる日ですね。
うちのサンタクロースは毎年「本」そうBOOKを持ってきました...

サンタクロースといえばオランダです。
12月初めにSinterklassがスペインからプレゼントを持ってやってきます。
そしてクリスマスには北欧からSanta Clausがまた、プレゼントを持ってくるのです!

そして今日 わたくしがサンタクロースになる日がやってきました。
プレゼントはEA金閣寺 ゴールデンテンプルです!!

アルゴリズムですが、15分毎にCOAの20時間、5時間、75分をチェックします。
三つすべてが上昇もしくは下降する時にエントリーします。
LONGの場合、上がれば利益確定。
下がった時にまたCOA三つが上昇シグナルを出していれば追加エントリー、
そしてすべてのポジションを平均化し利益確定ポイントを下げます。
また両建ては武士道に反するようですので、
片方のポジションを持っている時には、
反対のエントリーは行いません。
時間固定です。15分足で動かしてください。

そしてレポートです。
例によって期間は2015.1.1.-2015.11.30(年が明けたら12.31にしたほうがいいか悩んでいます)
100万円が227万円になっています。
ウハウハですね。

たまに大谷がありますが三日ほどで消えるはずです。
この大谷がなければEA金閣寺の必要証拠金を減らし、ロットを上げることができます。
完全放置でしたら現在の設定かもう少しProfitやロットを下げてください。

※監視下でやる場合ですが、常に平均化しますので、本数が増えて来たら利益の出ているポジションだけ手で利益確定してしまうのもありです。
ロットを増やしてがつがつ稼ぐイメージですね。
そして、大きな指標発表前に止めることで必要証拠金を下げつつロットを上げることができます。

にほんブログ村 為替ブログ システムトレード 自作EA派へ
にほんブログ村
Doei Merry Christmas!!
//  金閣寺 Rock on Z So Cock Z 2015/12/25
#property copyright "TACA"
#property link "mt4kyoto.blogspot.jp"
#define  MAGIC 1397
extern int Profit=200;
double ProfitP;
extern double Lots=0.03;
double PrSub;
int d;
int Ticket;
int Mode;
int LorS;
datetime TimeOld;
int Judge=0;
double PosAve;
int OnInit(){
ProfitP=Profit*Point;
return(0);}
void OnTick(){
  if(OrdersTotal()==0){Mode=0;}
  if(Time[0]!=TimeOld)
    {TimeOld=Time[0];COACheck();Averaging();}
return;}
int Averaging(){
 PosAve=0;double LastPrice=0;double PosAll=0;double PosNum=0;
  for(int i=0;i<OrdersTotal();i++)
  { d=OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
    LastPrice=OrderOpenPrice();
    PosAll+=LastPrice*OrderLots();
    PosNum+=OrderLots();
  }
  if(PosNum==0){PosAve=0;}
  else{ PosAve=PosAll/PosNum;}  
  for(i=0;i<OrdersTotal();i++)
  { if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==True)
    { Ticket=OrderTicket();
      if(OrderType()==0)
        {PrSub=PosAve+ProfitP;}
      else
        {PrSub=PosAve-ProfitP;}          
      d=OrderModify(Ticket,OrderOpenPrice(),0,PrSub,0,CLR_NONE);
    }
  }
return(0);}
int COACheck(){
Judge=0;
if (iMA(NULL,PERIOD_M15,5,0,MODE_SMA,PRICE_CLOSE,1)>
iMA(NULL,PERIOD_M15,5,0,MODE_SMA,PRICE_OPEN,1))
{Judge++;}else{Judge--;}
if (iMA(NULL,PERIOD_H1,5,0,MODE_SMA,PRICE_CLOSE,1)>
iMA(NULL,PERIOD_H1,5,0,MODE_SMA,PRICE_OPEN,1))
{Judge++;}else{Judge--;}
if (iMA(NULL,PERIOD_H1,20,0,MODE_SMA,PRICE_CLOSE,1)>
iMA(NULL,PERIOD_H1,20,0,MODE_SMA,PRICE_OPEN,1))
{Judge++;}else{Judge--;}
switch(Mode){
    case 1:
    if  (Judge==3){EntryL(1);}
    break;
  case -1:
    if (Judge==-3){EntryS(1);}
    break;
  case 0:
    if  (Judge==3){EntryL(1);}
    else{if (Judge==-3){EntryS(1);}}
    break;}
return(0);}
int EntryL(int Count){
if(PosAve>Close[0]){
d=OrderSend(Symbol(),OP_BUY,Lots*Count,Ask,10,0,Ask+ProfitP,"",MAGIC,0,Red);
Mode=1;}
return(0);}
int EntryS(int Count){
if(PosAve<Close[0]){
d=OrderSend(Symbol(),OP_SELL,Lots*Count,Bid,10,0,Bid-ProfitP,"",MAGIC,0,Blue);
Mode=-1;}
return(0);}

7 件のコメント:

  1. 初めまして
    こちらのEAですがショートしかエントリーしないのですがロングもエントリーするようにするには、どこをどうすれば良いでしょうか?

    返信削除
    返信
    1. ご連絡ありがとうございます。
      プログラムの構造がうまくないですね。
      作成しなおしましたので、こちらを御利用下さい。
      ついでに、マジックナンバーやコメントなどを変更できるようにしました。


      // 金閣寺 Rock on Z So Cock Z 2015/12/25
      // Update 2020.03.15
      #property strict
      #property copyright "TACA"
      #property link "mt4kyoto.blogspot.jp"
      input int MAGIC=1397;
      extern int Profit=200;
      input string COMMENT="Kinkaku-G";
      extern double Lots=0.03;
      int d;
      double ProfitP;
      datetime TimeOld;
      string S=_Symbol;
      int OnInit()
      {
      ProfitP=Profit*Point;
      return INIT_SUCCEEDED;
      }
      void OnTick()
      {
      if(Time[0]==TimeOld)return;
      TimeOld=Time[0];
      double PosAll=0,PosAve=0,PrSub;
      int PosNum=0,Mode=0,Judge=0;
      for(int i=0; iPrSub)d=OrderModify(OrderTicket(),OrderOpenPrice(),0,PrSub,0);
      }
      else
      {
      Mode=1;
      PrSub=PosAve+ProfitP;
      PrSub=NormalizeDouble(PrSub,_Digits);
      if(OrderTakeProfit()iMA(S,15,5,0,0,PRICE_OPEN,1))Judge++;
      if (iMA(S,60,5,0,0,PRICE_CLOSE,1)>iMA(S,60,5,0,0,PRICE_OPEN,1))Judge++;
      if (iMA(S,60,20,0,0,PRICE_CLOSE,1)>iMA(S,60,20,0,0,PRICE_OPEN,1))Judge++;
      if(Mode==1&&Judge==3&&PosAve>Close[0])EntryL();
      if(Mode==-1&&!Judge&&PosAve<Close[0])EntryS();
      if(!Mode&&Judge==3)EntryL();
      if(!Mode&&!Judge)EntryS();
      }
      void EntryL()
      {
      d=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,0,Ask+ProfitP,COMMENT,MAGIC,0,clrRed);
      }
      void EntryS()
      {
      d=OrderSend(Symbol(),OP_SELL,Lots,Bid,10,0,Bid-ProfitP,COMMENT,MAGIC,0,clrBlue);
      }

      削除
    2. ありがとうございます。
      しっかり勉強したいと思います。

      削除
    3. コンパイルしたら4か所エラーになります涙

      削除
    4. このコメントは投稿者によって削除されました。

      削除
    5. このコメントは投稿者によって削除されました。

      削除
  2. コピペがうまくいきませんので新しいページにアップします(^^;)
    文字数オーバーかな

    返信削除