Prevent copy paste

Friday, June 12, 2015

สูตร Harmonic Pattern สำหรับ Amibroker

วันก่อนได้อ่านบทความ Harmonic Trading ของพี่ปุย (ประกาศิต ทิตาราม - Wave Rider) แล้วรู้สึกว่าน่าสนใจดี  ผมลองหาข้อมูลต่อแล้วไปเจอสูตรสำหรับ AmiBroker เลยเอามาแชร์ครับ

Harmonic Pattern คืออะไร
คร่าวๆแล้วก็คือรูปแบบของราคาที่เมื่อ form ตัวขึ้นมาแล้วก็จะสามารถนำไปใช้คาดเดาได้ว่าราคากำลังจะไปต่อในทางไหน (ขึ้นหรือลง) รายละเอียดของเรื่องนี้ถ้าใครสนใจลองอ่านเพิ่มเติมได้ที่ http://www.mta.org/eweb/docs/pdfs/scottcarney-090810.pdf
หรือจะเรียนคอร์สของพี่ปุก็ได้ครับ รายละเอียดคอร์สดูที่ http://www.stock2morrow.com/course/seminar_courses_list.php?id=180


สูตรหน้าตาเป็นอย่างไร
สูตรนี้ผมไปหาเจอมาจาก web  http://www.wisestocktrader.com ซึ่งเมื่อนำมาใช้กับ Amibroker แล้วจะได้ graph ประมาณแบบนี้ครับ (สูตรยาวมากผมขออนุญาติไม่แปะนะครับ แต่ทำเป็นลิงค์ download แทน)






สูตรนี้ยังมีส่วนของ explorer ด้วย ถ้าใครใช้ exploer funtion ของ Amibroker อยู่แล้ว สูตรจะขึ้นสีเขียวสำหรับตัวที่มีสัญญาณซื้อ และสีแดงสำหรับสัญญาณขาย





การนำมาใช้กับ AmiBroker
ดูวิธีการใช้จาก post ก่อนหน้านี้ครับ
http://maov2.blogspot.com/2015/03/trade.html

สุดท้ายอย่าลืมว่าการลงทุนมีความเสี่ยง ใครที่จะเอาไปใช้ก็ควรตั้ง stop lost ด้วยทุกครั้งนะครับ

ใครที่สนใจลองแล้วติดขัดตรงไหน mail มาถามได้ครับ
maoversion2@gmail.com

Sunday, April 26, 2015

Tripple EMA (Enhanced)

ในบทความที่แล้วผมลองทำระบบเทรดโดยใช้ concept "Tripple EMA" จากหนังสือ "38 กลยุทธ์ คว้ากำไรในตลาดหุ้น" ของ นพ.อนันต์ ข้อมงคลอุดม  (ดูย้อนหลังได้ที่นี่) ซึ่งได้ผลดีเลยทีเดียว  แต่สังเกตุดูระบบนี้จะมองข้ามหุ้นที่ rebound ขึ้นมาอย่างรวดเร็ว ทำให้พลาดโอกาศทำกำไรไปพอสมควร 

ในบทนี้ผมเลยลองปรับสูตรเพิ่มโดยแก้ไขเงื่อนไขในการซื้อดังนี้ครับ (เงื่อนไขในการขายยังคงเดิม) 

ของเดิม - ซื้อเมื่อ EMA3 ตัดขึ้น EMA5 และ EMA 5 มากกว่า EMA7 
ของใหม่ - [ซื้อเมื่อ EMA3 ตัดขึ้น EMA5 และ EMA 5 มากกว่า EMA7 ] หรือ [EMA5 ตัดขึ้น EMA7 และ EMA3 มากกว่า EMA5] 

สูตรหน้าตาแบบนี้ครับ
////////////////////////////////////////
ema3 = EMA(C,3);
ema5 = EMA(C,5);
ema7 = EMA(C,7);
cross1 = Cross(ema3,ema5);
cross2 = Cross (ema5,ema7);
Buy= (cross1 AND ema5 > ema7) OR (cross2 AND ema3 > ema5);
Sell=Cross(ema5,ema3); 

