วันเสาร์ที่ 30 สิงหาคม พ.ศ. 2557

วิธีการ Back Test ใน MT4 แบบ 99.90%

วิธีการ Back Test ใน MT4 แบบ 99.90%

1.       Download software สำหรับการทำ Back Test คือ 1.1 Tickstory สำหรับไว้ download Tick Data ที่ http://tickstory.com/ และ 1.2 Tick Data Suite 1.3.2 (TDS) ที่  http://eareview.net/tick-data/downloads 

2.       หลังจากลงโปรแกรมเรียบร้อยแล้ว เปิดโปรแกรม Tick Data Suite Configuration ขึ้นมา เลือก Select path แล้วเลือกชื่อ MT4 ที่เราต้องการ Back Test  ส่วน Registration Serial ให้ไปสมัครที่  http://eareview.net/tick-data-suite/trial  มาทดลองใช้ก่อน 7 วัน  เสร็จแล้วคลิกที่ Copy TDS  เพื่อจะไปวาง Icon ที่หน้า Desktop 




3.       เปิดโปรแกรม Tickstory ขึ้นมา เลือก File -> Settings -> MT4 Settings -> Select (ด้านบนสุด)  ->  Program Files -> เลือกชื่อ MT4 ที่ต้องการลง Data แล้วคลิก  OK


4.       คลิกขวาที่คู่เงินเราต้องการ เลือก Export MT4 (กด LIKE ไว้หน่อยด้านบน) 



5.       เลือกเวลาที่ต้องการ Back Test,  Timeframes, เลือก Suppress volume info ออก ในกรณีที่ต้องการ Back Test แบบมี Volume ด้วย เลือก Time zone ตามเวลา Broker ถ้า Broker Server อยู่ที่ New York เลือก +2 Tallinn ถ้า Broker Server อยู่ที่ London หรือ Broker เปิดตลาดเวลา 7 โมงเช้าประเทศไทยใช้ UTC (Coordinated Universal Time)



6.       เลือกหัวข้อด้านบน Help คลิก Deploy MQ4 เพื่อที่จะเอา EA ที่สามารถสร้างข้อมูลและค่าต่างๆ ที่เกี่ยวกับคู่เงินของโบรกนั้นๆ 



7.       เสร็จแล้วเข้าไปใน MT4 เพื่อใส่ EA ที่ได้จากการ Deploy ลงกราฟ (กราฟคู่เงินใดก็ได้) ต้องทำตอนที่ตลาดเปิด (เพราะต้องให้มีการเคลื่อนไหวของราคาด้วยถึงจะสร้างข้อมูลได้) Double-Click ที่ EA TickstoryInfoExpert ขึ้นมา แล้วใส่ m ที่ Symbolsuffix ในกรณีเป็นบัญชี micro เช่นใน Exness ถ้าเป็นบัญชีปกติก็คลิก OK ได้เลย  (อย่าลืมเปิด AutoTrading ให้พร้อมทำงานด้วย)



8.       หลังจากมีการเคลื่อนไหวราคา 1 tick ข้อมูลจะถูกสร้างขึ้นและจะถูกจัดเก็บใน Data Folder ของ MT4 ให้เราเข้าไปที่ MT4 เลือก File -> Open Data Folder -> MQL4 -> files  , Config file จะถูกเก็บอยู่ในนี้ ให้เรานำออกมาที่ Desktop เพื่อง่ายในการค้นหา


