การใช้งานฟังชั้น Optimize เป็นการปรับแต่งค่าของระบบเพื่อใช้ในการเรียนรู้พฤติกรรมม หรือ เพื่อผลลัพธ์ ที่ดียิ่งขึ้น การทำ Optimize สามารถทำได้ โดยโปรแกรม AmiBroker ได้ทำการเตรียมเครื่องมือไว้แล้ว เพียงแต่เราต้องเข้าใจการใช้เครื่องมือ การใช้งาน ฟังชั่น Optimize สามารถนำไปประยุกต์ ได้หลากหลาย การใช้งานมากๆ ถ้าศึกษาให้เข้าใจอย่างลึกซึ้ง
จุดประสงค์: การใช้งานฟังก์ชั่น Optimize
- เข้าใจลักษณะการทำ Optimization
- เข้าใจ Code ในการทำ Optimization
- เข้าใจวิธีการปรับแต่งตารางผลลัพธ์ หลังทำ Optimization
เนื้อหา: การใช้งานฟังก์ชั่น Optimize
ในบทนี้จะกล่าวถึงการติดตั้ง code เพื่อทำการ Optimization ให้กับระบบ โดย บทก่อนหน้าที่เราทำการเขียน code เพื่อสร้างระบบออกมา โดย Code ที่เราทำการเขียนจะมีส่วนหนึ่งของ Code คือ
buyCon1 = Cross(MA(C, 40), MA(C, 200));
ในบทนี้เราจะทำการปรับแต่งค่าของ MA(C, 200) โดยจะใช้คำสั่ง
oMaSlow = Optimize (“oMaSlow”, 200, 150, 250, 50);
buyCon1 = Cross(MA(C, 40), MA(C, oMaSlow));
โดยโครงสร้างของคำสั่ง Optimize จะมีลักษณะดังนี้
Optimize( “description”, default, min , max, step )
default หมายถึง ค่าตั้งต้น ในที่นี้คือ ค่า 200 เมื่อทำการกด Backtest จะดึงค่านี้มาก่อน
min หมายถึง ค่าต่ำสุดที่จะให้โปรแกรม ทำการ Optimization ในที่นี้คือ 50
max หมายถึง ค่าที่มากที่สุดที่โปรแกรมจะทำการร Optimization ในที่นี้คือ 250
step หมายถึง ค่าที่จะให้โปรแกรมขยับ โดยโปรแกรมจะทำการขยับเป็นช่วงๆ ตาม step โดยในที่นี้คือ 50 ซึ่ง โปรแกรมจะทำการ Optimization ตามค่าดังนี้ 150, 200, 250 จะสังเกตว่าจะขยับทีละ 50
หลังทำการ Optimization แล้วโปรแกรมจะทำการสร้างตารางผลลัพธ์ ซึ่ง่เราสามารถ ปรับแต่งตารางได้ โดย คลิ้กขวาที่ Colum แล้วทำการปรับแต่ง Colum ต่างๆ
เว็ปปอ้างอิง https://www.amibroker.com/guide/afl/optimize.html
วีดีโอ: การใช้งานฟังก์ชั่น Optimize
คำบรรยายวีดีโอ
Step 50 เป็น 200 step 50 ก็คือ 250 ก็จะได้ค่ามา และก็อยู่ที่ว่าเราจะ source column พวกเนี่ย เพื่อพิจารณาว่าจะใช้ตัวไหน เป็นตัวบอกว่า ok อันนี้ดีกว่าอันนั้น ดีกว่าตัว parameter ที่เป็นตัวอื่นน่ะครับ อ่ะเราปกติเราก็มีค่านี้ อ่ะดึงสลับกันครับ ใช้ RAR ก็ได้ เราซ้อนดูเห็นไหมครับก็แสดงว่าตัวที่สามตัวสุดท้ายดีที่สุดคือตัว 250ตัว CAR/MDD ก็สูงสุดเห็นไหมครับ Max.Sys Drawdown ก็ต่ำ ต่ำมาก เดี๋ยวคราวนี้ท่านตารางท่านอาจจะไม่เหมือนผม ผมclick ขวา ก่อน Setup column ก่อน ผมกด reset ก่อนดีกว่า reset เรียบร้อยแล้ว อ่าจะไม่เหมือนผม จะไม่มา order ไม่เหมือนกันถูกไหมครับ อ่าวิธีทำคือ click ขวา เหมือนกันครับ ไปที่ set columnคราวนี้เนี่ยหลักๆ เอ่อ เดี๋ยวเราปิดให้หมดก่อนดีกว่าไหมครับ จะปิดเปิดได้น่ะครับ ตัวแปรหลักๆที่เราใช้ เราจะใช้พวกนี้อยู่น่ะครับแล้วก็ CAR/MDD click ค้างไว้ แล้ว move up ขึ้นมา แล้วก็ RAR click ไว้ แล้วก็ move up ขึ้นมา คราวนี้ก่อนที่จะได้ 2 ตัวนี้ออกมาเห็นไหมครับ มันหารโดย Max.DD อยู่ ก็ต้องเอา % system Max. sys% DD ควรจะทำเป็นระบบน่ะครับลากขึ้นมา ขึ้นไปอีกอยู่ข้างบนมันแล้วก็จะดูคราวๆแค่นี้ก่อนพิจารณาก่อนที่เหลือก็อธิบายไปหมดแล้วน่ะครับว่าอะไรเป็นอะไร อ่ะคราวนี้เราอยากเห็นตัวแปรด้วยใช่ไหมครับ อ่ะนี่ตัวแปร อ่ะเราก็กดอันนี้น่ะครับ แล้วก็กด move up ไปเรื่อยๆ ถึงไหนแล้วหล่ะ ไม่ใช่วิธีที่ฉลาดน่ะครับ move upไปเรื่อยๆ อันนี้ทำให้ดูก่อนมาถึงไหนแล้วครับ มาแล้วเราไว้ตรงแรกเลยแล้วกด ok นี่คือตัวของเราถูกไหมครับ มาแล้วเห็นไหมครับว่าตัว oMaSlow นี่นะครับ ตัวperiod 250 คือ caseที่3 จะเป็นcaseที่ส่งผลให้เราได้ RAR/MDD ดีที่สุด นี่น่ะครับ compound annual return นี่นะครับ Max.system drawdown ก็ดีที่สุด ที่นี้เราสงสัยไหมว่า เนี่ยวิ่งขึ้นมาเรื่อยๆ แล้วก็ดีขึ้นมาเรื่อยๆ เราก็ควรจะต้องสงสัยน่ะครับว่าเอะถ้าเป็น 300 จะเป็นยังไง เราก็มาเปลี่ยน ตัว max. ให้ขึ้นไปถึง 350 เลย แล้วเราก็ run optimizeมาคราวนี้ก็จะวิ่งไปเรื่อยๆ 200 250 300 350 โดย step ทีละ 50 ถูกป่าวครับ run optimize ดูอ่ะเรียบร้อยแล้ว คราวนี้เราก็ source ตาม Adjusted Return เหมือนเดิมจากมากไปน้อย ลองกดหลายๆครั้งดูมันจะมีมากไปน้อยกดอีกทีน้อยไปมาก เห็นไหมครับว่าตัวนี้คือตัวที่ 4 ตัวที่ 4 คืออะไร อ้าวแล้วที่เรา set เอาไว้หายไปไหนครับ เห็นไหมครับตรงนี้จะมีปัญหาน่ะครับ เดี๋ยวเราใน VDO ชุดหน้าเราจะมา setup tableให้ถูกต้อง หมายความตอนที่เรา run optimization ทุกครั้งที่เรา run มันจะหายไปอยู่ไหนครับ ท้ายที่สุดตลอด น่าเบื่อมาก เดี๋ยวเรามาแก้ปัญหาเรื่องนี้กันและเรามาดูตารางพวกนี้กันดีกว่า ok