Plot(C,"TrippleEMA Enhanced",colorDefault,styleCandle); 
shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
PlotShapes(shapeUpArrow*Buy,ParamColor("UpArrow",10),0,L); 
PlotShapes(shapeDownArrow*Sell,ParamColor("DownArrow",11),0,H); 
Plot(ema3,"EMA3",colorBrightGreen,styleLine,2);
Plot(ema5,"EMA5",colorYellow,styleLine);

Plot(ema7,"EMA7",colorOrange,styleLine);
///////////////////////////////////////
Download สูตรได้  ที่นี่

ในกรณีที่ราคาหุ้น rebound ขึ้นมาอย่างรวดเร็วสูตรเดิมจะไม่ได้บอกให้เราซื้อ เพราะในวันที่ EMA3 ตัดขึ้นเหนือ EMA5 นั้น EMA5 อาจจะยังน้อยกว่า EMA7 ลองดูรูปประกอบกันครับ




ทีนี้ลองมาดูผลเปรียบเทียบระหว่าง Tripple EMA ของเดิม กับ Tripple EMA enhanced กันครับ


ตัว Tripple EMA enhanced มีจำนวนครั้งที่ trade สูงขึ้น จำนวนครั้งที่ trade แพ้และ Max System Drawn Down ก็สูงขึ้นด้วย แต่....ผลกำไรโดยรวมก็เยอะกว่าเดิม เห็นผลแล้วก็คิดหนักอยู่เหมือนกันครับ ได้กำไรเยอะขึ้นแต่ช่วงที่พอร์ทติดลบก็ลบเยอะขึ้นเหมือนกัน คงต้องแล้วแต่ความชอบของแต่ละคนครับ 

maoversion2@gmail.com

Friday, April 17, 2015

ระบบเทรด Tripple EMA

วันก่อนไปเดิน SE-ED เจอหนังสือ "38 กลยุทธ์ คว้ากำไรในตลาดหุ้น" โดย นพ.อนันต์ ข้อมงคลอุดม หนังสือเล่มนี้อธิบายเทคนิคการกำหนดจุดซื้อขายโดยอ้างอิงกับ indicator หลายๆแบบ  หนึ่งในนั้นคือ Tripple EMA ซึ่งผลตอบแทนที่ได้นั้นน่าสนใจไม่น้อยครับ

หลักการของระบบคือ
- ซื้อเมื่อเส้น EMA3 ตัดขึ้น EMA5  และ EMA5 อยู่เหนือ EMA7
- ขายเมื่อ EMA3 ตัดลง EMA5 และ EMA5 อยู่ใต้ EMA7 (ผมปรับนิดหน่อยโดยขายเมื่อ EMA3 ตัดลง EMA5 ไม่รอให้ EMA5 น้อยกว่า EMA7 เพราะถ้ารอ.. กำไรลดลงไปเยอะเหมือนกัน)
ดูรูปที่  1 ประกอบครับ

มาดูวิธีการ setupระบบและผลการทดสอบกันครับ

Setup ระบบ
1. ใช้โปรแกรม AmiBroker  อ่านวิธีการติดตั้งและใช้งานจาก บทความนี้ ครับ
2. เตรียม data ที่จะใช้ทดสอบ   ผมใช้ข้อมูลของ SET ย้อนหลัง 10 ปี
3. สูตร AFL ที่ใช้ในการทดสอบ  download ที่นี่ ครับ

หน้าตาสูตรประมาณนี้
////////////////////////////////////////////////
ema3 = EMA(C,3);
ema5 = EMA(C,5);
ema7 = EMA(C,7);

Buy= Cross(ema3,ema5) AND ema5 > ema7;
Sell=Cross(ema5,ema3)

