「ถ้าสัมผัส OB แล้วให้แสดงลูกศร」แค่ให้ AI สร้างเครื่องมือเซ็นต์ก็ได้ ชนะ 71.4%
ช่วงนี้เล่นให้ AI สร้างเครื่องมือตีสัญญาณมาเรื่อยๆ
สิ่งที่น่าสนใจคือ เมื่อเขียน MQL4 ด้วยตัวเองจะใช้เวลาประมาณครึ่งวัน แต่โยนให้ AI ทำกลับใช้เวลาไม่กี่สิบนาทีก็ทำงานได้ ถ้าสามารถนิยามสเปคเป็นภาษาได้อย่างถูกต้อง ก็คงไม่จำเป็นต้องเขียนโค้ดเองแล้วนะ สบายขึ้นมาก
แล้วโจทย์ของครั้งนี้คือคำสั่งซื้อ-ขาย SMC (สมาร์ทเมนคอนเซ็ปต์) ที่เรียงลำดับคำสั่ง。
แม้ว่า X จะพอมีปรากฏบ่อย และฉันก็สนใจ เลยลองให้ AI ทำดูบ้าง
สรุปคือ อัตราชนะ 71.4%, PF 1.50, ค่าเฉลี่ยกำไรคาดหวัง +7.14 pips ซึ่งเป็นตัวเลขที่ออกมา
แต่เป็นตัวอย่างแค่ 14 ครั้ง นี่เป็นจุดสำคัญที่ต้องบอกไว้ตอนท้าย
---
แนวคิดของวิธีการ
แนวคิดของ OB (Order Block) โดยสรุปคือ“แท่งเทียนที่มีลายเซ็นต์คำสั่งขนาดใหญ่จากนักลงทุนสถาบันทิ้งไว้”ประมาณนี้
แท่งราคาที่เป็นแท่งล่างสุดก่อนการขึ้นแรง หรือแท่งราคาสีแดงสุดท้ายก่อนการลงแรงที่เห็นก่อนหน้า ซึ่งจะกลายเป็นแนวรับแนวต้านเมื่อราคากลับมาถึงภายหลัง
สิ่งที่อยากทำคือประมาณนี้
- ตรวจจับแรงขับเคลื่อน (Impulse) ที่แรง
- บันทึกแท่งกลับสีตรงก่อนหน้าเป็น OB
- เมื่อราคากลับมาถึงโซนนี้ ให้แสดงลูกศร
- เมื่อแตะโดนโซนครั้งหนึ่ง ให้ลบโซน (ใช้งานครบแล้ว)
เรียบง่าย แค่นี้เอง
ให้ AI จัดทำสเปค
ก่อนอื่นให้ AI ฟังคำถาม ระบบถามไปเรื่อยๆ สร้างสเปคตอนแรกนี้
> ต้องการสร้างเครื่องมือสัญญาณที่ใช้ SMC
> ก่อนอื่นอยากให้ทำการถาม-ตอบแล้วนิยามเป็นภาษา
AI จะถามคำถามเป็นชุดๆ แพลตฟอร์มคือ MT4 สร้าง OB เป็นหลัก สัญญาณออกทางไหน? ลูกศร
รวดเร็วแค่ไหน แต่ปัญหาคือถัดไป
> Q: แล้วเงื่อนไขการ “การสร้าง OB” นิยามอย่างไร
ถ้าพูดเป็นภาษายังไม่ได้ถูกต้อง จะติดขัด เพราะตัวเองก็สงสัยว่า “จริงๆ แล้วเขียนยังไงให้ถูกต้อง?” สุดท้ายตอบว่า “การสร้าง OB ตามการสะท้อนครั้งแรกหลัง OB ถูกสร้าง (นิยามทั่วไป)” แต่ AI ตอบได้ละเอียดกว่าฉัน
สุดท้ายมี 3 รายการที่ยังไม่ตัดสินใจ
1. ค่า Threshold ความรุนแรงของ impulses
2. จำนวนช่วง OB ที่ย้อนกลับไป
3. คำจำกัดความของ “touch” (ตัวจริง? หางแถว?)
ที่นี่ฉันตอบไปว่า
> ค่าเฉลี่ยระยะห่าง 20 แท่งล่าสุด บวกไปอีก 2 เท่า
> ครั้งล่าสุดถึง 3 แท่ง
> เป็นตัวจริง
AI ก็สรุปสเปคให้เรียบร้อย
ลอจิกฟลว์ รายการพารามิเตอร์ ค่าเริ่มต้น ทั้งหมดอยู่ในตาราง พร้อมนำไปเขียนโค้ดได้ทันที
ตรงนี้บอกตรงๆ ว่าถ้าฉันเขียนสเปคเอง ก็คงละเลยแน่นอน
“ประมาณนี้นะ” หรือคลุมเครือ แล้วค่อยเอาไปบั๊กทีหลัง AI ช่วยเรียบเรียงให้จบก็ดี
ให้ AI เขียนโค้ดได้เต็มร้อย
เมื่อสเปคแน่นก็โยนไปว่า “เขียนโค้ดให้หน่อย”
ไม่กี่นาทีถัดมา ได้ source MQL4 แล้วใช้งานได้
…ใช้งานได้จริง แต่พอใส่เข้าไปแล้วสัญญาณเก่ามีการแจ้งเตือนเสียงอะไรหลายรายการขึ้นมาพรวดเดียว。
เมื่อวางลงบนชาร์ต ปรากฏหน้าต่างแจ้งเตือนประมาณ 30 บานทันที จำได้ว่าเคยเจอบั๊กแบบนี้มาก่อน เลยลองส่งโค้ดใหม่
> ปรับให้แสดงแจ้งเตือนไม่นับซ้ำในช่วงโหลดข้อมูลเดิม
> ปรับให้ข้อความไม่เป็นรหัสภาษา (เป็นภาษาอังกฤษได้)
修正ที่ AI ส่งกลับมาคือดังนี้
ในช่วงที่สแกนแท่งเท่าเดิม จะมี Flag ที่คืนค่ากลับทันทีที่ข้อมูลประวัติถูกสแกนเสร็จ และเมื่อโหมดแท่งเรียลไทม์เริ่มทำงาน จะใช้งานปกติเท่านั้น แปรเป็นตัวแปร boolean ชื่อ g_isInitialScan 1 ตัว เพิ่มไว้ แล้วให้ทำงานจริงในลูปประวัติศาสตร์สลับ true/false เท่านั้น แบบง่ายๆ
นอกจากนี้ ปัญหาการแสดงภาษาแหงๆ ไม่ใช่ panel แต่เป็นตัวแจ้งเตือนในตัวเอง ซึ่ง AI แปลงภาษาญี่ปุ่นใน panel ทั้งหมดเป็นอังกฤษไปหมด “เออ ก็โอเค” ปล่อยไป นี่คือเรื่องทั่วไปของ AI ถ้ามีคำขอให้แก้เพียงหนึ่งข้อ มันจะไปแก้รอบๆ ด้วย
## ลืมเรื่องการตัดสินใจเบิกจ่าย
ตรงนี้ทำให้ฉันตระหนักบางอย่าง
เรื่องการตัดสินใจเบิกจ่ายไม่มี
สัญญาณเข้าออกออกมาได้ แต่ยังไม่กำหนดว่าจะออกจากตำแหน่งเมื่อไร ไม่สามารถทำ backtest ได้ ตอนแรกในการฟังสเปค AI ก็ไม่ได้ถามและฉันก็ไม่ถาม ความละเลยของทั้งสองฝ่าย
จึงขอให้ AI ถามเพิ่มเติม
> Q: แนวคิดการตัดสินใจเบิกจ่ายเป็นอย่างไร
ตอบทันทีว่า “เมื่อแตะ OB ฝั่งตรงข้าม ให้เบิกจ่าย พร้อม TP/SL ภายในด้วย” ถ้าถือสถานะ BUY ให้ OB ฝั่ง Bearish ที่แท่งจริงแตะ ก็เบิกจ่าย ถ้าถือสถานะ SELL ให้ OB ฝั่ง Bullish ที่แท่งจริงแตะ ก็เบิกจ่าย และยังมี TP/SL เพื่อประกัน
ตรรกะนี้ดู SMС มาก และชอบด้วย เพราะถ้า OB ใช้งานได้แล้ว OB ฝั่งตรงข้ามก็จะเป็นจุดทำกำไรหรือจุดหยุดขาดที่ดีได้
ให้ AI ลงมือทำจริงและให้สัญลักษณ์การเบิกจ่าย (★) ปรากฏบนชาร์ตด้วย ทำให้สามารถรัน backtest ได้จริง
ผล Backtest
จากที่ทำได้จนถึงตอนนี้ ฉันรัน backtest 500 รอบ ผลลัพธ์ดังนี้
ดูตัวเลขได้ว่าโอเคพอสมควร อัตราชนะ 71.4%, PF 1.50, ค่าเฉลี่ยกำไรคาดหวัง +7.14 pips บวก 100 pips และ Drawdown สูงสุด 70 pips โดยเฉลี่ยเวลาถือประมาณ 89 นาที ใกล้เคียงเดย์เทรด
PF1.50 ไม่เลว โดยทั่วไประดับนี้มากกว่า 1.3 ถือว่าโอเคและพร้อมใช้งานจริง ค่าเฉลี่ยกำไรต่อเทรดถ้าเกิน +7 pips ก็ยิ่งดี
แต่
サンプル14回。少ない。
ฉันต้องบอกตรงนี้ว่าในการทดสอบ 500 บาร์แต่มีแค่ 14 โอกาสในการเข้าเทรด นี่อาจเป็นเรื่องบังเอิญที่โชคดีอยู่แค่นั้น ความน่าจะเป็นที่ชนะจริงๆ อาจน้อยกว่านี้
บทเรียนที่ได้
①ขั้นตอนให้ AI สร้างสเปคไม่ควรขาดตอนเด็ดขาด
ถ้าฉันเขียนเองคร่าวๆ แล้วไปเขียนโค้ด มักจะลืมเรื่องการตัดสินใจเบิกจ่าย ซึ่งเป็นจุดที่สำคัญมาก หากถามให้ครบตั้งแต่การเข้าเทรด การเบิกจ่าย และการห้ามใช้งาน จะทำให้ภายหลังทำงานง่ายขึ้น
② AI เมื่อบอกว่า “แก้แค่หนึ่งข้อ” มักจะปรับรอบๆ ให้หมด
ถ้ากรอกข้อความเกี่ยวกับข้อความแสดงผลที่เป็นภาษาอังกฤษ AI จะเปลี่ยนภาษาญี่ปุ่นทั้งหมดเป็นอังกฤษด้วย ลองให้เลือกแก้ไขให้ชัดเจน หรือยอมรับมันไปก่อน แล้วค่อยระบุขอบเขตการแก้ไข
③ ตัวเลข backtest ไม่ใช่ตัวเลขที่ควรเชื่อทั้งหมด
เห็นอัตราชนะ 71.4% แล้วคิดว่าใช่เลย ต้องระวังเพราะจำนวนตัวอย่างน้อย หากต้องการใช้งานจริงควรทดสอบเพิ่มเติมในระยะเวลายาวกว่านี้
อินดิเคเตอร์ที่พัฒนาเสร็จจะถูกเผยแพร่ในบทความถัดไป หากสนใจก็สามารถลองใช้งานได้
---
ちなみに、この連載でやってる「AIにサインツール作らせる流れ」、全部テンプレ化して販売してます。
**ระบบ AI สำหรับการผลิตสัญญาณ FX ระดับมือออาชีพ**
→ ประกอบด้วย prompt สำหรับสร้างสเปค, prompt สำหรับสร้างโค้ด, วิธีแก้ไขบั๊กที่พบบ่อย และทั้งหมดนี้จะมีรวบรวมเพิ่มขึ้นทุกสัปดาห์ในชุดบทความนี้