input int time1 = 4;
input int time2 = 13;
extern int takeprofit =30;
int start()
{
int ticket;
double ma1=iMA(NULL,0,time1,0,MODE_EMA,PRICE_CLOSE,0);
double ma2=iMA(NULL,0,time2,0,MODE_EMA,PRICE_CLOSE,0);
double ma11=iMA(NULL,0,time1,0,MODE_EMA,PRICE_CLOSE,1);
double ma22=iMA(NULL,0,time2,0,MODE_EMA,PRICE_CLOSE,1);
if (OrdersTotal() < 1) //--如果总订单数小于1
{
if (ma1<ma2&&ma11>ma22 ) //--满足开空仓条件
{
ticket = OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"开空仓",12345,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);
}
}
if ( ma1>ma2&&ma11<ma22) //--满足开多仓条件
{
ticket = OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"开多仓",12345,0,Green);
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);
}
}
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=12345 || OrderSymbol()!=Symbol()) continue;
//---- check order type
if(OrderType() == OP_BUY)
{
if(takeprofit == 30)
{
OrderClose(OrderTicket(),1,Bid,3,White);//如果持仓是多单,则发出平仓指令
break;
}
}
if(OrderType()== OP_SELL)
{
if(takeprofit == 30 )
{
OrderClose(OrderTicket(),1,Ask,3,White);//如果持仓是空单则发出平仓指令
break;
}
}
}
}
}
说句不好听的话,你这个EA简直不知所云。。。 |