Place your code if you want someone help you.
谁帮我看一下这个EA为什么没有执行结果?谢谢
//+------------------------------------------------------------------+ //| MACD Sample. mq4 | //| Copyright ?2005, MetaQuotes Software Corp. | //| https://www.metaquotes.net// | //+------------------------------------------------------------------+ extern double TakeProfit = 0; extern double Lots = 0.2; extern double TrailingStop = 0; extern double MACDOpenLevel=3; extern double MACDCloseLevel=2; extern double MATrendPeriod=26; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { double DMacdCurrent, DMacdPrevious, DSignalCurrent,DSignalPrevious; double H1MacdCurrent, H1MacdPrevious, H1SignalCurrent,H1SignalPrevious; double Macdday, Signalday; int cnt, ticket, total; // initial data checks // it is important to make sure that the expert works with a normal // chart and the user did not make any mistakes setting external // variables (Lots, StopLoss, TakeProfit, // TrailingStop) in our case, we check TakeProfit // on a chart of less than 100 bars if(Bars<100) { Print("bars less than 100"); return(0); } if(TakeProfit<10) { Print("TakeProfit less than 10"); return(0); // check TakeProfit } // to simplify the coding and speed up access // data are put into internal variables DMacdCurrent=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,0); DMacdPrevious=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,1); DSignalCurrent=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); DSignalPrevious=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); H1MacdCurrent=iMACD(NULL,60,12,26,9,PRICE_CLOSE,MODE_MAIN,0); H1MacdPrevious=iMACD(NULL,60,12,26,9,PRICE_CLOSE,MODE_MAIN,1); H1SignalCurrent=iMACD(NULL,60,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0); H1SignalPrevious=iMACD(NULL,60,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); //MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0); //MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1); //Macdday=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_MAIN,1); //Signalday=iMACD(NULL,1440,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1); total=OrdersTotal(); if(total<1) { // no opened orders identified if(AccountFreeMargin()<(1000*Lots)) { Print("We have no money. Free Margin = ", AccountFreeMargin()); return(0); } // check for long position (BUY) possibility //if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious && //MathAbs(MacdCurrent)>(MACDOpenLevel*Point) && MaCurrent>MaPrevious) if(DMacdCurrent>H1MacdPrevious && H1MacdCurrent<0 && H1MacdCurrent>H1SignalCurrent && H1MacdPrevious<H1SignalPrevious) { //ticket=OrderSend(Symbol(),OP_BUY, Lots,Ask, 3, 0,Ask+TakeProfit*Point, "macd sample",16384,0,Green); ticket=OrderSend(Symbol(),OP_BUY, Lots, Ask, 3,0, 0,"macd sample", 16384, 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(0); } // check for short position (SELL) possibility //if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && // MacdCurrent>(MACDOpenLevel*Point) && MaCurrent<MaPrevious) if(DMacdCurrent<H1MacdPrevious && H1MacdCurrent>0 && H1MacdCurrent<H1SignalCurrent && H1MacdPrevious>H1SignalPrevious ) { ticket=OrderSend(Symbol(),OP_SELL, Lots, Bid, 3, 0,Bid-TakeProfit*Point, "macd sample",16384,0,Red); if(ticket>0) { if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice()); } else Print("Error opening SELL order : ", GetLastError()); return(0); } return(0); } // it is important to enter the market correctly, // but it is more important to exit it correctly... for(cnt=0;cnt<total;cnt++) { OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES); if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==Symbol()) // check for symbol { if(OrderType()==OP_BUY) // long position is opened { // should it be closed? //if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious && // MacdCurrent>(MACDCloseLevel*Point)) if(H1MacdCurrent<H1SignalCurrent && H1MacdPrevious>H1SignalPrevious) { OrderClose(OrderTicket(), OrderLots(), Bid, 3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if(Bid-OrderOpenPrice()>Point*TrailingStop) { if(OrderStopLoss()<Bid-Point*TrailingStop) { OrderModify(OrderTicket(), OrderOpenPrice(), Bid-Point*TrailingStop, OrderTakeProfit(), 0,Green); return(0); } } } } else // go to short position { // should it be closed? //if(MacdCurrent<0 && MacdCurrent>SignalCurrent && // MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*Point)) if(H1MacdCurrent>H1SignalCurrent && H1MacdPrevious<H1SignalPrevious) { OrderClose(OrderTicket(), OrderLots(), Ask, 3,Violet); // close position return(0); // exit } // check for trailing stop if(TrailingStop>0) { if((OrderOpenPrice()-Ask)>(Point*TrailingStop)) { if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0)) { OrderModify(OrderTicket(), OrderOpenPrice(), Ask+Point*TrailingStop, OrderTakeProfit(), 0,Red); return(0); } } } } } } return(0); } // the end.
呵呵,你的获利为零,不会有什么结果的。
How do you backtest this EA? On what time frame? Do you have Daily and H1 period
history on a testing symbol?
智能测试怎么没有任何结果,是不是设置错误,求助..