Plot(C,"TrippleEMA",colorDefault,64);
shape = Buy * shapeUpArrow + Sell * shapeDownArrow;
PlotShapes(shapeUpArrow*Buy,ParamColor("UpArrow",10),0,L);
PlotShapes(shapeDownArrow*Sell,ParamColor("DownArrow",11),0,H);
Plot(ema3,"EMA3",colorBrightGreen,styleDashed);
Plot(ema5,"EMA5",colorYellow,styleDashed);
Plot(ema7,"EMA7",colorOrange,styleDashed);
///////////////////////////////////////////

รูปที่ 1: แสดงจุดซื้อขายตามสูตร

ผลการทดสอบ 
จากข้อมูล 10 ปีของ SET (ปี 2005 - 2015)
- กำไร 341% (เริ่มจากเงิน 10,000 บาท  ตอนนี้มี 44,110 บาท)
- เทรดไปทั้งหมด 82 ครั้ง  Win 49 ครั้ง (59.76 %)    Lost 33 ครั้ง(40.24 %)
- Max DrawnDown (ช่วงที่ขาดทุนเยอะที่สุด) ของระบบ -8.03%

รูปที่ 2: ผลการทดสอบ

ส่วนตัวผมว่าระบบนี้ดีมากๆเลยทีเดียว ให้ผลตอบแทนค่อนข้างดี และมี drawn down ต่ำ
ถ้าเจอระบบไหนน่าสนใจอีกจะเอามาแชร์ในโอกาศหน้าครับ

หรือถ้าใครสนใจอยากให้ลองระบบไหนเมล์มาได้ครับที่ maoversion2@gmail.com

Saturday, March 28, 2015

รักษากำไรด้วย Trailing Stop

"อย่าให้กำไรกลายเป็นขาดทุน" คำนี้คงเคยได้ยินกันมาบ้างนะครับ

ระบบ trade บางระบบอาจมีข้อเสียตรงที่กว่าจะร้องออกมาว่า "ขายได้แล้ว" กำไรเราก็หดไปเยอะแล้ว วิธีนึงที่ช่วยรักษากำไรไว้คือการใส่ trailing stop เข้าไปในระบบ  เมื่อเราเห็นว่าราคาปิดลงมาถึงเส้น stop แล้วเราก็ขายทำกำไรไปก่อน

ผมไปอ่านเจอ Trailing Stop ตัวนึงเรียกว่า Chandelier Exit เห็นว่าน่าสนใจดีเลยเอามาแชร์ครับ  Chandelier Exit เป็นทฤษฎีที่กำหนดจุดขายเพื่อรักษากำไรไว้ โดยอาศัยค่า Average True Range (ATR)

ผมเอาสูตรจาก บทความที่แล้ว  มาปรับเพิ่มเส้น stop เข้าไปครับ

// Revision History
//- version1. initial version
//- version2. Add trailing stop line
ema10 = EMA(C,10);
ema20 = EMA(C,20);
Buy = Cross(ema10, ema20);
Sell = Cross (ema20, ema10);
Plot(C,"Test EMA system",colorDefault,styleCandle);
PlotShapes(shapeUpArrow*Buy,ParamColor("UpArrow",10),0,L);
PlotShapes(shapeDownArrow*Sell,ParamColor("DownArrow",11),0,H);

ATRPeriod=22;
PricePeriod=22;
multiplier=0.5;  //ค่า multiplier ยิ่งต่ำ ค่าของ stop loss ก็จะยิ่งใกล้กับราคาปิดมากขึ้น

TrailTop=HHV(C,PricePeriod) - ATR(ATRPeriod) * multiplier;
TrailBtm=LLV(C,PricePeriod) + ATR(ATRPeriod) * multiplier;
Plot(TrailTop,"TrailTop",colorBrightGreen,styleLine);
Plot(TrailBtm,"TrailBtm",colorRed,styleLine);

Download สูตรได้จาก link นี้ครับ

