MyBanner

โฆษณา

วันเสาร์ที่ 28 พฤศจิกายน พ.ศ. 2558

แกะรอย EA ตัวอย่างสำหรับ Forex ชื่อ MACD Sample



ดาวน์โหลดแฟ้ม EA ตัวอย่าง
My MACD Sample งดดาวน์โหลด
ปรับปรุงครั้งล่าสุดเมื่อ : ๒๑ พฤศจิกายน พ.. ๒๕๕๘


                แฟ้ม EA ตัวอย่างที่แถมมาพร้อมกับโปรแกรม MT4 (MataTrader4) ที่ยังไม่ได้พูดถึงอีกชุดหนึ่งคือ EA ที่เชื่อ MACD Sample ซึ่งถ้าเรานำ EA ชุดนี้ไปใช้เลยโดยไม่ได้ปรับแต่งใดๆ อาจจะมีผลเสีย คือ EA ชุดนี้จะปิดคำสั่งซื้อ/ขายตราสารอัตราแลกเปลี่ยนเงินตราระหว่างประเทศ หรือ FOREX ทุกๆ คำสั่ง ตามเงื่อนไขการปิดคำสั่งซื้อ/ขายของตัว EA โดยไม่สนใจว่า คำสั่งซื้อ/ขายนั้นๆ เป็นคำสั้งซื้อ/ขายที่เปิดด้วยตัว EA เองหรือไม่ และ EA ชุดนี้จะสั่งปิดคำสั่งซื้อ/ขายโดยไม่สนใจว่า คำสั้งซื้อ/ขายนั้นๆ จะมีกำไรหรือขาดทุน (ติดลบ)

เงื่อนไขการเปิดคำสั่งซื้อ/ขายของ MACD Sample


EA ตัวอย่างชื่อ MACD Sample ชุดนี้ จะเริ่มทำการเปิดคำสั่งซื้อ/ขายเมื่อแท่งราคาผ่านไปแล้ว 100 แท่งแบบเดียวกับ EA ตัวอย่างชื่อ Moving Average โดยจะดำเนินการในขณะที่มีการเปลี่ยนแปลงขึ้น/ลงของราคา (Ontick) โดยจะใช้อินดิเคเตอร์ 2 ตัวประกอบกันคือ MACD (Moving Aaverage Convergent Divergent) ค่ามาตรฐาน (12, 26, 9) และ Moving Average โดยใช้เส้น MA(26) เป็นค่าปริยาย แต่ก่อนจะทำการเปิดคำสั่งซื้อ/ขาย ตัว EA จะตรวสอบค่า Free Margin ของเราก่อน ถ้า Free Margin น้อยกว่า 1000 x จำนวนล็อต ตัว EA จะไม่เปิดคำสั่งซื้อ/ขาย

EA ชุดนี้สามารถใช้ได้กับทุกๆ คู่เงิน และใช้ได้กับทุกๆ กรอบเวลา (Timeframe)

-เงื่อนไขการเปิดคำสั่งซื้อ (BUY)


MACD Sample จะทำการเปิดคำสั่งซื้อ หรือ BUY ตามสถานะการณ์ของราคาครบตามเงื่อนไขต่อไปนี้
      1. เมื่อค่า MACD ปัจจุบัน น้อยกว่า 0 และ
      2. ค่า MACD ปัจจุบันมากกว่าค่าของสัญญาณ (Signal) ปัจจุบัน และ
      3. ค่า MACD ก่อนหน้าปัจจุบัน ต้อง น้อยกว่า ค่าสัญญาณก่อนหน้าปัจจุบัน และ
      4. ค่า MACD ปัจจุบัน ต้องมากกว่า ค่า MACDOpenLevel X ค่า Point ของคู่เงินที่ทำการซื้อขายในขณะนั้น และ
      5. ค่า MA ปัจจุบัน ต้องมากกว่า MA ก่อนหน้านี้
                        โดยทุกเงื่อนไขต้องเกิดขึ้นพร้อมกัน

-เงื่อนไขการเปิดคำสั่งขาย (SELL)

