myMACD

//+------------------------------------------------------------------+
//|                                                       myMACD.mq4 |
//|                                                            cuiyi |
//|                                                       1010333562 |
//+------------------------------------------------------------------+
#property copyright "cuiyi"
#property link      "1010333562"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+


void OnTick(void)
  {
   double Macd[5],MacdMax,MacdMin,NowMacd,AverMacd,STD,Lot;
   int    total,T = 1;
    
   if(Hour()>15 && Hour()<23) {Lot=NormalizeDouble(AccountBalance()/200,0);}
   else {Lot=NormalizeDouble(AccountBalance()/400,0);}
    
   if((Hour()*100 + Minute()) < 500 || (Hour()*100 + Minute()) > 2240)  return;
   if(AccountBalance()<600 || IsTradeAllowed()==false) return;
   
   NowMacd=iMACD(NULL,T,10,20,6,PRICE_CLOSE,MODE_MAIN,0);
   Macd[0]=iMACD(NULL,T,10,20,6,PRICE_CLOSE,MODE_MAIN,1);
   Macd[1]=iMACD(NULL,T,10,20,6,PRICE_CLOSE,MODE_MAIN,2);
   Macd[2]=iMACD(NULL,T,10,20,6,PRICE_CLOSE,MODE_MAIN,3);
   Macd[3]=iMACD(NULL,T,10,20,6,PRICE_CLOSE,MODE_MAIN,4);
   Macd[4]=iMACD(NULL,T,10,20,6,PRICE_CLOSE,MODE_MAIN,5);
   AverMacd=(Macd[0]*5+Macd[1]*4+Macd[2]*3+Macd[3]*2+Macd[4])/(1+2+3+4+5);
   MacdMax=Macd[ArrayMaximum(Macd)];
   MacdMin=Macd[ArrayMinimum(Macd)];
   STD=iStdDev(NULL,T,6,0,MODE_EMA,PRICE_CLOSE,0);
       
   
   total=OrdersTotal();
   if(total<1)
    {
    datetime lastTrade = 0;
    int n;
    
    if(STD<6) return;
    for (n=0; n< OrdersHistoryTotal(); n++)
        {
        if(lastTrade < OrderOpenTime())
            {
            lastTrade = OrderOpenTime();
            }
        }
    
    if(lastTrade < iTime(Symbol(),T,0))
        {
        if(NowMacd > AverMacd)
            {
            OrderSend(Symbol(),OP_BUY,Lot,Ask,3,0,0,"",0,0,Blue);
            return;
            }
        if(NowMacd < AverMacd)
            {
            OrderSend(Symbol(),OP_SELL,Lot,Bid,3,0,0,"",0,0,Red);
            return;
            }
        }
    else return;
    }

   for(int i=0;i<OrdersTotal();i++)
    {
    
    if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES))    continue;
    if(OrderType()<=OP_SELL && OrderSymbol()==Symbol())
        {
        
        if(OrderType()==OP_BUY)
            {
            if(NowMacd < MacdMin)
              {
                if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
               Print("OrderClose error ",GetLastError());
              }
            break;
            }

       if(OrderType()==OP_SELL)
            {
            if(NowMacd > MacdMax)    
                {
                if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
                Print("OrderClose error ",GetLastError());
                }
            break;
            }
        }
    }
  }

转载于:https://my.oschina.net/u/3093769/blog/2870157

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值