2016年1月2日土曜日

MACD Ver3 失敗作(><;) 達成のカギ、赤い飛行石!!

伏見稲荷1,000本鳥居へ行ってきました。
ひたすら続く鳥居そして無数の祠
そして目的地は眼力社
先見の目を授けてくれる神様です。
神様に5分後のチャートが見えるようにお願いしたところ、
「願いはかなえられよう」と神様の声が聞こえた気がします。
達成のカギと赤い飛行石です。
こんな鍵の形のチャートを作ってみたいものです。


今日はMACDのアベレージシステムを両建て向けに改良しました。
MT5では両建てをするとLONGとSHORTを自動的に相殺するらしいので、
それを作ってみました。
苦労したのですが、結果はご覧のとおりです。
相殺することで勝率が下がりました。
そして、負けトレードの単価の大きさに引きずられそのまま...
いちおうソースも載せておきますが、使用は厳禁です。
バルス!!
にほんブログ村 為替ブログ システムトレード 自作EA派へ
にほんブログ村

#property copyright "Copyright 2015/12/31,TACA"
#property link      "http://mt4kyoto.blogspot.jp/"
#define MAGIC 2016
datetime TimeOld;
int Ticket;
extern int Profit=10;
double PrSub;
double PosAve;
int d;
extern double Lots=0.01;
int start(){if(Time[0]!=TimeOld){TimeOld=Time[0];
//if(PosAve>Close[0])
{if(iMACD(NULL,1,12,26,12,0,0,2)<=iMACD(NULL,1,12,26,12,0,1,2))
{if(iMACD(NULL,1,12,26,12,0,0,1)>iMACD(NULL,1,12,26,12,0,1,1))
{EntryL();Averaging(); }}}
//if(PosAve<Close[0])
{if(iMACD(NULL,1,12,26,12,0,0,2)>=iMACD(NULL,1,12,26,12,0,1,2))
{if(iMACD(NULL,1,12,26,12,0,0,1)<iMACD(NULL,1,12,26,12,0,1,1))
{EntryS();Averaging(); }}}
 
}return(0);}
int Averaging()
{ 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+Profit*Point;}
      else
      {PrSub=PosAve-Profit*Point;}
    d=OrderModify(Ticket,OrderOpenPrice(),0,PrSub,0,CLR_NONE);
    }
  }
return(0);
}
int EntryL()
{
if (OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==1)
{ if(OrderType()==0)
  { if(PosAve>Close[0]){d=OrderSend(NULL,0,Lots,Ask,3,0,Bid+Profit*Point,"Long",MAGIC,0,Red);return(0);}}
  else
  { d=OrderClose(OrderTicket(),Lots,Ask,3,Blue);Comment("a");}}
else
{ d=OrderSend(NULL,0,Lots,Ask,3,0,Bid+Profit*Point,"Long",MAGIC,0,Red);return(0);}

return(0);}

int EntryS()
{
if (OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==1)
{ if(OrderType()==1)
  { if(PosAve<Close[0]){d=OrderSend(NULL,1,Lots,Bid,3,0,Bid-Profit*Point,"Short",MAGIC,0,Blue);return(0);}}
else
  { d=OrderClose(OrderTicket(),Lots,Bid,3,Red);}}
  else
{ d=OrderSend(NULL,1,Lots,Bid,3,0,Bid-Profit*Point,"Short",MAGIC,0,Blue);return(0);}

return(0);}

0 件のコメント:

コメントを投稿