มีคำถามครับ ระหว่างการทำงานของ for loop ทั้ง 2 แบบ แบบไหนจะทำงานเร็วกว่า
แบบที่ 1
void Test Loop()
{
int i;
double TakeProfitBuy;
TakeProfitBuy = CalculateBuyProfit();
//----
if(CountBuy()>=1){
for(i=0;i<=OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
if(OrderType()==OP_BUY){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfitBuy,0,Lime);
}
}
}
}
if(CountBuy()>=2){
for(i=OrdersTotal();i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
if(OrderType()==OP_BUY){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfitBuys,0,Lime);
}
}
}
}
}
กับแบบที่ 2
void Test Loop1()
{
int i;
double TakeProfitBuy;
TakeProfitBuy = CalculateBuyProfit();
//----
if(CountBuy()>=1){
for(i=0;i<=OrdersTotal();i++){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
if(OrderType()==OP_BUY){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfitBuy,0,Lime);
}
}
}
}
}
void Test Loop2()
{
int i;
double TakeProfitBuy;
TakeProfitBuy = CalculateBuyProfit();
//----
if(CountBuy()>=2){
for(i=OrdersTotal();i>=0;i--){
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MAGICMA){
if(OrderType()==OP_BUY){
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),TakeProfitBuys,0,Lime);
}
}
}
}
}
ในกรณีที่มี Order เยอะ ตั้งการจะ Modify ทั้งชุด 10-15 order ขึ้นไป
** สังเกตุ ตรง Loop จะทำงานแบบ นับจากต้นไป ท้าย กับอีกอัน นับจากท้ายไปต้น
แบบไหนจะส่งข้อมูลไปหา Broker ได้เร็วกว่า อันนี้ไม่นับกับความเร็วเน็ตนะครับ แค่อยากทราบ ว่าแบบที่ผมแยกเป็น Method กับ ทำ Loop ใน method เดียว อันไหนจะเร็วกว่า
ขอบคุณครับ
ps. ถ้าจำไม่ผิด รู้สึกว่า แบบที่ 1 จะช้ากว่ารึป่าว เพราะการทำงานบน Mt4 มันจะทำแบบ บน ลงล่าง หรือว่าผมคิดไปเอง -..-
Edit : เพิ่มภาพประกอบการทำงาน
<< แทนจำนวน order
เริ่ม Modify จาก Loop แรก >>>>>>>
<<<<<< เริ่ม Modify จาก Loop 2
ครบหมดก็เสร็จ