4-3 ปรับเปลี่ยนตาราง Optimization ใน AmiBroker

การปรับเปลี่ยนตาราง Optimization ใน AmiBroker เป็นการปรับค่าผลลัพธ์หลังจากการทำ Optimization ไปแล้ว เพื่อให้ค่าผลลัพธ์ที่ได้มาอ่านได้ง่าย และสามารถปรับแต่และเลือกค่าผลลัพธ์ที่ดีออกมาได้

จุดประสงค์: กันความเสี่ยงและกำไร ApplyStop

  1. เข้าใจการปรับแต่งตารางผลลัพธ์
  2. เข้าใจวิธีการอ่านค่าของตารางผลลัพธ์
  3. เข้าใจถึงการเขียนคำสั่งให้โปรแกรม AmiBroker สามารถเรียงลำดับข้อมมูลได้

เนื้อหา: กันความเสี่ยงและกำไร ApplyStop

ในบทนี้จะกล่าวถึงการปรับแต่งค่าตารางผลลัพธ์ โดยหลังจากการที่เราทำการ Optimization แล้ว โปรแกรม AmiBroker จะทำการแสดงผลลัพธ์ออกมา จะเรียงลำดับ ตามข็อมูล default แต่เราสามารถเลิกการเรียงลำดับของข้อมูลได้ โดยทำการ คลิกขวา > SetUp โดย ถ้าเราไม่ต้องการข้อมูลทั้งหมด ทำการกดปุ่ม Taggle All แต่ถ้าเราต้องการข้อมูลทั้งหมดให้ทำการกดปุ่ม mark All โดย หลักๆ เราต้องการข้อมูลเพื่อใช้ในการวิเคราะห์ระบบดังนี้

[1] %win
[2] Net %Profit
[3] Exposure %
[4] CAR
[5] RAR
[6] %MaxDD
[7] RAR/MDD
[8] CAR/MDD

โดยจะมีค่าตัวแปรที่เราใส่ทำการ Optimization จะอยู่ใน Column ท้ายสุด โดย เราสามารถทำการให้โปรแกรม AmiBroker เลื่อนมาไว้ข้างหน้าได้โดยใช้คำสั่ง  SetOption
setOption (“ExtraColumnsLocation”,1);

โปรแกรมจะทำการเลื่อน columns ไว้ใน Columns ที่ 1 โดย อัตโนมัติ (โปรแกรมจะนับ columns แรก คือ columns ที่ 0)  หลังจากนั้นเราจะเพิ่มการ Optimization ในส่วนของ MaFast ด้วย โดยเพิ่มคำสั่ง

oMaFast = Optimization (“oMaFast”, 40, 20, 120, 20);

และแก้คำสั่ง

buyCon1 = Cross(MA (C, oMaFast), MA(C, oMaSlow));

และ

SellCon1 = Cross(MA (C, oMaSlow), MA(C, oMaFast));

ผลลัพธ์ที่ได้ จะเป็นการ ปรับแต่ง โดยโปรแกรมจะทำการจับคู่ ไปเรื่อยๆ ระหว่าง oMaFast กับ oMaSlow ซึ่งตัวอย่างในบทนี้จะมีค่าทั้งหมด 30 คู่ ซึ่งโปรแกรมจะทำการแสดงผล ทางเราจำเป็นต้องวิเคราะห์ผลลัพธ์เอง เพื่อใช้ประกอบการตัดสินใจในการใช้งานอีกที

อ้างอิง https://www.amibroker.com/guide/afl/setoption.html

วีดีโอ: กันความเสี่ยงและกำไร ApplyStop

คำบรรยายวีดีโอ