9.       หลังจากนั้นกลับมาที่ Tickstory ในหน้า Metatrader Info เลือก Load แล้วเลือก Config file ที่เราไปวางไว้ตรงหน้า Desktop ข้อมูลต่างๆของ Broker นั้นๆก็จะเข้ามาอยู่ในหน้า info นี้  อาจจำเป็นต้องเพิ่มข้อมูลในส่วนของ Base Comm. เป็นค่า Commission ต่อ lot, Comm. type ใส่ 0 ปรับใส่ spread ที่ต้องการ Max lot อาจใส่ที่ 1000 หรือตามต้องการ นอกนั้นข้อมูลส่วนใหญ่จะถูกต้องอยู่แล้ว คลิก OK เพื่อทำการ Download Tick Data


  
 10.    เมื่อ Export Complete  ก็มาเปิด MT4 ที่เป็น Icon ของ TDS เพื่อเริ่มขั้นตอนการ Back Test กด Ctrl R และ Ctrl T เลือก Expert Advisor, Symbol ที่ต้องการ ,Use date เลือกช่วงเวลาที่ต้องการ, Visual mode, Expert Properties ในกรณีต้องการปรับแต่งค่าที่จะ Back Test  หลังจากนั้น คลิก Start เพื่อเริ่มการ Back Test


วันพุธที่ 16 เมษายน พ.ศ. 2557

การ Back test ด้วย Modelling Quality 99.90%

การ Back test ด้วย Modelling Quality 99.90% มีความสำคัญมาก เพราะเป็น Quality ที่เกิดจาก Tick Data ที่ไม่ใช่แค่ Minute Data อย่างที่ใช้ๆกันอยู่ ซึ่งจะให้  Modelling Quality มากสุดเพียง 90%

ความแตกต่างของ Minute Data กับ Tick Data 

ภาพจาก Paul Hamptom-Smith   Backtesting with 99% modelling quality in MT4.doc

จากภาพจะเห็นได้ว่า ในแท่งเทียน 1นาที สามารถมีราคาขึ้นลงได้มากเมื่อดูจาก real ticks แต่แบบ Minute Data (ภาพด้านขวา) ซึ่งจะได้ราคาที่ไม่ครบ จะได้เพียงราคาเข้าและออก ซึ่งจะมีผลอย่างมากในกรณีระบบที่เราเล่นเป็นแบบเล่นสั้นๆ การ Back test ด้วย minute data อาจจะไม่โดน Stoploss แต่เมื่อ Back test ด้วย tick data อาจถูก Stoploss ไปแล้ว(ตามแต่ระบบ) ดังนั้นเมื่อนำไป Forward Test อาจไม่ได้กำไรเหมือนกับตอนที่ Back test

วิธีการทำ Back test ด้วย Modelling Quality 99.90% แบบ TDP

1.Download History Data ที่เป็น Tick Data ผ่าน Software ของ http://tickstory.com/ ซึ่ง Tick Data ที่ได้จะเป็นของ Dukascopy Bank และข้อดีของโปรแกรมนี้อีกอย่างคือสามารถใส่ค่า Commission ที่จะเกิดขึ้นจริงจากโบรกเกอร์เพื่อเป็นการทดกำไรขาดทุนตามความเป็นจริงอีกด้วย

1.1.หน้าตาการใช้งานดังภาพ (ให้เลือก Run as Administrator)




1.2.ให้เลือก setting -> Select เลือกโบรกที่เราต้องการจะทำ Back Test


1.3.เลือกระยะเวลา,  Time Frame และ Timezone ที่ต้องการ back test ของ Pepperstone จะใช้ +2 ที่มี DST Yes



1.4.ใส่ข้อมูลตามโบรกเกอร์ที่เราต้องการ Back Test และคลิก ok แล้วรอการ download


2.ใช้ software Tick Data Suite จาก http://eareview.net/tick-data/downloads เพราะ MT4 เดิมๆ ไม่สามารถ Back Test ให้เป็น 99.90% ได้
เราสามารถใช้เป็น trial ทดลอง 7 วันได้ฟรี http://eareview.net/tick-data-suite/trial
ราคา จะอยู่ที่ 97$ ต่อการใช้งาน 1 เครื่อง และมีค่าบำรุงรายเดือนๆละ 10$ จะยกเว้นค่าบำรุงรายเดือน
ถ้าเป็นเครื่องที่ 2 ถึงเครื่องที่ 5 