สูตรนี้จะแสดง Trailing stop ทั้งขา long (ดูที่เส้นสีเขียว) และ short (ดูที่เส้นสีแดง)
สำหรับคนที่ trade หุ้นอย่างเดียวดูแค่เส้นสีเขียวก็พอครับ  เมื่อเราได้กำไรมาระดับนึงแล้ว (ราคาปิดอยู่เหนือเส้นสีเขียว)  พอราคาหุ้นปิดต่ำกว่าเส้นเขียวก็ขายทำกำไรออกมา  จะขายหมดเลยหรือขายบางส่วนก็แล้วแต่ครับ

ลองมาดูรูปกัน



จะเห็นได้ว่าสัญญาณขายเกิดขึ้น ณ จุดที่ 2  แต่ถ้าเราขายไปก่อน ณ จุดที่ 1 เราจะรักษากำไรไว้ได้มากกว่า

การใช้ trailing stop ควรดู trend ประกอบด้วยนะครับ  ถ้าใช้ช่วงเริ่มต้น trend ก็อาจจะเป็นการขายหมูได้  ใช้ในช่วงปลายๆ trend หรือ sideway น่าจะเหมาะกว่าครับ




Saturday, March 21, 2015

ทดลองทำระบบ Trade โดยใช้ AmiBroker

ใครที่สนใจการ trade แบบใช้ระบบเข้ามาช่วยหาจุดซื้อจุดขายแต่ไม่รู้จะเริ่มยังงัย วันนี้ผมมีวิธีการ setup ระบบมาแชร์ครับ

สิ่งที่ต้องมีคือ
1. ตัวโปรแกรม  ผมแนะนำ AmiBroker เบื้องต้นใช้ free version ไปก่อนแต่จะมีข้อเสียคือเราต้องโหลด (import) ข้อมูลหุ้นใหม่ทุกครั้งที่มีการปิดเปิดโปรแกรม
2. ข้อมูลหุ้นที่อยู่ในรูปแบบของ text file อันนี้น่าจะหากันเองได้นะครับ
3. สูตรของระบบ ในบทความนี้จะใช้ EMA Cross ครับ

เริ่มกันเลย

1. โหลดโปรแกรม AmiBroker (ตามลิ้งค์นี้)ผมใช้ version 32bit ครับ พอลงโปรแกรมเสร็จแล้วเปิดขึ้นมาจะเห็นว่ามีหุ้นของอเมริกาอยู่บางตัว ผมเข้าใจว่าให้มาดูเป็นตัวอย่าง เราลบพวกนี้ทิ้งก่อนเลย ลบเสร็จแล้วก็จะได้หน้าจอว่างๆแบบในรูป



2. เตรียมข้อมูลใส่ text file ในที่นี้ผมใช้ข้อมูลของ Set ย้อนหลัง 5 ปีครับ ลองหาข้อมูลจาก siamchart.com , google/yahoo finance ดูครับ
จัด Format แบบนี้ 

symbol,date,open,high,low,close,volume


date นี้ format เป็น yyyymmdd นะครับ


3. โหลดข้อมูลเข้า AmiBroker
ไปที่เมนู File -> Import ASCII จากนั้นไปเลือกไฟล์ที่เราเตรียมไว้
** ต้องเลือก File type เป็น Omega SC ASCII นะครับ











4. เตรียมไฟล์ที่กำหนดเงื่อนไขการซื้อขาย  ในที่นี้ผมจะให้ Buy เมื่อ EMA10 ตัดขึ้นเหนือ EMA20  และขายเมื่อ EMA10 ตัดลงต่ำกว่า EMA20
Copy code นี้แล้วเอาไป save เป็น text file ลงในเครื่องตัวเองนะครับ แล้วตั้งชื่อว่า SimpleEMASystem.afl

หรือจะโหลด  จากลิ้งค์นี้  ก็ได้ 

/////START////
ema10 = EMA(C,10);
ema20 = EMA(C,20);
Buy = Cross(ema10, ema20);
Sell = Cross (ema20, ema10);
Plot(C,"Test EMA system",colorDefault,styleCandle); 
PlotShapes(shapeUpArrow*Buy,ParamColor("UpArrow",10),0,L); 
PlotShapes(shapeDownArrow*Sell,ParamColor("DownArrow",11),0,H);
/////END////

