AmiBroker Code Fixing Problems from Data

หลายๆครั้งที่ผมเห็น นักพัฒนากลยุทธ์ระบบเทรด (เรียกสั้นว่า “ควอนทฺ” quants) ได้ทำการสร้างกลยุทธ์ที่ดีมีหลักการเหตุผล ถึงขั้นที่จะนำไปเทรดได้กำไรจริง แต่ปรากฎว่า ผลลัพธ์จากการทดสอบ (backtest result) กลับบอกว่ากลยุทธ์นั้นไม่กำไร/ขาดทุน ทำให้ quants เข้าใจผิดทิ้งกลยุทธ์นั้นไป (++ผิดหวังและท้อแท้) พลาดโอกาสในการลงทุนด้วยระบบของตนเอง เพียงเพราะ “ปัญหาที่เกิดจากข้อมูลต่อการทดสอบ” ซึ่งจริงๆแล้วสามารถป้องกันได้ด้วยการใช้โค้ดไม่กี่บรรทัด กลยุทธ์ที่ดีมีหลักการเหตุผล แต่ผลการทดสอบกลับขาดทุน อาจเพราะ โค้ดในการทดสอบไม่ตรวจสอบข้อมูลที่ผิดเพี้ยน เพื่อช่วยป้องกันเหตุการณ์ที่น่าเสียดายข้างต้น (แทนที่จะได้กลยุทธ์ดีๆของตนเองมาเทรดทำกำไร) ดังกล่าว quants จะต้องเข้าใจและโค้ด (Understanding & Coding) เรื่องการจัดการข้อมูลที่เกี่ยวข้องกับ หุ้นที่… split, delisted, renamed, suspended, และ tick size ตั้งแต่ก่อนจะทำการทดสอบ ดังนั้นจึงมีความจำเป็นมากๆที่ต้องเพิ่ม AmiBroker Code เพื่อหลีกเลี่ยงปัญหาต่างๆข้างต้น ถึงแม้ว่าโค้ดในส่วนนี้ จะไม่เกี่ยวข้องใดๆกับกลยุทธ์ก็ตาม โดยที่ Code ตัวช่วยจะเป็นชุดคำสั่งโค้ดเล็ก หรือที่เรียกกันว่า “Code Snippet” ซึ่งในโพสนี้จะแสดงตัวอย่างจริงพร้อมคำอธิบาย… Continue reading

Date and Time Functions in AmiBroker

รวมสูตรหลักๆที่เกี่ยวข้องกับ วัน และ เวลา ซึ่งสำคัญมากในการสร้างโค้ด โดยเฉพาะการทำ Exploration ใน AmiBroker Important Date & Time in AmiBroker Now เวลา ณ ปัจจุบัน “เวลาNow” DateTime เวลา ของ Bar “เวลาBar” แท่งนั้นๆ ที่กำลังถูก Backtest หรือ Exploration Day, DayOfWeek, Month, Year เป็น “เวลาBar” DateTimeToStr DateTimeAdd DateTimeDiff หมายเหตุ: นศ ต้องแยกให้ออกว่า ต้องการใช้เวลาของ อะไร เวลาNow หรือ เวลาBar มีบาง functions ที่ไม่ได้ถูกแสดงไว้ในนี้ เช่น DateNum เพราะ การนำไปใช้ต่อยอดมักมีปัญหา และ… Continue reading

SetForeign

SetForeign สูตร AmiBroker AFL สำหรับการดึงราคาข้อมูลของหุ้นตัวอื่นที่ไม่ได้ถูกกำลังสแกนเข้ามา เช่น ใช้ดึงราคา SET100 เพื่อใช้ทำ Market Filter

Continue reading

SetTradeDelays

SetTradeDelays สูตร AmiBroker AFL สำหรับการกำหนดจำนวนวันที่ต้องการเลื่อนออกไปเมื่อมีสัญญาณ Buy, Sell, Short, Cover เกิดขึ้น

Continue reading

SetPositionSize

SetPositionSize สูตร AmiBroker AFL สำหรับการแบ่งเงินลงทุนในการเข้าซื้อหุ้น ซึ่งมีหลักๆคือ แบ่งลงทุนแบบเปอร์เซนต์ แบบจำนวนเงิน แบบจำนวนหุ้น

Continue reading