สำหรับเงื่อนไขในการเปิดคำสั่งขาย หรือ SELl จะตรงข้ามกับการเปิดคำสั่งซื้อหรือ BUY โดยมีเงื่อนไขดังนี้
      1. เมื่อค่า MACD ปัจจุบัน มากกว่า 0 และ
      2. ค่า MACD ปัจจุบัน น้อยกว่า ค่าของสัญญาณ (Signal) ปัจจุบัน และ
      3. ค่า MACD ก่อนหน้าปัจจุบัน ต้อง มากกว่า ค่าสัญญาณก่อนหน้าปัจจุบัน และ
      4. ค่า MACD ปัจจุบัน ต้องมากกว่า ค่า MACDOpenLevel X ค่า Point ของคู่เงินที่ซื้อขายในขณะนั้น และ
      5. ค่า MA ปัจจุบัน ต้องน้อยกว่า MA ก่อนหน้านี้
                         โดยทุกเงื่อนไขต้องเกิดขึ้นพร้อมกันเช่นเดียวกัน

หมายเหตุ MACDOpenLevel เป็นค่าที่เรากำหนดเองตอนเริ่มติดตั้ง EA โดยค่าปริยายกำหนดไว้เท่ากับ 3

-เงื่อนไขการปิดคำสั่งซื้อ/ขาย

