วันพุธที่ 30 มีนาคม พ.ศ. 2559

Include file (จัดเก็บให้เป็นระเบียบซะหน่อย)


Include file (จัดเก็บให้เป็นระเบียบซะหน่อย)


แต่ก่อนผมเก็บ Include file ไว้ใน  C:\Program Files\AmiBroker  แล้วก็เรียกใช้โดยคำสั่ง
#include "myfunction.afl";   ก็ใช้งานได้เช่นกัน แต่ไฟล์ Include มันกระไปรวมอยู่กับพวกโปรแกรมต่างๆของ Amibroker


ตอนนี้ผมเปลี่ยนมาใช้วิธีการใหม่ เสียเวลาแก้ Code นิดหน่อย แต่ได้ความเป็นระเบียบในการจัดเก็บไฟล์

1  Click Menu Tool->Preferences จะได้ดังภาพ
2  กำหนด Standard include path:  เป็น C:\Program Files\AmiBroker\Formulas\Include
3  เราก็สามารถเก็บไฟล์พวก Include เช่น  myfunction.afl  ไว้ใน Folder ดังกล่าว
4  การเรียกใช้งานก็สามารถเรียกโดยคำสั่ง #include <myfunction.afl>;   โดยเปลี่ยนจากเครื่องหมาย "-" เป็น <-> แทน




Credit: เพื่อนร่วมก๊วน ที่ช่วยแนะนำให้นะครับ





วันเสาร์ที่ 26 มีนาคม พ.ศ. 2559

ทบทวนความรู้จากการเรียน ThaiQuants #1 (Simulation)


SIMULATION


แนวคิด Simulation คือ การเขียนโปรแกรมให้ Amibroker ทำการ Bakctest ระบบในจำนวนครั้งที่มากๆ
ภายใต้เงื่อนไขการซื้อขายเดียวกัน  แต่เราอาจจะจำลอง เหตุการณ์ที่ทำให้ผลลัพท์แตกต่างกันเช่น

1. Random Skip buy Signal   กรณีที่เกิดสัญญานซื้อ แล้วเราไม่ซื้อหุ้นตัวนี้ โดยให้ระบบทำการสุ่มข้ามสัญญานซื้อนี้ไปซะ

2 Random Slippage Buy/Sell Price  เราให้ระบบทำการ Random Slippage ราคาซื้อขายบางรายการเช่น

   2.1 จากที่เคยซื้อราคา 5 บาทก็ให้เพิ่มเป็น 5.05 
   2.2 จากที่เคยขายที่ราคา  5 บาทก็ปรับลดเหลือ 4.98 บาท

เมื่อได้ผลลัพท์จาการจำลองเหตุการณ์ 3000 ครั้ง เราก็นำผลลัพท์ที่ได้ เช่น CAR, MAX System Drawdown  ไปหาค่าเฉลี่ยใน Excel




ผมว่าแนวคิดการนำ Simulation มาใช้งานเป็นแนวคิดที่น่าสนใจ และอาจจะนำไปพัฒณาต่ออีกเช่นการ Add Noise ของราคา เพื่อทดสอบระบบ


หมายเหตุ
ผมคงไม่สามารถอธิบายขั้นตอนการทำแบบละเอียดได้ เพราะว่าเป็นเนื้อหาในหลักสูตรของทาง ThaiQuants ผมคงแค่สรุปแนวคิดมาให้ลองนำไปคิดค้นกันเองต่อไปนะครับ








วันจันทร์ที่ 21 มีนาคม พ.ศ. 2559

FUNDAMENTAL TIME SERIES

FUNDAMENTAL TIME SERIES
   
