รวมสูตรโค้ด AmiBroker AFL สำคัญๆที่ต้องใช้ในการเขียนระบบซื้่อขายหุ้น พร้อมตัวอย่างการใช้งานและการเขียนโค้ดที่ถูกต้อง ตาม ThaiQuants AmiBroker Code Template
[ms-protect-content id=”29,39″ access=”no” silent=”yes”]
[/ms-protect-content]- 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
- SetTradeDelays - SetTradeDelays สูตร AmiBroker AFL สำหรับการกำหนดจำนวนวันที่ต้องการเลื่อนออกไปเมื่อมีสัญญาณ Buy, Sell, Short, Cover เกิดขึ้น
- PositionScore - PositionScore
- SetPositionSize - SetPositionSize สูตร AmiBroker AFL สำหรับการแบ่งเงินลงทุนในการเข้าซื้อหุ้น ซึ่งมีหลักๆคือ แบ่งลงทุนแบบเปอร์เซนต์ แบบจำนวนเงิน แบบจำนวนหุ้น
- SetOption - SetOption
- ApplyStop - อธิบายการใช้สูตร ApplyStop