作者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
推 Sunal:原程式開倉條件加入無任何倉位時才開 有倉位則判斷指標 11/05 01:10
→ Sunal:是否停損反手做或停利 11/05 01:10
→ Sunal:再寫個判斷Magic Number以區別手動程式單 11/05 01:12
推 Sunal:這樣指標訊號就會一直用到 寫成副程式方便許多 結構也好 11/05 01:21
→ huntersa:謝謝S大,實驗中 11/12 16:33