หลังจากทาง SiamQuant (http://www.siamquant.com/) ได้เปิดให้บริการข้อมูล Fundamental แบบเต็มรูปแบบ หลังจากได้ติดตามผลงานทีม SiamQuant แล้วต้องยอมรับว่าเป็นข้อมูลที่สมบูรณ์มากๆ
นอกจากข้อมูลที่ดีแล้ว ยังมีโอกาสเรียนรู้ตัวอย่าง Code Amibroker ด้วย

ผมเองตัดสินใจที่จะไม่ซื้อข้อมูล เพราะเหตุผลส่วนตัวบางประการ (แอบเสียดายโอกาสลึกๆ) เพื่อผลักดันตัวเองให้พยายามทำด้วยตัวของตัวเอง บทความนี้ได้แนวคิด และแรงบันดาลใจมากจากงานสัมนา SiamQuant


เนื่องจากการเก็บข้อมูล Fundamental ของ Amibroker ไม่รองรับการเก็บแบบ Time Series ซึ่งจะเปรียบเทียบให้ดูตามรูปด้านล่าง


 Amibroker เก็บข้อมูล Fundamental เหมือนกับเป็น Header หรือ เป็น Information ของหุ้นนั้นๆ ดังนั้นจะสามารถรองรับการเก็บข้อมูลได้เพียงล่าสุดเท่านั้นเช่น เก็บ PE ล่าสุด

คำสั่งสำหรับการนำข้อมูลมาแสดงผล  GetFnData( "EPS" ) เพื่ออ่านข้อมูลมาแสดงผล ข้อดีคือเราสามารถนำค่ามาแสดงได้ที่หน้าจอได้สะดวก เช่น วันที่ขึ้นเครื่องหมาย XD

สามารถศึกษาเพิ่มเติมจาก
https://www.amibroker.com/guide/afl/getfndata.html

จากภาพให้สังเกตุจุดที่ 1 และ 2  จะแสดงให้เห็นการเก็บข้อมูลที่ต่างกัน แบบที่ 2 จะเก็บข้อมูล Time Series ซึ่งเราจำเป็นจะต้องตั้งชื่อเช่น SYMBOL+"_FUND" เพื่อนำเอาค่า Open High Low Close มาใช้เก็บข้อมูลพื้นฐานอื่นๆ ซึ่งจะสามารถเก็บข้อมูลต่อวันได้ เพื่อจะนำมา Plot Graph หรือ Backtest


เนื่องจากพื้นที่การจัดเก็บมีแค่ Open High Low Close ผมจึงได้แบ่งตามประเภทของข้อมูลเช่น XD ผมก็เก็บเป็นอีกชื่อนึง VOL ก็เก็บเป็นอีกชื่อนึง


ส่วนการนำเข้าข้อมูล และการเตรียมข้อมูลนั้นลองศึกษาเพิ่มจาก Import Wizard ซึ่งจะเป็นการ Import ข้อมูลเพิ่มเข้าไปเรื่อยๆ โดยไม่ทำให้ข้อมูลเดิมเสียหาย

https://www.amibroker.com/guide/w_impwizard.html

 ส่วนตัวผมเองใช้การจัดเก็บข้อมูลใน SQL Database แล้วทำการดึงมาใช้งาน เพื่อความสะดวกในการจัดการข้อมูล เนื่องจากผมถนัดทางด้านนี้เดิมอยู่แล้ว


มาดูวิธีการนำข้อมูล TIME SERIES มาใช้งานกันบ้าง

PE=Foreign(Name()+"_FUND","OPEN");

ก็เป็นการสั่งให้ Amibroker ดึงข้อมูล PE มาเพื่อใช้ในการแสดงผล หรือ Backtest





การ Explore ข้อมูลออกมาเพื่อแสดงค่า



สำหรับโหลดข้อมูลย้อนหลัง ซื้อบัตรได้ตามร้านซีเอ็ด
http://www.setsmart.com/ism/login.jsp

สำหรับแหล่งข้อมูลพื้นฐาน ผมแนะนำคุณครรชิต เห็น Excel การเก็บข้อมูลของแกแล้วต้องยอมรับว่าแกขยันมากกว่าผมหลายเท่าตัวอยู่ ผมยังแกะข้อมูลที่ได้จากแกมาใช้ไม่หมดเลย นอกจากเก็บเพื่อใช้งานแล้วยังมีน้ำใจให้เราได้นำมาศึกษาต่อยอดต่ออีก
 



http://www.facebook.com/kanchit.paisan

อันนี้ดีครับมีให้เรา Export ได้ด้วย

http://financials.morningstar.com/ratios/r.html?t=ADVANC&region=THA&culture=en-US