EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: vicvic on ธันวาคม 24, 2012, 06:35:10 am
-
เช่นสมมุต มี order ที่เปิด และ pendingorder ที่เปิดอยู่
0000000 buy .....
0000001 sell stop ......
0000002 buy stop ......
0000003 sell .....
เวลาใช้ OrderSelect ก็ไร่ตามเลยหรือเปล่าคับ ทั้งออเด้อที่เปิดแล้วกับpending เช่น ออเด้อแรกเป็น0 ต่อไปก็เป็น 1 ไม่ว่าจะเป็นเปิดแล้วหรือpending
และเวลาใช้นับ OrderTotal ก็จะได้เท่ากับ 4 ใช่ไหมคับ
-
จากตัวอย่างที่ให้มานั้น ordertotal() = 4 ครับ
ส่วนวิธีการใช้ orderselect นั้นถ้ามี order มากกว่า 1 order ควรใช้ for วิ่งวนครับ
for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
สิ่งที่จะทำต่อหลังเลือก order ..........
}
-
ในกรณีที่เราต้องการเลือกเพื่อจะใช้งาน เช่นต้องการจะลบออเด้อ buy stop เราจะใช้ OrderSelect ที่เท่าไหร่คับ
หรือถามว่าเวลานับไร่ออเด้อนับไร่ลงมา ไม่ว่าเป็นออเด้อเปิดแล้วหรือยังไม่เปิด ใช่หรือเปล่าคับ
อีกข้อนะคับคำสั่ง ordermodify ไม่สามารถแก้ตรง orderopenprice() ได้หรอคับเปลี่ยนได้แต่ sl กับ tp เหรอคับ
-
1.กรณีต้องการลบ Order buy stop คุณต้องใช้ for วิ่งวนตามที่คุณ dataxdata แนะนำครับ แล้วสร้างเงื่อนไขเพิ่มเพื่อให้พบ buy stop
Ex.for(int i=0; i<OrdersTotal(); i++)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==OP_BUYSTOP)
{เงื่อนไข........OrderDelete}
}
2.เวลานับจะนับหมดครับ ทั้ง stop,limit หรือที่โดนเปิดไปแล้ว
3.ordermodify แก้ orderopenprice() ได้กรณีที่เป็น stop,limit ครับ แต่ค่าที่คุณจะตั้งใหม่ต้องห่างจากค่า Ask,Bid ตามที่ Broker กำหนดด้วยครับ เช่น ราคา E/U ตอนนี้ 1.32000 Broker กำหนดค่าที่ตั้งต้องห่างอย่างน้อย 20pip ดังนั้นหากคุณตั้ง orderopenprice()ใหม่เท่ากับ 1.31990 ก็จะตั้งไม่ได้