การปิดคำสั่งซื้อ/ขายของ EA ชื่อ MACD Sample จะมี 3 ลักษณะ คือ
      1. ปิดเมื่อราคาวิ่งชนค่า Take Profit หรือ TP
      2. ปิดเมื่อราคาวิ่งกลับชน Stop Loss หรือ SL ซึ่งถูกกำหนดโดยกลไกทำ Trailing Stop ของตัว EA เอง
      3. ปิดตามเงื่อนไขการปิดของตัว EA โดยเงื่อนไขจะตรงกันข้ามกับตอนเปิดคำสั่งซื้อ/ขาย เพียงแต่ในตอนปิดจะไม่มีการตรวจสอบค่า MA เท่านั้น (ตัดเงื่อนไขข้อที่ 5 ของการเปิดคำสั่งซื้อ/ขายออกส่วนเงื่อนไขที่ 4 จะเปรียบเทียบกับค่า MACDCloseLevel คูณกับ Point แทน  การรปิดคำสั่งซื้อ/ขายของ MACD Sample ตามเงื่อนไขการปิดตังกล่าว ตัว EA จะไม่สนใจว่า คำสั่งซื้อ/ขายนั้นๆ ได้กำไร หรือเป็นบวกหรือไม่ และไม่สนใจว่าคำสั่งซื้อ/ขายนั้นๆ จะเปิดโดยใคร

-การทำ Trailing Stop

ในตอนติดตั้ง EA ถ้าเรากำหนดค่า Trailing Stop ไว้ (ไม่เป็น 0) ตัว EA จะทำการใส่ Trailing Stop ให้ เมื่อราคาวิ่งเข้าสู่เงื่อนไขดังนี้
    • กรณีของคำสั่งซื้อ (Buy) จะทำเมื่อ ค่า Bid-ราคาที่เปิดคำสั่งซื้อ (OrderOpenPrice) มากกว่า ค่า point X TrailingStop
    • กรณีของคำสั่งขาย (Sell) จะทำเมื่อ ราคาที่เปิดคำสั่งขาย – Ark มากกว่า Point X TrailingStop

กำหนดค่าเริ่มต้นใช้ EA

ค่าต่างๆ ที่ต้องกำหนดตอนเริ่มต้นใชิ EA ส่วนใหญ่จะใช้ตามค่าปริยายที่ผู้พัฒนากำหนดมาให้ มีเพียงค่า Lots ที่อาจจะต้องกำหนดใหม่ เนื่องจาก lots เท่ากัย 0.1 อาจจะสูงไป

ปรับปรุงแก้ไข MACD Sample ใหม่

เนื่องจาก EA ที่ชื่อ MACD Sample มีแฟ้มต้นฉบับ หรือ Source code แถมมาด้วย ผู้เขียนก็จะขออนุญาตนำมาปรับแต่งใหม่ ตามความคิดของผู้เขียน แต่อย้างไรก็ดีผู้เขียนจะทำการปรับแต่งต้นฉบับโปรแกรมเฉพาะบางจุด ไม่ได้เปลี่ยนใหม่ และจะพยายามคงต้นฉบับเดิมไว้ให้มากที่สุด โดยรายละเอียดที่จะปรับแต่งใหม่มีดังนี้

1. กำหนดค่าปริยายสำหรับการเริ่มใช้ EA ใหม่ ดังนี้


                            TakeProfit = 1000
                            Lots = 0.01
                            TrailingStop = 250
            และเพิ่ม iMaxTrade = 5 คือต้องการกำหนดให้ EA เปิดคำสั่งซื้อ/ขายไม่เกินครั้งละ 5 คำสั่ง นอกนั้นจะใช้ค้าเดิม
เหตุผลที่กำหนด TakeProfit ไว้ที่ 1000 pip เพราะต้องให้ EA ปิดคำสั่งขาย/ตามเงื่อนไขที่ 3 มากกว่าให้ราคาวิ่งชน TP แต่พิจารณาเห็นว่าเทรนช่วงดังกล่าวน่าจะเป็นเทรนยาว อาจจะขยับ TP ออกไปได้ และเหตุผลที่กำหนด Trailing Stop ไว้ที่ 250 เนื่องจากถ้าเรากำหนด Trailing Stop ไว้ต่ำเกินไป เวลานำไปใช้กับโปรกเกอร์ XM เราจะไม่ได้ประโยชน์จากการที่ราคาวิ่งชน Trailing Stop ถ้าเรากำหนดไว้ที่ 250 เวลาที่เราราคาวิ่งชน Trailing Stop ก็น่าจะได้ 1 cent เป็นอย่างน้อย ส่วนการกำหนดจำนวนครั้งในเปิดคำสั่งซื้อ/ขายนั้น แต่เดิม EA จะเปิดแค่ 1 คำสั่ง ผู้เขียนต้องให้ EA ชุดนี้เปิดได้มากกว่า 1 คำสั่ง แต่ต้องไม่มากเกินไปจึงกำหนดค่า Max trade ไว้ ที่กำหนดชื่อเป็น iMaxTrade เพิ่อให้รู้ว่าตัวแปรชุดนี้เป็นตัวแปรที่เก็บเป็นเลขจำนวนเต็ม หรือ Integer


2. ยกเลิกการเปิดคำสั่งซื้อ/ขายหลังแท่งราคาผ่านไป 100 แท่ง



3. เพิ่มกลุ่มชุดคำสั่งในการนับคำสั่งซื้อ/ขายที่เปิดด้วย EA ตัวอย่างชุดนี้


 4.ยกเลิกคำสั่งในการตรวจสอบ Free Margin




5. ใส่สัญลักษณ์ หรือ MagicNumber เป็น 776 และข้อความในส่วนหมายเหตุของชุดคำสั่งในการเปิดคำสั่งซื้อ/ขาย เป็น “My MACD Sample” เพื่อให้รู้ว่าคำสั่งซื้อ/ขายนั้นๆ เปิดด้วย EA ชุดนี้




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


7. ใส่เงื่อนไขในการตรวจสอบเพื่อทำ Trailing Stop โดยจะเลือกดำเนินการเฉพาะคำสั่งซื้อ/ขายที่เปิดโดย EA ชุดนี้เท่านั้น


ผลการนำไปใช้งาน


หลังจากที่ทำการปรับปรุง EA ที่ชื่อ MACD Sample ใหม่ ผู้เขียนได้ทดลองกับบัญชี cent ของ EXNESSบัญชี fix-centของ RoboForex, FBS บัญชี cent และบัญชี Micro ของ XM โดยทดลองที่ Time Frame 15 นาทีเป็นเวลา 1 สัปดาห์ของ Forex พบว่า EA ชุดนี้จะให้กำไรเป็นค่าเฉลี่ยประมาณ 1 ถึง 2 เปอร์เซนต์ต่อวัน

เรื่องของ Stop loss

ถ้าท่านผู้อ่านได้ติดตามบทความเรื่องแกะรอย EA ตัวอย่าง ทั้งกรณีของ EA ที่ชื่อ Moving Average และ EA ที่ชื่อ MACD Sample ชุดนี้ จะสังเกตุเห็นว่า ไม่มีการพูดถึงเรื่อง Stop loss ทั้งนี้เนื่องจาก EA ทั้งสองชุดนี้จะทำการเปิดคำสั่งซื้อ/ขายตามเทรน การเปลี่ยนเทรนของราคา จะทำหน้าที่เป็น Stop loss อัตโนมัติ คือ ถ้าคำสั่งซื้อ/ขายนั้นๆ ยังให้กำไรติดลบอยู่ แล้วเกิดการเปลี่ยนเทรน ถ้าเป็น EA เดิม (ทั้ง Moving Average และ MACD Sample) ส่วนที่ติดลบคือเงินที่เราต้องเสียไป
แต่อย่างไรก็ดี หลังจากผู้เขียนทำการปรับปรุง EA ไม่ให้ปิดคำสั่งซื้อ/ขายที่ยังให้ค่าผลกำไรติดลบอยู่ ก็จะมีผลให้คำสั่งซื้อ/ขายนั้นๆ ไม่มี Stop Loss เวลาเกิดการเปลี่ยนเทรนของราคา ก็จะเกิดการลากยาว แต่เนื่องจากจำนวนล็อตที่เปิดแต่ละครั้งไม่สูงนักทำให้ทนการลากยาวๆ ได้ แต่ต้องมีเงินในบัญชีมากพอสมควร อย่างน้อยควรจะ $1000 หรือ 1000 cent ขึ้นไป

บันทึกประจำวันที่ 16 กรกฎาคม พ.. 2557 (2014)

เวลา
เหตุการณ์
06:00 .
ตื่นนอน ทำบัญชีครัวเรือน ทำบันทึกประจำวันของวันก่อน
06:45 .
งานของกิจกรรมอาชีพ งานอินเตอร์เน็ต (18/2557):ทำแฟ้มโครงร่างบทความเรื่องใหม่
07:00 .
พักผ่อน
07:15 .
0.กินข้าวเช้า
1.กับข้าว:ข้าวโพดทอด, ผักรวก, สะตอสด, น้ำพริก, บะหมี่กึ่งสำเร็จรูปต้ม
08:00 .
งานของกิจกรรมอาชีพ กสิกรรมธรรมชาติ แปลงสวนปาล์ม (8/2557) : ฉีดพ่นอาหารเสริมพืช YIC nano ในแปลงสวนปาล์ม
09:00 .
อาบน้ำ
09:30 .
เดินทางไปตลาดด่านช้าง, แวะคุยกับพี่ล้วน, แวะทำบัตร ATM ใหม่ที่ ธ. กรุงไทย, แวะเอาของที่ไปรษณีย์, แวะกินข้าวกลางวัน, ซื้อยาร้านสุวรรณเวช
12:30 .
งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557):แวะคุยกับกลุ่มคนปลูกแตงกวาแถวบ้านต้นสน
15:00 .
Note: เจ้าของร้านเม้งฮวด 2 แวะมาเยี่ยมบ้าน
17:30 .
พักผ่อน
18:15 .
ทำบัญชีครัวเรือน, ทำบันทึกประจำวันของวันก่อน
19:00 .
งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557):เชื่อมต่ออินเตอร์เน็ต ทำข้อมูลร้านค้า หมอดิน YIC นาโน
20:15 .
0.อาบน้ำ กินข้าว พักผ่อน
1.กับข้าว:ต้มยำหยวกกล้วยขาหมู, สะตอสด, น้ำพริก
21:00 .
เข้านอน