สูตรที่ใช้ใน AmiBroker จะคล้ายๆกับการเขียนโปรแกรมครับ ผมเองก็ลองมั่วๆดู
ถ้าสนใจสูตรต่างๆเพิ่มเติมลองดูที่ http://www.wisestocktrader.com/indicators



5. กลับไปที่โปรแกรม AmiBroker แล้วเลือกเมนู Analysis -> New Analysis
จากนั้นเลือกไฟล์สูตรที่ได้จากข้อ 4, เลือกช่วงเวลาของข้อมูลที่จะทำการทดสอบ  จากนั้นกดปุ่ม Backtest ผลลัพท์ที่ได้คือข้อมูลการซื้อขายที่เกิดขึ้นโดยอิงเงื่อนไขจากสูตรในข้อ 4  รายละเอียดจะค่อนข้างเยอะ เราไปดู report สรุปกันดีกว่า





6. Summary Report
กดที่ปุ่ม Report


มาวิเคราะห์กันว่าระบบที่เราตั้งไว้มีค่าอะไรน่าสนใจบ้าง
- เริ่มต้น Jan-2010 ด้วยเงิน 10,000 บาท ณ March-2015 มีเงิน 60,507.55 บาท (กำไร 505.08%)
- เทรดไปทั้งหมด 62 ครั้ง
- Win Trade 29 ครั้ง (คิดเป็น 46.77%)
- Lost Trade 33 ครั้ง (คิดเป็น 53.23%)
- Lost Trade ติดๆกันมากสุด 8 ครั้ง
  ** ตรงนี้แปลว่าถ้าเราจะยังคงใช้ระบบนี้ต่อไปในอนาคต การซื้อแต่ละครั้งต้องไม่ลงเงินเกิน 1 ใน 8 ของพอร์ต เพราะถ้าพลาดจะได้ยังพอมีเงินเหลือกลับมาแก้ตัว
- Max system drawdown ช่วงเวลาที่ขาดทุนมากที่สุดคิดเป็น - 25.23%  ถ้าจะใช้ระบบนี้ต้องทำใจยอมรับการขาดทุนที่เท่านี้ให้ได้นะขอรับ

7. ดูจุดซื้อขายใน Graph
เผื่อบางคนเทียบกับกราฟว่าซื้อตรงไหนขายตรงไหน ทำตามนี้ครับ
- ในโปรแกรม AmiBroker กดปุ่ม Formular Editor (จะมีโปรแกรม AFL Formula Editor โผล่ขึ้นมา)
- ในโปรแกรม AFL Formula Editor กดปุ่ม Open แล้วเลือก file ที่ save มาจากข้อ 4
- ในโปรแกรม AFL Formula Editor กดปุ่ม Apply
- กลับไปที่ โปรแกรม AmiBroker จะมี panel ใหม่โผล่มาซึ่งจะแสดงจุดซื้อขายตามเงื่อนไขของระบบ



8. สรุป
- การใช้ระบบเข้ามาช่วยก็ดีตรงที่ตัดอารมณ์ความรู้สึกออกไป ระบบบอกให้ซื้อก็ซื้อให้ขายก็ขาย
- ระบบมีมากมายหลายแบบ บางระบบใช้ RSI, MACD, Peak&Through  ลอง Run Backtest ดูแล้วหาระบบที่เหมาะสมกับตัวคุณดูครับ
- ** สำคัญมากๆคือวินัย  ห้ามซื้อขายนอกเหนือจากที่ระบบบอก 
- ทั้งหมดนี้เพื่อการศึกษาวิธีการทดลองการ Trade โดยใช้ระบบเข้ามาช่วย ไม่ได้เป็นการบอกว่าใช้ระบบตัวอย่างนี้แล้วจะ work นะครับ
ระบบนี้ถ้าเอาไปใช้กับหุ้นตัวอื่นอาจให้ผลติดลบก็ได้
Backtest และวิเคราะห์ผลจนมั่นใจแล้วถึงค่อย Trade ครับ