2.1.เลือก TDS Configuration เพื่อ Copy TDS เพื่อให้ Application Icon ไปลงที่ Desktop สำหรับการใช้งาน


tds icon












ตัวอย่างผลเทสด้วย  model Quality 99.90% 


TDP Group Fan Page: https://www.facebook.com/LuminaryJournal

วันจันทร์ที่ 13 มกราคม พ.ศ. 2557

ความน่าเชื่อถือจากผล Back Test

.....เขียนโดยหมอกอล์ฟ (TDP Group)

จากบทความที่แล้วได้พูดถึงความสำคัญและประโยชน์ของ Expert Advisors(EA) หรือโปรแกรมการซื้อขายอัตโนมัติใน Platform Metatrader4(MT4)  เราเองคงอยากรู้มากขึ้นว่าผลการ Back Test ที่หน้าเชื่อถือ เราควรจะดูตรงไหนบ้าง


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

ปัจจัยที่จะทำให้ผล back test แตกต่างจากการ forward test(การนำมาใช้เทรดจริง) ซึ่งอาจส่งผลให้เกิดการขาดทุนหรืออาจได้กำไรมากกว่าคือ

1. จากการเขียนโปรแกรมเงื่อนไขการเข้าออเดอร์จาก EA เอง คือระบบการเข้าออเดอร์ของ EA ย่อมมีแตกต่างกันจากระบบที่ต่างกัน แต่การสร้างเงื่อนไขในการซื่้อขายบางประการจากผู้เขียนโปรแกรม อาจทำให้การซื้อขายจริงหรือการเปิดออเดอร์ได้ราคาต่างจากที่  back test ซึ่งจุดนี้จะทำให้ผลกำไรที่ออกมานั้นแตกต่างกันอยู่มาก อาจมากเป็นเท่าตัว คือมา  forward test จริงอาจขาดทุนทั้งๆที่ผล back test ออกมาดีได้กำไร ดังนั้นการ forward test กับ demo ในช่วงแรกเพื่อดูการเข้าออกออเดอร์ว่าเป็นไปตามระบบที่เราต้องการจึงมีความสำคัญ

2. มีค่า Mismatched charts errors คือมีค่าตั้งแต่ 1 ขึ้นไป เป็นค่าผิดพลาดที่เกิดขึ้นจากการใส่ History Data ลงใน MT4 หรือการ Convert period ซึ่งปกติเราจะใช้ Minute Data (M1) ในการ back test เพื่อให้ได้ข้อมูลที่มีความละเอียดที่สุด ดังนั้นถ้าเราต้องการ test ที่ Time Frame อื่น จึงจำเป็นต้อง Convert Period ให้เป็น Period หรือ Time Frame ที่เราต้องการ back test ก่อนเสมอ ไม่อย่างนั้นก็จะทำให้เกิด Charts errors ดังภาพด้านล่าง


ซึ่งผลที่ออกมานอกจากจะไม่ถูกต้องกับเวลานำไป forward test จริงแล้ว อาจจะโดนหลอกว่าได้กำไรมากมาย อย่างในภาพด้านล่าง

ตัวอย่างกราฟที่อาจเกิดขึ้นได้จากการมี Mismatched charts errors

