นี่คือตัวที่ทำ backtest เลยครับ bass มาจาก firstea ที่ท่าน admin ทำไว้นั่นแหละครับ
เพราะยังอ่านค่าตัวอื่น ๆ ไม่ออก 555
ไม่ได้ทำอะไรนอกจากตัด ค่า ask/bid ออกจากคำสั่งส่งออเดอร์ ซื้อ/ขาย ครับ
extern int trailingStop = 50;
int start()
{
double ma10 , ma15 ,ma20 ,ma50 ;
int total;
int ticket;
ma10=iMA(NULL,0,10,0,MODE_SMMA,PRICE_MEDIAN,0);
ma15=iMA(NULL,0,15,0,MODE_SMMA,PRICE_MEDIAN,0);
ma20=iMA(NULL,0,20,0,MODE_SMMA,PRICE_MEDIAN,0);
ma50=iMA(NULL,0,50,0,MODE_SMMA,PRICE_MEDIAN,0);
total=OrdersTotal();
if(total<1)
{
if((ma20>ma50)==(ma10>ma15))
{
if(ma10>ma15)
{
ticket=OrderSend(Symbol(),OP_BUY,0.5,Ask,3,Bid-Point*150,Ask+Point*100,"firstea",0,0,Green);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
}
return (0);
}
if((ma50>ma20)==(ma15>ma10))
{
ticket=OrderSend(Symbol(),OP_SELL,0.5,Bid,3,Ask+Point*150,Bid-Point*100,"firstea",0,0,Red);
OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);
}
}
if(total==1)
{
if(OrderType() == OP_BUY)
{
if(trailingStop > 0)
{
if(Bid - OrderOpenPrice() > trailingStop*Point)
{
if(OrderStopLoss()==0 || (Bid - OrderStopLoss()> trailingStop*Point))
OrderModify(OrderTicket(), OrderOpenPrice(),
Bid - trailingStop*Point, OrderTakeProfit(), 0, Blue);
}
}
}
else
{
if(trailingStop > 0)
{
if(OrderOpenPrice() - Ask > trailingStop*Point)
{
if(OrderStopLoss() == 0 || OrderStopLoss()-Ask > trailingStop*Point)
OrderModify(OrderTicket(), OrderOpenPrice(),
Ask + trailingStop*Point, OrderTakeProfit(), 0, Red);
}
}
}
}
return(0);
}