เขียน EA
เขียนฟังก์ชันเปิด Order ใน EA — ครอบคลุมทั้ง BUY และ SELL แบบไม่เปิดซ้ำ
ฟังก์ชันเปิดออเดอร์คือจุดที่อันตรายที่สุดของ EA ทั้งตัว เพราะถ้ามันทำงานผิด ความเสียหายเกิดทันทีเป็นเงินจริง · หน้านี้สรุปสิ่งที่ต้องมีในฟังก์ชันนี้ และรูปแบบที่ต้องเลี่ยง ⇒ ตัวที่ต้องเลี่ยงที่สุดคือลูป "ส่งซ้ำจนกว่าจะสำเร็จ" ที่พบในตัวอย่างเก่าจำนวนมาก
อ่านฉบับเต็มที่นี่ → เริ่มต้นเขียน EA (MQL4) — โครงไฟล์ ฟังก์ชันหลัก Bid/Ask และ 5 บั๊กที่มือใหม่เจอซ้ำ
บทความหลักมีโค้ดฟังก์ชันเปิดออเดอร์เต็ม ๆ ที่นับไม้ก่อนยิงและไม่วนส่งซ้ำ · พร้อมโครงไฟล์และตารางเรื่อง Bid/Ask
บทความหลักมีโค้ดฟังก์ชันเปิดออเดอร์เต็ม ๆ ที่นับไม้ก่อนยิงและไม่วนส่งซ้ำ · พร้อมโครงไฟล์และตารางเรื่อง Bid/Ask
ทำไมลูปส่งซ้ำถึงอันตราย
ตรรกะที่ดูสมเหตุสมผลคือ "ถ้าส่งไม่สำเร็จก็ส่งใหม่จนกว่าจะได้" — ปัญหาคือคำสั่งที่ตอบกลับช้าไม่ได้แปลว่าล้มเหลว ในช่วงที่ตลาดผันผวน คำสั่งแรกอาจสำเร็จไปแล้วแต่ผลตอบกลับยังไม่มาถึง โค้ดจึงส่งใหม่ทับเข้าไป
| เขียนลูปให้ส่งซ้ำได้ | กรณีแย่สุดเปิดได้กี่ไม้ | ความเสี่ยงเทียบกับแผน |
|---|---|---|
| ไม่วนซ้ำเลย (ยิงครั้งเดียว) | 1 ไม้ | 1 เท่า — ตรงตามแผน |
| วนได้ 3 ครั้ง | 3 ไม้ | 3 เท่า |
| วนได้ 5 ครั้ง | 5 ไม้ | 5 เท่า |
| ไม่จำกัดจำนวนครั้ง | 🔴 ยิงไม่หยุดจนกว่าเงื่อนไขจะเปลี่ยน — เป็นรูปแบบที่ล้างพอร์ตได้เร็วที่สุด | |
⚠️
ทางแก้ไม่ใช่การลดจำนวนรอบ แต่คือการเปลี่ยนลำดับ — ให้ นับไม้ที่มีอยู่ก่อนยิงเสมอ ถ้ามีไม้ของ EA ตัวนี้อยู่แล้วก็ไม่ต้องเปิดใหม่ · แล้วถ้าส่งไม่สำเร็จจริง ให้ปล่อยผ่านไปรอบหน้า ไม่ใช่ยิงซ้ำในวินาทีเดียวกัน
สิ่งที่ต้องมีในฟังก์ชันเปิดออเดอร์
- Magic Number — เลขประจำตัว EA ⇒ ถ้าไม่มี
OrdersTotal()จะนับไม้ของทุกคนบนบัญชีนั้นรวมกัน และ EA สองตัวจะปิดไม้ของกันและกัน - นับไม้ของตัวเองก่อนยิง — วนดูออเดอร์ที่เปิดอยู่ กรองด้วย
OrderSymbol()และOrderMagicNumber()⇒ มีอยู่แล้วก็ไม่เปิดซ้ำ - เลือกราคาให้ถูกฝั่ง — BUY ส่งที่
Ask· SELL ส่งที่Bid⇒ ดูรายละเอียดที่ Bid กับ Ask ก่อนเขียน EA - ตั้งเพดานความคลาดของราคา — ค่านี้ตัดสินว่าคำสั่งจะถูกปฏิเสธหรือเข้าที่ราคาแย่ลง ⇒ อ่านตัวเลขว่ากินแผนไปเท่าไรที่ Requote คืออะไร
- อ่านค่า error เมื่อไม่สำเร็จ —
GetLastError()แล้วPrint()ออกมา ⇒ ไม่งั้นจะไม่มีทางรู้ว่าทำไมไม่เข้า
อ่านต่อในบทความหลัก
- โค้ดฟังก์ชันเปิดออเดอร์เต็ม ๆ — มี
CountMyOrders()ที่กรองด้วย Magic Number และไม่วนส่งซ้ำ - โครงไฟล์ EA ที่ก็อปไปใช้ได้เลย — พร้อมตัวคุมให้ทำงานแท่งละครั้ง
- Bid กับ Ask — ตารางที่บอกว่าตั้ง TP ผิดข้างแล้วออกช้าไป 6 จุด
- ก่อนปล่อยลงบัญชีจริง — ลำดับทดสอบสามชั้นและคำถามที่แต่ละชั้นตอบได้จริง
→ อ่านฉบับเต็ม: เริ่มต้นเขียน EA (MQL4)
บทความนี้เป็นเนื้อหาให้ความรู้ด้านการเขียนโปรแกรมเท่านั้น ไม่ใช่คำแนะนำการลงทุน โค้ดตัวอย่างควรทดสอบบนบัญชีทดลองก่อนเสมอ การเทรดมีความเสี่ยงที่จะสูญเสียเงินลงทุน ผู้อ่านควรศึกษาและตัดสินใจด้วยตนเอง
ความคิดเห็น
แสดงความคิดเห็น