void CloseAllOpens()
{
int total = OrdersTotal(); for(int i=total-1;i>=0;i--) {
OrderSelect(i, SELECT_BY_POS);
int type = OrderType();
bool result = false;
switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 5, Red );
break;
//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 5, Red );
}
if(result == false)
{
Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() );
Sleep(3000);
}
}
ดูจากฟังชั่นในการปิดออเดอร์แล้ว บรรทัดที่เป็นสีแดง มันแปลก ๆ ตรง total-1 เพราะว่า total จะรับค่ามาจาก OrdersTotal() ตามบรรทัดที่เป็นสีเขียว ก็แปลว่า จะต้องมีค่าเป็น 3 (เพราะเปิดออเดอร์ทั้งหมด 3 ออเดอร์)
แล้วทำไมต้องเอาไป ลบ 1 ด้วย ทั้ง ๆ ที่มี i-- อยู่ข้างหลังคอยลดจำนวนอยู่แล้ว ตอนนี้ผมลองเอา -1 ออก แล้ว ฟอเวิร์ดเทสต่อแล้วครับ ได้ผลอย่างไรจะมารายงานต่อนะ