วันอาทิตย์ที่ 8 พฤศจิกายน พ.ศ. 2558

แกะรอย EA ตัวอย่างสำหรับ Forex ชื่อ Moving Average



         หลังจากที่ติดตั้งโปรแกรม MT4 (MetaTrader 4) ใหม่ๆ ไม่ว่าท่านจะดาวน์โหลดตัวติดตั้งโปรแกรม MT4 มาจากโปรกเกอร์ค่ายใด เมื่อทำการเรียกโปรแกรมขึ้นมาทำงานบนเดสก์ท็อปของคอมพิวเตอร์ ถ้าเราเข้าไปดูที่หัวข้อ Expert Adviser ในกรอบ Navigator ของโปรแกรม MT4 ดังกล่าว จะพบว่ามีชื่อของโปรแกรม Expert Adviser หรือ EA แถมมาให้ 2 โปรแกรมคือ Moving Average และ Macd Sample ซึ่งโปรแกรม EA ทั้งสองชุดจะเป็นตัวอย่างสำหรับใช้ศึกษาเรื่องของวิธีการเขียนโปรแกรม Expert Adiviser หรือโปรแกรมสำหรับเปิดคำสั่งซื้อ/ขายในตลาด Forex ส่วน EA ทั้งสองชุดนี้จะใช้งานจริงได้หรือไม่นั้น ต้องติดตามได้จากเรื่องราวที่เรากำลังแกะรอยในครั้งนี้

Moving Average

ขอเริ่มต้นที่ EA ชื่อ Maving Average หรือ Moving Average Sample Expert Adviser ในชื่อเต็ม เป็น EA ตัวอย่าง เนื่องจากมีต้นฉบับโปรแกรม หรือ Source Code ของตัว EA แถมมาด้วย (แฟ้ม Moving Average.mq4) EA ดังกล่าวเป็นลิขสิทธิ์ของ MetaQuortes Software Corp. หรือบริษัทที่พัฒนาโปรแกรม MT4 ขึ้นมานั่นเอง

-ลักษณะทั่วไป