ใน VDO ชุดที่แล้วเราก็ได้โชว์ Optimize Functionมาแล้วน่ะครับ คราวนี้เราก็มาอยู่ในส่วนของตัว Table น่ะครับที่มี Optimized result โชว์ให้เราดู มาดูดีกว่าคราวนี้เนี่ย พวก table พวกนี้เราสามารถคลิกน่ะครับ และลากมาหน้ามาหลังได้ เพียงแต่ว่า table เนี่ยมันมี parameters เยอะมากเลยน่ะครับเห็นไหมครับมีตัวแปรให้เราเช็คเยอะมากเลยครับเนี่ยก็จะรกไปหน่อย คราวนี้เราอาจจะลองคลิกขวา แล้วก็ลองไปที่ set up คราวนี้จะเปลี่ยนอะไรท่านไม่ต้องกลัวน่ะครับ เพราะว่าท่านสามารถกด reset กับมาเป็น default ของ AmiBroker ได้ตลอดเวลา ok ไหมครับ คราวนี้ผมจะเอา toggle all คืออะไร จากติ๊ก เป็นไม่ติ๊ก จากไม่ติ๊ก เป็นติ๊ก ดูนะครับ toggle all เห็นไหมครับ mark all ก็คือติ๊ก จากที่ไม่ติ๊กเนี่ย เนี่ยไม่ติ๊ก ติ๊กให้หมด แล้วก็ toggle all ทิ้ง กลายเป็นไม่ติ๊กไปน่ะครับ คราวนี้เราก็ เอาหลักๆ มาก็เป็น No. ที่ทำการ Optimize order มา เปอร์เซ็นเนี่ย Profit Exposure นี่น่ะครับเอามาให้หมด อันนี้เราลากมาจากคราวที่แล้วป่าวครับ อ่ะติ๊กไป ติ๊ก ติ๊ก ไปให้หมดน่ะครับคร่าวๆแค่นี้percent win ด้วย อันนี้ด้วยน่ะครับ แล้วเราก็กด ok เห็นไหมครับก็จะเหลืออยู่แค่นี้ ก็จะง่ายแล้ว จะลากมาก็ง่าย ลากมาให้มัน match กับตัวนี้ เนี่ยเป็นการทำในส่วนของ table น่ะครับ คราวนี้ถ้าผมลอง run back test ใหม่ เปิด formula เข้ามาผมนี่น่ะครับไม่ใช่ run back test / run optimization ใหม่ run น่ะครับแล้วดู column นี้ดีๆน่ะครับ อ้าวไปโผล่ตรงนี้อีกแล้ว แต่ตัวอื่นยังเหมือนเดิมที่เราตั้งไว้เห็นไหมครับไม่เปลี่ยนแปลงแต่นี่เปลี่ยนตลอดเลย ผมทำอะไรผิดหรือป่าว เอาใหม่ optimization อ่ะกลับไปแล้ว นี่น่ะครับเพราะฉะนั้นเนี่ย
ถ้าเราอยากให้ตัว parameter ของเราที่เรา optimize อยู่ตำแหน่งใดตำแหน่งนึงตลอดน่ะครับ เราต้องใช้คำสั่ง set option น่ะครับ ใน formula ไว้ตรงไหนดีหล่ะ set option ก็ควรจะใช้ก่อนที่จะถึงคำ optimize มันนี้น่ะครับไว้ตรง set option และก็พิมพ์ว่า set option และก็ชื่อ อ่าอันนี้พูดตรงๆ ผมจำชื่อไม่ได้น่ะครับ เพราะ ว่า set option มันมีชื่อเยอะเหลือเกินเห็นไหมครับ ผมทำมาตั้งนานผมยังจำไม่ได้เลยครับ อ่าแล้วเราทำไงหล่ะ
เราก็ไปเปิดที่นี้น่ะครับ เปิด browser ขึ้นมา แล้วก็ไปที่ Google น่ะครับแล้วก็พิมพ์คำว่า set option โดยที่ผมจำคุ้นๆว่าเป็น set extra column น่ะครับ location ไม่เป็นไรง่ายๆเดี๋ยวไปหาเอามีคำว่า column หล่ะ มีคำว่า extra มีคำว่า location หล่ะ กดenter ไป แล้วก็ไปที่ AFL Function Reference น่ะครับ control F หาคำว่า column แล้วกัน อันนี้ No Default ไม่ใช่น่ะครับ อันนี้อะไรไม่รู้ นี่ๆเห็นไหมครับ Extra Columns Location นี่ตัวนี้น่ะครับ control +c copy ไว้ / copy แล้วน่ะครับ นี่เสร็จปุ๊บเราก็บอกมันว่าตัว Extra Column หมายถึงใครครับ หมายถึง ตัวที่อยู่ดีๆ ตัวที่เพิ่มขึ้นมาทีหลัง พวกนี้คือ default ถูกป่าวครับอันนี้คือ Extra parameter ของเรานี่แหล่ะ เป็นตัวพิเศษที่เพิ่มเข้ามา Extra Column ให้วางไว้columnไหน location คือตำแหน่งไหนน่ะครับ นับมานับมาเรื่อยๆ แต่คราวนี้ท่านจะสังเกต AmiBrokerปกติหน่วยหรือ base เริ่มจาก 0 01 2 3 4 อันนี้เรียกว่า zero baseน่ะครับ ตัวนี้คืออะไรครับ column 0 อันนี้คือ column 1 เพราะฉะนั้น ถ้าท่านบอกให้อยู่ที่ column 0 ปุ๊บ แบบนี้น่ะครับ แล้ว run optimization เห็นไหมครับ อันนี้คือ column 0 อันนี้ไม่หล่อน่ะครับไว้ที่ column 1 ดีกว่า optimization เรียบร้อย ถ้า run กี่ทีก็จะอยู่ตำแหน่งที่ท่านต้องการน่ะครับ อ่าอย่าย้ายไปที่อื่นตรงนี้ดีแล้วครับ อันนี้เราก็โชว์คร่าวๆว่า จะ set ตัวตำแหน่ง ของ Extra Column ขึ้นมายังไง อ่ะคราวนี้ผมมาเสริมอีกตัวเลยแล้วกัน ยังไงก็มาถึงจุดนี้แล้ว ม่ะ oMaFast = Optimize ชื่อก็เหมือนตัวแปร oMaFast เพื่ออ่านง่ายและตรวจสอบง่ายน่ะครับโดยที่ default เราเป็นอะไร อ่ะ default เราใช้ 40 อยู่ อันนี้เป็น 40 ไป เราอยากเริ่มค่าเริ่มที่ต่ำที่สุดเท่าไหร่จะเริ่มที่ 40ไหมหรือต่ำกว่านี้ อ่ะเริ่มที่ 20 คราวนี่เพิ่มไปยังไงก็ได้น่ะครับตราบใดที่มันยังควรจะ Fast นี่คือควรสั้นกว่า Slow อยู่ Slow อยู่ที่ 200 ถูกป่าวครับ เราก็วิ่งไปที่เท่าไหร่ดี ที่ 120 แล้วกันเต็มที่น่ะครับ โดยเพิ่มที่ละ 20นี่น่ะครับ step ที่ละ 20 น่ะครับ คราวนี้ท่านก็จะเห็นแล้วว่า ชักอ้วกแล้วครับ ตัวนี้เนี่ย MaSlow จาก 150 ไปถึง350คราวนี้มาดู MaFast จาก 20 step ทีละ 20 เป็น 40,60,80,100,120 อ่ะ นี่นะครับ 2 ตัวเนี่ยจะต้องทำ combination กัน หมายความว่าอะไร AmiBroker จะtest จะทำ back test ของกรณี 150 กับ 20 ,150 กับ 40, 150 กับ 60 ทำจนเสร็จ ถึง120 แล้วก็เปลี่ยน 200 กับ 20 ,200 กับ 40นี่น่ะครับ combination ทั้งหมดเท่ากับจำนวน option คูณกัน 1 2 3 4 5 /1 2 3 4 5 6/ 5คูณ 6 / 30 ท่านต้องกด back test เอง 30 ครั้งน่ะครับ ถ้าไม่ใช้ optimization จะกดไหมครับ อ่า คราวนี้ไม่เป็นไรจะ run optimization น่ะครับจะขออธิบายอีกหน่อยว่าในส่วนของ Extra Columns Location ที่บอกไว้ที่ 1 เนี่ยเห็นไหมครับ เพิ่งเห็นตัว S ตัวเนี่ยน่ะครับ Extra คือ parameter ที่เราจะ optimize ใช่ไหมครับ Columns เอ๊ะมันเติม s ทำไม มันเติม s เพราะว่ามันจะรู้ว่ามี
Extra Columns กี่ตัวน่ะครับ อย่างนี้มี 2 ตัวใช่ไหม มันจะเอาตัวแรกเนี่ยไว้ใน column ที่เราตั้งไว้ และ column ที่ 2 oMaFast เนี่ย จะไว้ถัดจากตัวแรกของมันก็คือเป็น column ถัดมานั่นเองน่ะครับ จะเห็นอันนี้ขึ้นมาอะไรครับ oMaSlow และ oMaFast และจะมีกี่ case จำได้ไหมครับ 1 ถึง 30 อ่ะ run optimization เลยน่ะครับ อ่าเกือบไปแล้ว รู้ไหมเกือบอะไรครับ ถ้าท่านrun เสร็จ ปุ๊บ เดี๋ยวผม run ให้ดูดีกว่า
Optimization น่ะครับ จะมี 30 case นี่น่ะครับเดี๋ยวไล่ทีละ 1 อันนี้ก็เปลี่ยนไปเรื่อยๆ อันนี้ก็ 20 ก็ว่ากันไปอันนี้เสร็จแล้วน่ะครับ จะเห็นว่ามันหายไปแล้ว เห็นไหมครับ อ่ะคราวนี้เนี่ยถ้าเราดูดีๆ อันนี้ผม source โดย optimize moving average slow น่ะครับ จะเห็นว่า 50 เนี่ย ถึง 50 เนี่ย ไม่ว่าตัวหลัง optimize moving average fast จะเปลี่ยนเป็นอะไรเนี่ย 50 เนี่ย เท่ากันหมดเลยเห็นไหม50 ถึง50เนี่ยส่งผลให้เราได้ RAR/MDD เท่ากันหมดเลย percent win ก็เหมือนกัน พวกเนี่ยเกิดอะไรขึ้น ตัวเนี่ยเหมือนเดิมเข้าใจได้ แต่ตัวนี้เปลี่ยนไปไม่ส่งผลอะไรเลยหรือครับ สี่เท้ายังรู้พลาดนักปราชญ์ยังรู้พลั้งน่ะครับ อุตส่าห์เขียนมาซะยาวเลยเนี่ย ปรากฏว่าอะไรครับ optimize moving average fast ไม่ได้เอาไปใช้ครับ อายไหมครับ อันนี้เราพูดเฉพาะในส่วนของซื้อน่ะครับ ยังไม่ได้เอาไปใช้ในส่วนของขายน่ะครับ อืม fast เนี่ยเอาไปใช้ แต่ความจริงก็ควรเอาไปใช้ในส่วนนี้เลยถูกไหมครับ เพราะว่าข้างบนเป็นอะไร ข้างล่างก็เหมือนกัน ถูกไหมครับ อันนี้ก็คือ oMaFast oMaSlowอ่ะเรียบร้อย เราก็ run optimize ดู อันนี้ไอ้ 150 เนี่ยเหมือนกันก็จริง แต่ถ้า optimize moving average fast เปลี่ยนไป ข้างหลังมันควรจะเปลี่ยนน่ะครับไม่ใช่ 1.55 เหมือนกันหมด caseเนี่ย ลอง run optimization ดู ก็ต้องรอสักพักอยู่ที่ว่าคอมใครเร็วใครช้าก็ว่ากันไปน่ะครับ เรียบร้อยแล้ว run ไป 30 cases คราวนี้เราก็มา source / source ตาม optimize moving average slow น่ะครับ อันนี้ก่อนเพื่อจะได้ดู 150 นี่ถึง150 นี่ ผมกด shift ค้างไว้น่ะครับแล้วกดตัวนี้เพื่อให้เห็น จะเห็นว่าไอ้นี่เท่าเดิมก็จริง แต่เพราะว่า optimize moving average slow เปลี่ยนไปเนี่ย ทำให้ตัว Risk Adjusted Return กับ MaxDDเปลี่ยนไป น่ะครับ อ่ะก็จะเปลี่ยนไปเรื่อยๆ แล้วเราลองมาเช็คตัวนี้บ้างเห็นไหมครับ เอาใหม่ 20 นี้ ถึง 20 นี้ เท่าเดิมก็จริงเห็นไหมครับoptimize moving average fast เนี่ย period เราเนี่ยเท่าเดิมก็จริงแต่เพราะว่า ตัว moving slow เปลี่ยนไป นี่ก็เปลี่ยนไป ก็แสดงว่าเราทำถูกแล้วน่ะครับ คราวนี้เราก็มาลอง source โดย Risk Adjusted Return จากมากไปน้อยเห็นไหมครับ เขาบอกตัวที่ optimize มาแล้วเนี่ยควรใช้ตัว slow 200 fast 120 เนี่ยน่ะครับ จะส่งผลให้เราได้ RAR/MDD ที่ 5.71 โดยที่ compound annual return เนี่ยน่ะครับ 1.5 เนี่ยถือว่าดี อันนี้ถือว่า ok ถึงพอใช้น่ะครับอันนี้ถือว่าดี MDD ต่ำกว่า 15 จำได้ใช่ไหมครับ ที่ผมบอกว่า 13-15 อันนี้ถือว่าดี let profit เท่าตัวถือว่าดี ซึ่งอันนี้เรา base on หลายๆตัวพวกนี้น่ะครับ แต่บางคนอาจจะเป็นคนที่โลพน่ะครับ base on net profit อย่างเดียว อ่ะเดี๋ยวลองดู net profit อย่างเดียวได้เป็นอะไร ได้เป็น 129 เห็นไหมครับ แต่ MDD เท่าไหร่ครับ เกิน 20% อันนี้เราไม่ชอบ เราไม่ชอบเลยน่ะครับ อ่ะ compound annual return กับ MDD ต่ำกว่า 1.5 อันนี้ก็ค่อยไม่ปลื้มเท่าไหร่น่ะครับ อ่ะคราวนี้เราจะเห็นว่าอะไร ก็มีการที่จะต้องชั่งใจแล้วบางคนโลภมองแต่เงินน่ะครับ บางคนกลัวจัดเหมือนผม ดูแต่ ดูแต่ความเสี่ยง เสี่ยงต่ำสุดอยู่ตรงนี้ ได้ net profit ที่ 53 นี่ ขอโทษน่ะครับค่อนข้างชั่วแล้ว ลองมาเอาตัวนี้ดีกว่าน่ะครับ ตอนนี้ก็เป็น case เห็นไหมครับ 5. 59 นี่อยู่ตรงนี้ นี่คือตัวที่เราชอบ เห็นไหมครับแล้วก็อยากสู้ตัวข้างบนความจริงก็ใกล้เคียงกันมากน่ะครับ แต่ดีที่ตัวนี้คืออะไรครับ Max. system % Drawdown ต่ำมาก อันนี้ผมเป็นพวกขี้กลัวครับ ผมก็เลือกตัว strategy นี่ก็คือ Slow 150 แล้วก็คือ Fast 120 แต่ก็ลอง test ดูต้องพิจารณาอื่นๆด้วยน่ะครับพอมันใกล้กันมากนี่ไม่ค่อยดีน่ะครับต้องเช็คว่ามันเกิดอะไรขึ้นหรือป่าวน่ะครับ okขอบคุณครับ