下载MetaTrader 5

我的智能测试怎么没有任何结果

要添加评论,请登录注册
Lu Dalong
13
Lu Dalong  

智能测试怎么没有任何结果,是不是设置错误,求助..

Rashid Umarov
管理员
12611
Rashid Umarov  
Place your code if you want someone help you.
Lu Dalong
13
Lu Dalong  

谁帮我看一下这个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.
mt520131003
52
mt520131003  
呵呵,你的获利为零,不会有什么结果的。
Rashid Umarov
管理员
12611
Rashid Umarov  
How do you backtest this EA? On what time frame? Do you have Daily and H1 period history on a testing symbol?
要添加评论,请登录注册