作者huntersa (猎人)
看板Trading
标题[问题] MT4条件式平仓
时间Sun Nov 4 18:03:18 2012
各位前辈大家好~
现在已知满足条件下开仓,
也晓得如何控制停损停利,
但小弟现在有个疑问关於条件式的平仓
举个例,以下是我的程式:
int start()
{
double ema15M10=iMA(Symbol(),PERIOD_M15,10,0,MODE_EMA,PRICE_CLOSE,0);
double ema30M10=iMA(Symbol(),PERIOD_M30,10,0,MODE_EMA,PRICE_CLOSE,0);
double ema15M20=iMA(Symbol(),PERIOD_M15,20,0,MODE_EMA,PRICE_CLOSE,0);
double ema30M20=iMA(Symbol(),PERIOD_M30,20,0,MODE_EMA,PRICE_CLOSE,0);
if((ema15M10<ema30M10)&&(ema15M20<ema30M20))//sell
{
sell(0.1,300,400,Symbol()+"sell",0);
}
if((ema15M10>ema30M10)&&(ema15M20>ema30M20))//buy
{
buy(0.1,300,400,Symbol()+"buy",0);
}
return(0);
}
int buy(double Lots,int loss,int profit,string comment,int magic)
{
int com=0;
int ticket=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderComment()==comment)
{
com=1;
}
}
}
if(com==0)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,30,Ask-loss*Point,Ask+profit*Point,comment,magic,0,Red);
}
return(ticket);
}
int sell(double Lots,int loss,int profit,string comment,int magic)
{
int com=0;
int ticket=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
if(OrderComment()==comment)
{
com=1;
}
}
}
if(com==0)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,30,Bid+loss*Point,Bid-profit*Point,comment,magic,0,Green);
}
return(ticket);
}
现在我想把平仓条件改为当其再次交叉时平仓
原来的停损及停利取消,要如何从这个程式去改呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 41.203.229.157
1F:推 Sunal:原程式开仓条件加入无任何仓位时才开 有仓位则判断指标 11/05 01:10
2F:→ Sunal:是否停损反手做或停利 11/05 01:10
3F:→ Sunal:再写个判断Magic Number以区别手动程式单 11/05 01:12
4F:推 Sunal:这样指标讯号就会一直用到 写成副程式方便许多 结构也好 11/05 01:21
5F:→ huntersa:谢谢S大,实验中 11/12 16:33