Moving Average ดังกล่าวเป็น EA ที่ทำการเปิดคำสั่งซื้อ/ขาย (Order) โดยใช้อินดิเคเตอร์ (Indicator) ชื่อ Moving Average (MA) โดยใช้การคำนวณแบบ Simple (Mode-SMA) โดยผู้นำไปใช้สามารถกำหนดค่า MA ได้เอง แต่ค่าปริยาย (default) จะเป็น 12 (ค่าของ Moving Periad) ใช้ได้กับทุกๆ คู่เงิน และจะทำงานบนกรอบเวลา (Time frame) ปัจจุบัน หมายถึง เราทำการวาง EA ชุดนี้บน timeframe ไหน ตัว EA จะทำงานบน timefame นั้น
เป็น EA ที่มีการกำหนดขนาดล็อตอัตโนมัติ โดยกำหนดจำนวนล็อตเริ่มต้นสำหรับการหาค่าล็อตเท่ากับ 0.1 วิธีการหาจะใช้วิธีการเปรียบเทียบจากคำสั่งซื้อ/ขายที่เปิดค้างอยู่ตามจำนวนรายการที่ระบุในค่าของ DecreaseFactor โดยค้าปริยายจะกำหนดไว้เท่ากับ 3 ซึ่งหมายถึง EA ชุดนี้จะนับจำนวนรายการของคำสั่งซื้อ/ขายที่ยังติดลบอยู่แล้วใช้ค่า DereaseFactor เป็นตัวหาร เพื่อหาขนาดของล็อตที่เหมาะสมสำหรับคำสั่งซื้อ/ขายคำสั่งถัดไป
ค่า DecreaseFactor สามารถกำหนดค่าเป็น 0 ได้ แต่อย่างไรก็ดี ถ้าผลการคำนวณปรากฏว่าค่าล็อตต่ำกว่า 0.1 โปรแกรม Maving Average กำหนดค่าล็อตให้เท่ากับ 0.1 ดังนั้น ถ้าจะใช้ EA ชุดนี้โดยไม่มีการปรับปรุงแก้ไขใดๆ เราจะต้องมีเงินเริ่มต้นไม่น้อยกว่า 1,000 $ หรือ 1000 cent แล้วแต่ประเภทของบัญชีที่เราเปิดใช้
ตัว EA จะเริ่มทำงานเมื่อมีการเปลี่ยนแปลงขึ้น/ลงของราคา (OnTick) หลังจากที่เราสั่ง EA ให้ทำงาน โดยจะเริ่มเปิดคำสั่งซื้อ/ขายเมื่อแท่งราคาผ่านไปแล้ว 100 แท่ง การตรวจสอบเงื่อนไขสำหรับการเปิดคำสั่งซื้อ/ขาย จะใช้แท่งราคาแท่งที่ผ่านมาในการตรวจสอบ เป็น EA ที่มีไมมีการกำหนดค่า Stop loss และค่า Take Profit (sl / tp) และจะเปิดคำสั่งซื้อหรือขายอย่างละ 1 คำสั่งเท่านั้น

-เงื่อนไขในการเปิดและปิดคำสั่งซื้อ (Long / Buy)

เงื่อนไขในการเปิดคำสั่งซื้อ หรือ Buy ของ EA ชุดนี้จะเปิดคำสั่งซื้อ หรือ Buy เมื่อตรวจพบว่าราคาเปิด (Open) ของแท่งราคาแท่งที่ผ่านมามีค่าน้อยกว่าค่าของ MA และ ราคาปิด (close) ของแท่งราคาแท่งที่ผ่านมามีค่ามากกว่าค่าของ MA
ส่วนเงื่อนไขในการปิดคำสั่งซื้อ หรือ Buy เมื่อ EA ตรวจพบว่า ราคาเปิดของแท่งราคาแท่งที่ผ่านมามีค่า มากกว่าค่า MA และราคาปิดน้อยกว่าค่า MA

-เงื่อนไขในการเปิดและปิดคำสั่งขาย (Short / Sell)

เงื่อนไขในการเปิดคำสั่งขาย หรือ Sell ของ EA ชุดนี้จะทำการเปิดคำสั่งขาย หรือ Sell เมื่อตรวจพบว่าราคาเปิด (Open) ของแท่งราคาแท่งที่ผ่านมามีค่ามากกว่าค่าของ MA และ ราคาปิด (close) ของแท่งราคาแท่งที่ผ่านมามีค่าน้อยกว่าค่าของ MA
ส่วนเงื่อนไขในการปิดคำสั่งขาย หรือ Sell เมื่อ EA ตรวจพบว่า ราคาเปิดของแท่งราคาแท่งที่ผ่านมามีค่า น้อยกว่าค่า MA และราคาปิดมากกว่าค่า MA