3.  Spread(Ask-Bid) ที่สูงกว่าปกติ เช่น ในช่วงเวลาปิดเปิดตลาด ซึ่งจะมีผลต่อการ test  ถ้าระบบที่เราเล่นไม่ได้เล่นตามช่วงเวลา คือเล่นแบบ 24 ชม. ก็อาจจะมีการเปิดออเดอร์ตอน spread สูงได้ ซึ่งถ้าระบบเล่นสั้น stop loss สั้นๆ อาจถูก stop loss จาก spread ที่สูง ณ ช่วงเวลาดังกล่าวจนขาดทุนได้
หรือช่วงที่มีการซื้อขายในปริมาณมากช่วงข่าวออกก็มักจะมี spread ที่สูง ทำให้การเข้าออเดอร์ได้ราคาไกลจากที่เราต้องการหรือที่จุดที่เรา pending order ไว้ โดยเฉพาะช่วง Non-Farm employment change ของคู่ USD ราคาเปิดอาจกระโดดไปไกลมากจาก spread หรือ Ask-Bid ที่ห่างกันมาก ตรงนี้แนะนำควรใส่ Function Maximum spread  เพื่อการป้องกันไว้ด้วย (ขึ้นอยู่กับระบบที่เล่น)
และเนื่องจากการ back test จะเป็นแบบ Fixed spread คือ สเปรดจะเท่ากันหมดขณะ back test แต่ในความเป็นจริงจะมี spread มากน้อยเป็นแบบ variable (คือ spread ไม่คงที่) ทำให้การเข้าออเดอร์อาจได้ราคาที่แตกต่างกันไป ซึ่งตรงจุดนี้จะค่อนข้างมีผลมากกับระบบเล่นสั้น   spread ที่ต่างกันเพียงไม่กี่จุดก็อาจเปลี่ยนจากกำไรเป็นขาดทุน (ขึ้นอยู่กับรูปแบบบัญชีของโบรกเกอร์ บางโบรกเกอร์รูปแบบบัญชีอาจเป็นแบบ Fixed spread)

4. ระยะเวลาในการ back test  เนื่องจากการ back test เป็นการจำลองการเทรดของราคาในอดีต ดังนั้นถ้าเรา test ย้อนหลังไปไกลมากเช่น 2 ปีขึ้นไป โดยรวมอาจได้กำไร แต่ไม่ได้มาลองเทสช่วง 6 เดือนสุดท้าย  ก็อาจจะไม่ทราบว่า กำไรโดยรวมช่วง 6 เดือน อาจเริ่มที่จะเป็นขาลง คือไม่ค่อยได้กำไรเหมือนปีก่อนๆ เนื่องจากการซื้อขายในตลาดมีรูปแบบที่เปลี่ยนไป แต่จะมีผลกระทบต่อระบบที่เล่นมากน้อยแค่ไหน ก็จะขึ้นอยู่กับระบบที่เราเล่นนั้นๆ  ส่วนตัวจะดูผลเทสที่ 1 ปี กับ 6 เดือนเป็นหลัก คือจะไม่สนใจผลที่มากกว่า 1 ปี เพราะอาจไม่ได้ช่วยอะไรจากตลาดที่อาจเปลี่ยนไปแล้ว


สรุป การ back test มีปัจจัยหลายอย่างที่อาจทำให้การ forward test ไม่ได้ผลตามที่คาดหวัง ดังนั้นเมื่อได้ผล test ที่น่าพอใจทุกครั้ง จึงจำเป็นที่ต้องนำไป  forward test ก่อนเสมอ อาจนำไป test กับ demo สัก 2 สัปดาห์ ตามด้วยบัญชีจริงอีก 2 สัปดาห์ นั่นจะทำให้เรามั่นใจได้มาก และยังมีปัจจัยอื่นๆเข้ามาเสริมอีก เช่น ทางด้านจิตวิทยาของเทรดเดอร์เอง ความไม่มั่นใจในระบบ ความไม่เข้าใจว่าทุกระบบย่อมต้องมี drawdown  ซึ่งเป็นสิ่งจำเป็นที่เทรดเดอร์ต้องเรียนรู้ทำความเข้าใจไปพร้อมๆกับการพัฒนาระบบเทรดหรือ EA ให้ดียิ่งๆขึ้น


TDP Group FB page: https://www.facebook.com/LuminaryJournal

วันอังคารที่ 7 มกราคม พ.ศ. 2557

ความสำคัญของ EA (Expert Advisors) (ระบบการซื้อขายอัตโนมัติ) ตอนที่1

