จากคำถามของเพื่อนๆ ในกลุ่ม fxDreema Academy ครับว่า ต้องการโชว์ Drawdown บน mt5 แต่ฟังก์ชันของ fxDreema ดันไม่มีมาให้แบบของ mt4.. จะต้องแก้ไขยังไง?? คำถามนี้ดีมากๆ ครับ เราจะขอนำเสนอการใช้ Custom mql block โดยให้ใส่ Code ดังต่อไปนี้ครับ
double CurrentEquity = AccountEquity();
if (CurrentEquity > MaxEquity) {MaxEquity = CurrentEquity;}
if (CurrentEquity < MinEquity) {MinEquity = CurrentEquity;}
DrawdownEquity = MaxEquity – MinEquity;
DrawdownPercent = ((MaxEquity – MinEquity) / MaxEquity) * 100;
ซึ่งเพื่อนๆ พี่ๆ สมาชิกทุกท่านสามารถ Copy Code เหล่านี้ไปวางใน custom mql block ตามตัวอย่างจากรูปที่ 1 ได้เลยครับ โดยเมื่อ Copy ลงไปวางแล้ว ให้ตั้งค่า Variable ต่างๆ ตามรูปได้เรย 😀
บางท่านเห็นจากรูปที่ 1 แล้วเกิดข้อสงสัยว่า ทำไมจึงต้องตั้งค่า Min Equity ไว้ที่ 1,000,000 ด้วยล่ะครับ… คำตอบคือ ถ้าไม่กำหนดค่าเริ่มต้น MinEquity หรือกำหนดเป็น 0 โค้ดจะไม่สามารถอัปเดตค่า MinEquity ได้อย่างถูกต้องในรอบแรก เพราะว่า CurrentEquity (ทุนบัญชีจริง) จะไม่มีวันน้อยกว่า 0 นั่นเองครับ
พูดง่ายๆว่า ตั้งให้สูงเข้าไว้เพื่อให้แน่ใจว่าในการรันครั้งแรก ๆ ของ EA ค่าของ CurrentEquity (ซึ่งเป็นค่าปัจจุบันของทุนบัญชี) จะต้องน้อยกว่าค่านี้แน่นอนครับ
ความหมายของตัวแปรและคำสั่งในโค้ด
ถึงแม้จุดเด่นของ fxDreema คือการเขียน EA โดยไม่ต้องอาศัยการ Coding แต่บางอย่าง ทาง fxDreema ก็ยังไม่ตอบโจทย์ หรือ มีข้อจำกัดอยู่บ้าง ดังนั้นการที่เราพอจะมีความรู้ในเรื่องของการอ่าน Code เอาไว้บางเล็กน้อยก็ไม่ใช่เรื่องเสียหายอะไร.. เอาล่ะ เรามาเริ่มกันที่บรรทัดแรกกันเลยครับ
double CurrentEquity = AccountEquity();
หมายความว่า CurrentEquity คือ มูลค่าทุนปัจจุบันจาก ในขณะที่ AccountEquity() ซึ่งรวมกำไร/ขาดทุนที่ยังไม่ปิด
if (CurrentEquity > MaxEquity) {MaxEquity = CurrentEquity;}
if (CurrentEquity < MinEquity) {MinEquity = CurrentEquity;}
หมายความว่า
- หากทุนปัจจุบันมากกว่าค่าสูงสุดที่เคยมี MaxEquity จะถูกอัปเดตให้เท่ากับทุนปัจจุบัน
- หากทุนปัจจุบันน้อยกว่าค่าต่ำสุดที่เคยมี MinEquity จะถูกอัปเดตเช่นกัน
- เป็นการติดตามค่าสูงสุดและต่ำสุดของ equity
DrawdownEquity = MaxEquity – MinEquity;
หมายความว่า DrawdownEquity คือ ความแตกต่างระหว่างจุดสูงสุดและต่ำสุดของทุน (หน่วยเป็นเงิน)
DrawdownPercent = ((MaxEquity – MinEquity) / MaxEquity) * 100;
หมายความว่า DrawdownPercent คือ เปอร์เซ็นต์ของ drawdown เทียบกับจุดสูงสุดของทุน
สรุป
โค้ดนี้เหมาะสำหรับการติดตาม drawdown ของระบบแบบ Real-time ซึ่งมีประโยชน์มากสำหรับการควบคุมความเสี่ยง และสามารถนำไปใช้ร่วมกับการตัดสินใจปิด EA หรือหยุดเทรดเมื่อเกิด drawdown เกินระดับที่กำหนดครับ
"เริ่มต้นอย่างช้าๆ แต่ชัดเจน"
ให้เราได้ดูแลคุณ...
eaforexcenter.com