สรุปก็คือ EA ชุดนี้จะทำการเปิด/ปิดคำสั่งซื้อขาย เมื่อแท่งราคาแท่งที่ผ่านมาทับกับเส้น MA โดยดูจากเงื่อนไขการเปิด/ปิดคำสั่งตามที่กล่าวมาในข้างต้น (โดยไม่สนใจทิศทางของเทรน) ช่วงที่แท่งราคาอยู่เหนือหรือใต้เส้น MA จะไม่เกิดการเปิดคำสั่งซื้อ/ขาย

การกำหนดค่าเริ่มต้นสำหรับการใช้ EA




EA ชุดนี้อนุญาตให้เรากำหนดค่าต่างๆ ได้ 5 ค่า ดังนี้
    • Lots หมายถึง จำนวนล็อตในการเปิดคำสั่งซื้อ/ขาย ค่าปริยายคือ 0.1
    • MaximumRisk หมายถึง เปอร์เซ็นต์กำไรที่เราต้องการ ค่าปริยายคือ 0.02 หรือประมาณ 2 %
    • DecreaseFactor หมายถึง จำนวนคำสั่งซื้อ/ขายที่เปิดค้างไว้สำหรับการคำนวณหาจำนวนล็อตในการเปิดคำสั่งซื้อ/ขายคำสั่งถัดไป
    • MovingPeriod หมายถึง เส้น MA ที่เราต้องการให้ EA ใช้ตรวจสอบเพื่อเปิดคำสั่งซื้อ/ขาย ค่าปริยายคือ 12 หรือค่า MA ของราคา 12 วันที่ผ่านมา
    • Moving Shift หมายถึง ค่าเบี่ยงเบนของ MA ที่ยอมรับได้ ค่าปริยายเท่ากับ 6

ถ้าจะนำไปใช้งานจริง

ผู้เขียนได้ทดลอง EA ชุดนี้กับบัญชีทดลองของ FBS โดยยังไม่แก้ไขหรือปรังปรุงต้นฉบับโปรแกรมของ EA ชุดนี้ใหม่ พบปัญหาร้ายแรงหลายเรื่อง เช่น EA ตั้งล็อตสูงเกินไป ไม่เหมาะกับคนที่มีทุนน้อยๆ และ EA การปิดคำสั่งซื้อ/ขายโดยไม่สนใจว่าคำสั่งซื้อ/ขายคำสั่งนั้นๆ ขาดทุนหรือกำไร ทำให้บัญชีทดลองดังกล่าวขาดทุนไปกว่า $400 ในเวลาไม่กี่นาที

ปรับปรุงให้เหมาะกับคนไทย

อย่างที่ได้บอกกล่าวไว้ว่า EA ชุดนี้มีปัญหาบางอย่างที่ทำให้ไม่เหมาะกับการนำไปใช้งานจริง แต่ถ้าเราไม่มี EA ตัวอื่นๆ เลย หรือมีแต่ไม่รู้คุณสมบัติของ EA นั้นๆ เลย ผู้เขียนว่า EA ตัวนี้น่าสนใจ เพียงแต่เราต้องทำการปรับแต่งต้นฉบับโปรแกรมของ EA ตัวนี้เล็กน้อย โดยเปิดโปรแกรมเมต้าเอดิเตอร์ขึ้นมา แล้วเปิดแฟ้ม Moving Average.mq4 ซึ่งอยู่ในโฟลเดอร์ Expert Advisor ขึ้นมา สำหรับจุดที่จะทำการแก้ไข จะมี 3 จุด ดังนี้

-ทำให้จำนวนล็อตต่ำสุดเริ่มต้นที่ 0.01


จุดแรกที่จะทำการแก้ไขคือ ทำการเปลี่ยนจำนวนล็อตเริ่มต้นจาก เดิม 0.1 เป็น 0.01 โดยเริ่มต้นด้วยการเปลี่ยนค่าของตัวแปร Lots เป็น 0.01 (บรรทัดคำสั่งที่ 15 ของต้นฉบับโปรแกรม) จุดที่ 2 คือที่ส่วนท้ายของฟังก์ชัน LotsOptimized โดยเปลี่ยนเงื่อนไข และคำสั่ง if จากเดิม if (lot < 0.1) lot = 0.1 เปลี่ยนเป็น if (lot < 0.01) lot = 0.01; (บรรทัดคำสั่งที่ 70)