....เขียนโดย หมอกอล์ฟ (TDP Group.)


การที่จะทำเงินในตลาดเกร็งกำไรค่าเงินหรือ Forex ได้นั้น จำเป็นต้องมีโมเดลหรือระบบที่คิดค้นขึ้นเองหรือนำระบบที่น่าสนใจต่างๆ มาทำการเทรดด้วยกันทั้งสิ้น ระบบที่นำมาอาจเกิดจาก Fundamental Analysis (การวิเคราะห์ปัจจัยพื้นฐาน) และ Technical Analysis (การวิเคราะห์ทางเทคนิค) ซึ่งในที่นี้จะเน้นระบบที่ได้มาจาก Technical Analysis เป็นหลัก เนื่องจากระบบ Fundamental จะนำมาจำลองการเทรดด้วย EA หรือ Back Test ได้ยาก เพราะไม่ได้มีรูปแบบที่ตายตัว แต่ก็อาจนำระบบ Fundamental+Technical มาใส่ใน EA ในรูปแบบการ Forward Test คือทดสอบกับตลาดจริงนั่นเองเช่น การเทรดข่าวหรือเลี่ยงข่าว เป็นต้น  


เนื่องจากระบบต่างๆ ที่สร้างขึ้นเป็นการนำสถิติและความน่าจะเป็นของพฤติกรรมของราคาซื้อขายในอดีต ดังนั้นเราจะทราบได้อย่างไรว่าระบบที่เราจะนำมาเทรดนั้นทำกำไรได้จริงและในระยะยาว ดังนั้นจึงมีความจำเป็นอย่างมากที่จะทำการจำลองระบบการเทรดด้วยการ Back Test ด้วย EA เพื่อนำมาวิเคราะห์ว่าระบบนั้นๆสามารถทำกำไรได้มากน้อยเพียงใด ซึ่งผลจากการ Back Test จะมีค่าสถิติที่สำคัญหลายตัวที่ใช้ประกอบการพิจารณา เช่น Profit Factor, Drawdown, Profit Trade(win rate%),  Consecutive Win/Loss เป็นต้น

        - Profit Factor(PF.) คือสัดส่วนของ Gross Profit และ Gross Loss ซึ่งถ้ามีค่ามากกว่า 1 คือระบบนี้ได้กำไร ถ้าน้อยกว่า 1 คือขาดทุน แต่ระบบที่ดีควรมีสัดส่วน PF อย่างน้อย 2 หรืออาจรับได้น้อยที่สุดที่ 1.5 ทั้งนี้ต้องดูค่าอื่นๆ ประกอบด้วย

       - Drawdown(DD.) หมายถึง การขาดทุนต่อเนื่องหรือการโดนลากพอร์ตติดลบ (ยังไม่ได้ปิดออเดอร์) ที่กี่ % ของ balance จะมีค่า DD อยู่ 2 แบบ คือ Maximal Drawdown (Max DD.) กับ Relative Drawdown (RDD.),   Max DD. คือจุดขาดทุนต่อเนื่องสูงสุด นับจากจุดที่ขึ้นไปสูงสุดและต่ำสุดจากการเทส (ซึ่งเหมาะจะบอกในภาพรวมของการเทส) ส่วน RDD. จะหมายถึง จุดขาดทุนต่อเนื่องสูงสุด ณ จุดๆหนึ่งของ balance ซึ่งเราจะดูค่า RDD. เป็นหลักเพราะจะเป็นตัวบอกว่า ณ จุดๆหนึ่งของการเทส จะมีการขาดทุนต่อเนื่องได้ กี่ % ของ balance ณ ขณะนั้น เช่น RDD.=  20% หมายถึง จะมีช่วงใดช่วงหนึ่งที่ระบบของเราจะขาดทุนติดต่อกันถึง 20% ถ้าเราเข้าเทรดช่วงตลาดหรือระบบเกิดการ Drawdown ณ เวลานั้น ถ้ามีทุนอยู่ 1000 เหรียญ ก็อาจถูกลากพอร์ตติดลบหรือขาดทุนติดต่อกันได้ ถึง 200 เหรียญ เป็นต้น ค่า RDD. ยิ่งมีค่าน้อยเท่าไหร่ยิ่งดี ค่าที่แนะนำคือ ไม่ควรเกิน 20% รับได้ไม่เกิน 30% ถ้าเล่นหลายคู่ ไม่ควรเกินคู่ละ 10-12 % เพราะเมื่อถึงเวลาเทรดจริง ถ้าติดลบมาก เช่น 20% แล้ว จะมีความรู้สึกไม่มั่นใจว่า จะมีคำถามเกิดขึ้นว่าระบบที่ใช้จะยังใช้ได้ดีหรือเปล่าตลาดกำลังจะเปลี่ยนหรือเปล่า การ recover ทุนจากการติดลบมากๆก็อาจจะต้องใช้เวลาพอสมควรกว่าจะได้ทุนคืน

        - Profit Trade(win rate%) หมายถึง ระบบที่ test จะมีอัตราการชนะจากการเทรดหรือการเปิดออเดอร์กี่ % แนะนำว่าควรมากกว่า 80% (ยิ่งมีค่า%มากยิ่งดี) ทั้งนี้ถ้า Profit trade น้อยกว่า  80% อาจต้องมาดู Profit Factor กับ RIsk Reward(RR) ถ้าสัดส่วน PF มากกว่า 2 และ RR มากว่า 1:1.5 (stoploss:takeprofit ) ขึ้นไป ก็อาจจะยังเป็นทางเลือกของระบบที่ดี

        - Consecutive win/loss หมายถึง มีออเดอร์ที่เปิดเทรดแล้วได้กำไรหรือขาดทุนติดต่อกันกี่ออเดอร์ แน่นอนยิ่งมี Consecutive win มากเท่าไหร่ยิ่งดี เพราะในเวลาเทรดจริง ถ้าเราเห็นการปิดออเดอร์แต่ละออเดอร์ของเราปิดบวก ความรู้สึกดีหรือสบายใจย่อมเกิดขึ้น แต่ก็เป็นปัจจัยประกอบหนึ่งเท่านั้น




