รวมสูตรโค้ด AmiBroker AFL

รวมสูตรโค้ด 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