-ทำให้ EA เลือกปิดคำสั่งซื้อ/ขายเฉพาะที่ได้กำไรเท่านั้น

วิธีการก็คือ เราจะหาค่าผลตอบแทนของคำสั่งซื้อ/ขายที่กำลังจะถูกปิดคำสั่งในขณะนั้น โดยนำค่า OrderProfit(), OrderSwap() และ OrderCommission() ของคำสั่งซื้อ/ขาย มาตรวจสอบว่าเป็น บวก (มีกำไร) หรือ เป็น ลบ (ขาดทุน) ถ้ายังเป็นขาดทุนอยู่จะยังไม่ปิดคำสั่งซื้อ/ขายนั้นๆ โดยกิจกรรมนี้ เราจะใส่เพิ่มลงในฟังก์ชัน CheckForClose() ของ EA โดยรายละเอียดของฟังก์ชันดังกล่าวที่ปรับปรุงแก้ไขใหม่มีดังนี้

//+------------------------------------------------------------------+
//| Check for close order conditions |
//+------------------------------------------------------------------+
void CheckForClose()
{
       double ma;
       double dOrderProfit; //สำหรับเก็บค่ากำไรขาดทุนของ Order
        //--- go trading only for first tiks of new bar
        if(Volume[0]>1) return;
                //--- get Moving Average
                ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
                //---
                for(int i=0;i<OrdersTotal();i++)
                {
                          if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
                          if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
                           //หาค่ากำไร/ขาดทุนของ Order
                          dOrderProfit = OrderProfit() + OrderSwap() + OrderCommission();
                          //ถ้าค่ากำไร/ขาดทุนของ Order ยังติดลบยังไม่ปิด Order
                          if (dOrderProfit > 0)
                         {
                                   //--- check order type
                                   if(OrderType()==OP_BUY)
                                   {
                                             if(Open[1]>ma && Close[1]<ma)
                                            {
                                                       if(!OrderClose(OrderTicket(),OrderLots(),Bid,3,White))
                                                                 Print("OrderClose error ",GetLastError());
                                             }
                                             break;
                                   }
                                   if (OrderType()==OP_SELL)
                                   {
                                             if (Open[1]<ma && Close[1]>ma)
                                             {
                                                          if(!OrderClose(OrderTicket(),OrderLots(),Ask,3,White))
                                                                       Print("OrderClose error ",GetLastError());
                                             }
                                             break;
                                    }
                       } //end if
             } //end for
             //---
}

-ทำให้ EA เริ่มทำงานทันทีไม่ต้องรอแท่งราคาครบ 100 แท่ง

สำหรับการทำให้ EA ทำงานทันทีไม่ต้องรอจนเกิดแท่งราคาครบ 100 แท่ง จะทำที่ฟังก์ชัน OnTick() ในแฟ้มต้นฉบับบทของ EA โดยแก้ไขคำสั่ง if จากเดิม if(Bars<100 || IsTradeAllowed()==false) เป็น if(IsTradeAllowed()==false) return;

ผลการนำไปใช้งาน

หลังจากที่เราทำการแก้ไขต้นฉบับโปรแกรม และสั่งคอมไพล์ EA ชุดนี้แล้ว ก็ต้องลองนำมาใช้งานจริงดู (ขออนุญาตไม่พูดถึงการ back test) โดยเริ่มต้นกับบัญชีทดลองของ FBS ปรากฏว่าสามารถดึงเงินถูกกลืนไปกลับคืนมาได้ และได้ทดลองใช้กับบัญชีจริงทั้งของ RoboForex บัญชี Fix-cent ทุน 1000 cent และบัญชีจริงของโปรกเกอร์ XM บัญชีไมโครทุน $5 และบัญชี cent ของ EXNESS ทุน 236 cent  โดยใช้ Timeframe M1 ซึ่งได้ทำการทดลองก่อนหน้าที่จะทำบทความชุดนี้ประมาณ 1 อาทิตย์ (.. 2558)

ผลการทดลองใช้กับบัญชีทดลองของ FBS