สรุป EA มีความจำเป็นที่จะนำมาจำลองระบบเทรดว่าระบบนั้นๆมีประสิทธิภาพมากน้อยเพียงใด แต่ผลที่ได้จากการ Back Test  พอเอาเข้าจริงแล้วอาจจะให้น้ำหนักได้เพียง 50-60% เท่านั้น เป็นเพียงการบอกแนวโน้มว่า ระบบที่เทสน่าจะทำกำไร ส่วนอีก 40-50% ที่เหลือจะได้มาจากการ Forward Test กับตลาดจริงและเทสกับบัญชีจริง เพราะการเทสกับ demo อาจไม่ได้ราคาจริงจากตลาดและจะไม่โดน slippage หรือ spread ที่มากตอนเข้าออเดอร์เหมือนบัญชีจริง โดยเฉพาะช่วงเวลาที่ข่าวออกหรือมีการซื้อขายในตลาดในปริมาณมากซึ่งจะทำให้ได้ราคาไม่ดีเหมือน demo ที่ไม่มี slippage หรือการเข้าออเดอร์ที่ช้าจนได้ราคาไม่ดี โดยเฉพาะอย่างยิ่งถ้าระบบนั้นๆเป็นระบบเล่นสั้นยิ่งจะมีผลมากเพราะการเก็บจุดน้อยๆเพื่อหวังผลใหญ่(กำไรมาก) ก็จะได้กำไรน้อยตามไปด้วยหรือทำให้ขาดทุนด้วยซ้ำ

TDP Group FB page: https://www.facebook.com/LuminaryJournal