EA Programing => ปัญหาที่พบในการเขียน EA => Topic started by: TvT on ตุลาคม 28, 2010, 09:41:00 pm
-
ผมอยากทราบวิธีการใส่ชุดคำสั่ง martingale ครับ
เช่นผมมีระบบดังนี้
double lots
if (XXXXXX)
oredersend(op_buy , lots , .......................)
if (YYYYYY)
oredersend(op_SELL, lots , .......................)
ถ้าผมต้องการปรับเป็น martingale ต้องปรับยังไงบ้างครับ(สีแดงคือคำถามครับ)
double lots
double martingaleLVL = 2 อันนี้คือจำนวนเท่าที่ต้องการเบิ้ลต่อครั้ง
ตรงนี้ต้องการตั้งระบบ money management เข้าใจแบบนี้ถูกไหมครับ สมมติว่าทุกๆ 3000 เราจะเปิด order เริ่ม 0.1 lot- เศษปัดลง ดันนั้นเราใช้คำสั่ง
double startlot = normalizedouble((freemargin/3000),1) = คำสั่งอะไรใช้ check freemargin ครับ และ normalize เศษปัดทิ้งเสมอใช่ไหมครับ
อันนี้ไม่ค่อยแน่ใจคำสั่งที่ต้องใช้นะครับ
ทำให้ com จำสัญญาล่าสุดที่ซื้อไปว่าจำนวน lots(double lastlots ขอคำแนะนำคำสั่งที่ใช้ครับ) และ กำไรหรือขาดทุน(ขอคำแนะนำคำสั่งที่ใช้ครับ)
if (ครั้งล่าสุดกำไร)
{lots = startlot
}
if (ล่าสุดขาดทุน)
{lots = lastlots * martingaleLVL
}
if (XXXXXX)
oredersend(op_buy , lots , .......................)
if (YYYYYY)
oredersend(op_SELL, lots , .......................)
เข้าใจว่าต้องเขียนราวๆนี้ครับ ขอให้ช่วยปรับให้ใช้ได้จริงหน่อยครับ ขอบคุณครับ
-
ขอถามเพิ่มก่อนจะตอบทีเดียวนะครับ
if (ครั้งล่าสุดกำไร)
{lots = startlot
}
if (ล่าสุดขาดทุน)
{lots = lastlots * martingaleLVL
}
ตรงนี้คุณหมายความว่าถ้า order เก่าที่ปิดไปแล้วขาดทุนถึงเปิด lot เพิ่มที่ order ใหม่ใช้ไหมครับ คือการชื้อทีละ order หากปิดไปแล้วติดลบก็เพิ่ม lot ใช้ไหมครับ
-
ใช่ครับ ไม่ได้ต้องการแบบทบลงไป ให้จำว่าเมื่อของเดิมปิดขาดทุน ตอนเปิดใหม่ให้ทบลงไปครับ
-
normalize คำสั่งนี้ใช้ในการตัดจุดทศนิยมทิ้งเท่านั่นไม่ใช้ปัดเศษ ขึ้นหรือ ปัดเศษลงนะครับ ถ้าจะให้ปัดขึ้นหรือปัดลงให้ใช้ MathCeil() กับ MathFloor() ครับ ลองไปดูรายละเอียดการใช้ใน MQ4 ได้ครับ ส่วนเรื่องที่จะให้จำค่าเก่าว่า order ที่แล้วเปิดเท่าไรแล้วกำไรหรือขาดทุน ไม่ต้องเขียนอะไรให้ไปจำมันครับ ให้เราใช้
OrderSelect(OrdersHistoryTotal()-1,SELECT_BY_POS,MODE_HISTORY);
double lastlot=OrderLots();
double lastprofit=OrderProfit();
แบบนี้ครับเป้นการเรียกข้อมูลใน Account History ขึ้นมาใช้ได้เลยครับ
-
แล้ว lastprofit ก็ดูที่ >0 หรือ <0 ใช่มั้ยครับ
ขอบคุณ Admin มากครับ
-
ลืมถามอีกอย่างครับ
แล้วคำสั่ง check free margin ครับ
ต้องใช้คำสั่งอะไรครับ
-
แล้ว lastprofit ก็ดูที่ >0 หรือ <0 ใช่มั้ยครับ
ขอบคุณ Admin มากครับ
ใช่ครับ
-
ลืมถามอีกอย่างครับ
แล้วคำสั่ง check free margin ครับ
ต้องใช้คำสั่งอะไรครับ
double AccountFreeMargin( )