ผลที่ได้ก็คือ พอมีกำไรแต่ไม่มากนัก และยังไม่เห็นปรากฏการล้างพอร์ท อาจจะเป็นเพราะ EA ชุดนี้ทำการเปิดคำสั่งซื้อ/ขายทีละคำสั่ง และรอปิดคำสั่งเมื่อมีกำไร และซื้อในขนาดล็อตต่ำสุด ก็ถือว่าเป็น EA ที่ทำกำไรอย่างช้าๆ และเชื่อถือได้พอสมควร
การขาดทุนจากการวิ่งเข้าหา Stop loss จะไม่มี แต่อาจจะเกิดการล้างพอร์ทได้หากวงเงินหลักประกันเหลือน้อยเกินกว่า 20 เปอร์เซนต์ อาจจะต้องคอยตรวจสอบช่วงที่ผลกำไรยังไม่เป็นบวก อาจจะต้องฝากเงินเพิ่มเข้าไปในบัญชีเพื่อรักษาระดับหลักประกันของบัญชีไว้

แก้ไขเพิ่มเติม

เนื่องจากเดิม EA ชุดนี้จะเปิดคำสั่งซื้อ/ขายได้เพียง 1 คำสั่งต่อครั้ง ผู้เขียนจึงปรับปรุงแก้ไขเพิ่มเติมให้สามารถเปิดได้มากกว่า 1 คำสั่ง โดยใช้ค่าของ DecreaseFactor เป็นตัวกำหนดจำนวนคำสั่งสูงสุดในการเปิดคำสั่งซื้อ/ขาย หมายถึง ถ้าเรากำหนดค่า DecreaseFactor เท่ากับ 1 โปรแกรม EA ชุดนี้จะเปิดคำสั่งซื้อ/ขาย 2 คำสั่ง คือคำสั่งซื้อ (Buy/Long) 1 คำสั่ง และคำสั่งขาย (Sell/Short) 1 แต่ถ้าราคาเดินถูกทาง EA ชุดนี้จะเปิดคำสั่งซื้อหรือขายเพียงคำสั่งเดียว
ถ้าเรากำหนดค่า DecreaeseFactor เท่ากับ 5 EA จะเปิดคำสั่งซื้อ/ขายรวม 10 คำสั่ง สำหรับค่าปริยายจะกำหนดไว้เท่ากับ 3 คือจะเปิดคำสั่งซื้อ/ขายรวม 6 คำสั่งต่อรอบการเปิดคำสั่งซื้อ/ขาย ถ้าค่าของ DecreaseFactor ถูกกำหนดให้เป็น 0 โปรแกรม EA ชุดนี้จะเปิดคำสั่งซื้อ/ขายเพียง 1 คำสั่งเท่านั้น
ขอให้โชคดีในการเทรดฟอเร็กซ์กันทุกๆ ท่านนะครับ

บันทึกประจำวันที่ 15 กรกฎาคม พ.. 2557 (2014)

เวลา
เหตุการณ์
06:00 . ตื่นนอน
06:30 . กวาดพื้นใต้ถุนบ้าน
07:00 .
นำน้ำหมักจุลินทรีย์ราดบ่อปลา, ทำอีเอ็มขยายลูกถังที่ 2 และเริ่มใช้อีเอ็มขยายลูกถังที่ 3
08:00 .
0.กินข้าวเช้า
1.กับข้าว:แกงเขียวหวาน, บะหมี่กึ่งสำเร็จรูปต้ม, สะตอสด, น้ำพริก
08:30 .
งานของกิจกรรมอาชีพ กสิกรรมธรรมชาติ แปลงสวนปาล์ม (8/2557):ฉีดพ่นอาหารเสริมพืช YIC nano ในแปลงสวนปาล์ม
10:00 .
งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557):ไปพิมพ์ใบโปรชัวร์ที่วัดเขาแก้ว
13:30 .
0.กินข้าว พักผ่อน 1.กับข้าว:แกงเขียวหวาน, บะหมี่กึ่งสำเร็จรูปต้ม, สะตอสด, น้ำพริก
12:30 . สูบน้ำใช้ด้วยปั้มชักพลังงานโซลาร์เซลล์
13:30 .
งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557):กรองน้ำหมักใบยาสูบไปฝากลูกค้า YIC nano ที่ปลูกแตงกวา สำหรับไร่เพลี้ย
16:00 .
งานของกิจกรรมอาชีพ งานการตลาดและการลงทุน (20/2557):นำน้ำหมักใบยาสูบไปฝากลูกค้าย่านไร่ยา, และมาเสนอสินค้า YIC nano ย่านซอยท่าเดื่อ
19:00 .
0.อาบน้ำ กินข้าว พักผ่อน
1.กับข้าว:ข้าวโพดทอด, แกงเปอะหน่อไม้ไผ่ตงลืมแล้ง, ผักรวก, สะตอสด, น้ำพริก
21:00 . เข้านอน

Adz2you.