อ่านดูแล้ว งงๆ นะครับ ดูเหมือนไม่ใช่การ TrailingStop เลย แต่ถ้าจะให้ตามความต้องการก็
void OnTick()
{
if(GetProfit()>0)
CloseAll();
}
double GetProfit ()
{
double TotalBuyProfit = 0;
for(int iPos= OrdersTotal()-1; iPos >= 0; iPos--)
{
if(OrderSelect(iPos, SELECT_BY_POS) && OrderMagicNumber() == magicNumber && OrderSymbol() == Symbol())
{
TotalBuyProfit += OrderProfit()+OrderSwap()+OrderCommission();
}
}
return (TotalBuyProfit);
}
void CloseAll()
{
bool result;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
if(OrderSymbol()==Symbol() && OrderMagicNumber()==magicNumber)
{
if(OrderType()==OP_BUY)
{
result=OrderClose(OrderTicket(),OrderLots(),Bid,999,clrNONE);
}
else if(OrderType()==OP_SELL)
{
result=OrderClose(OrderTicket(),OrderLots(),Ask,999,clrNONE);
}
}
}
}
}