MyBanner

โฆษณา

วันอาทิตย์ที่ 17 มกราคม พ.ศ. 2559

กลยุทธ์ในการเปิดคำสั่งซื้อขายของ My Fast Slow Moving Average Thai EA



ดาวน์โหลดแฟ้ม EA
ปรับปรุงครั้งล่าสุดเมื่อ :๑๖ มกราคม พ.ศ. ๒๕๕๙ เวลา ๑๒.๐๐ น. Unstable
ไม่รับประกันความเสียหายอันเนื่องมาจากการทำงานของ EA ชุดนี้



สำหรับกลยุทธ์ (Strategy) ในการเปิดคำสั่งซื้อ/ขายของ My Fast Slow Moving Average Thai EA นั้น จะเป็นระบบที่เปิดคำสั่งซื้อ/ขายตามเทรน (Trend) โดยใช้เส้นค่าเฉลี่ยของราคา หรือที่เรียกว่า Moving Average : MA เป็นตัวกำหนดเทรน ซึ่งใน EA ชุดนี้จะใช้เส้นค่าเฉลี่ยจำนวน 2 เส้น คือ เส้นค่าเฉลี่ยเคลื่อนเร็ว (Fast Moving Average) ซึ่งค่าที่ใชึ้คือ MA (28) หรือเส้นค่าเฉลี่ยของราคาจำนวน 28 วันที่ผ่านมา และเส้นค่าเฉลี่ยเคลื่อนช้า (Slow Moving Average) ซึ่งค่าที่ใช้คือ MA (180) หรือเส้นค่าเฉลี่ยของราคาของราคาจำนวน 180 วันที่ผ่านมา โดยชนิดของเส้นค่าเฉลี่ยที่ใช้จะเป็นแบบ Simple ทั้งหมด


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

กรณีการเปิดคำสั่ง ซื้อ หรือ BUY (ขาขึ้น)
      1. เส้นค่าเฉลี่ยเคลื่อนเร็ว > เส้นค่าเฉลี่ยเคลื่อนช้า
      2. ราคาปิดของแท่งราคาแท่งที่ผ่านมา > เส้นค่าเฉลี่ยเคลื่อนเร็ว และ ราคาเปิดของแท่งราคาแท่งปัจจุบัน > เส้นค่าเฉลี่ยเคลื่อนเร็ว

กรณีการเปิดคำสั่ง ขาย หรือ SELL (ขาลง)
      1. เส้นค่าเฉลี่ยเคลื่อนเร็ว < เส้นค่าเฉลี่ยเคลื่อนช้า
      2. ราคาปิดของแท่งราคาแท่งที่ผ่านมา < เส้นค่าเฉลี่ยเคลื่อนเร็ว และราคาเปิดของแท่งราคาปัจจุบัน < เส้นค่าเฉลี่ยเคลื่อนเร็ว

สำหรับกลไกของ My Fast Slow Moving Average Thai EA ที่ทำหน้าที่การเปิดคำสั่งซื้อ/ขายตามที่กล่าวมาในข้างต้น จะเป็นหน้าที่ของฟังก์ชัน “ตรวจสอบเปิดคำสั่งซื้อขาย()” ซี่งมีเนื้อหาของฟังก์ชันดังนี้

/*+------------------------------------------------------------------+
ฟังก์ชัน ตรวจสอบเปิดคำสั่งซื้อขาย(); ทำหน้าที่ตรวจสอบเงื่อนไข เพื่อเปิดคำสั่งซื้อขาย
+------------------------------------------------------------------+*/
void ตรวจสอบเปิดคำสั่งซื้อขาย(double เส้นค่าเฉลี่ยเคลื่อนเร็ว, double เส้นค่าเฉลี่ยเคลื่อนช้า)
{
        int ticket;
        double จำนวนpipตัดขาดทุน;
        double จำนวนตัดขาดทุน = 0.0;

        //ปรับค่า StopLoss เป็นค่าที่เหมาะสม
        จำนวนpipตัดขาดทุน = หาจำนวนตัดขาดทุนที่เหมาะสม(เส้นค่าเฉลี่ยเคลื่อนช้า);

       //ตรวจสอบเงื่อนไขสำหรับการขาย (SELL)
       if ((เส้นค่าเฉลี่ยเคลื่อนเร็ว < เส้นค่าเฉลี่ยเคลื่อนช้า) &&
           ((Close[1] < เส้นค่าเฉลี่ยเคลื่อนเร็ว) && (Open[0] < เส้นค่าเฉลี่ยเคลื่อนเร็ว)))
        {
                 //งานแสดงข้อความบนจอ
                ข้อความแสดงบนจอ += "\n\n*******เข้าเงื่อนไขการขาย SELL*********";

                Comment(ข้อความแสดงบนจอ);
                if (StopLoss > 0)
                {
                        จำนวนpipตัดขาดทุน = StopLoss;
                }
                //คำนวณจำนวนตัดขาดทุนสำหรับการขาย
                จำนวนตัดขาดทุน = (Bid - Ask) + Ask + จำนวนpipตัดขาดทุน * Point;
                //เปิดคำสั่งขาย
                ticket = OrderSend( Symbol(),
                                      OP_SELL,
                                     หาจำนวนล็อตที่เหมาะสม(เส้นค่าเฉลี่ยเคลื่อนช้า),
                                     Bid,
                                     3,
                                     จำนวนตัดขาดทุน,
                                     Bid-TakeProfit*Point,
                                     ชื่อEA,
                                     เลขประจำEA,
                                     0,
                                     Red);
              เทรนเก่า = "ขาลง";
              return;
        }

        //ตรวจสอบเงื่อนไขสำหรับการซื้อ (BUY)
        if ((เส้นค่าเฉลี่ยเคลื่อนเร็ว > เส้นค่าเฉลี่ยเคลื่อนช้า) &&
            ((Close[1] > เส้นค่าเฉลี่ยเคลื่อนเร็ว) && (Open[0] > เส้นค่าเฉลี่ยเคลื่อนเร็ว)))
        {
                //งานแสดงข้อความบนจอ
                ข้อความแสดงบนจอ +="\n\n*******เข้าเงื่อนไขการซื้อ BUY*********";

               Comment(ข้อความแสดงบนจอ);

                if (StopLoss > 0)
                {
                         จำนวนpipตัดขาดทุน = StopLoss;
                }
                //คำนวณจำนวนตัดขาดทุนสำหรับการซื้อ
                จำนวนตัดขาดทุน = Bid - จำนวนpipตัดขาดทุน * Point;
                //เปิดคำสั่งซื้อ
               ticket = OrderSend( Symbol(),
                                  OP_BUY,
                                  หาจำนวนล็อตที่เหมาะสม(เส้นค่าเฉลี่ยเคลื่อนช้า),
                                 Ask,
                                 3,
                                 จำนวนตัดขาดทุน,
                                 Ask+TakeProfit*Point,
                                 ชื่อEA,
                                 เลขประจำEA,
                                 0,
                                 Blue);
                เทรนเก่า = "ขาขึ้น";
               return;
        }
}

ฟังก์ชัน “ตรวจสอบเปิดคำสั่งซื้อขาย()” จะเรียกใช้ฟังก์ชันภายนอกอีก 2 ฟังก์ชัน คือ ฟังก์ชัน “หาจำนวนตัดขาดทุนที่เหมาะสม()” และฟังก์ชัน “หาจำนวนล็อตที่เหมาะสม()” โดยฟังก์ชัน หาจำนวนตัดขาดทุนที่เหมาะสม() จะทำหน้าที่คำนวณหาค่า Stop Loss (หน่วยเป็น pip) โดยในกรณีของ My Fast Slow Moving Average Thai EA จะใช้ค่าของเส้นค่าเฉลี่ยเคลื่อนช้า ซึ่งทำหน้าที่เสมือนแนวต้านของราคาเป็นค่าของ Stop Loss แต่เมื่อคำนวณแล้วต้องไม่น้อยกว่า 100 pip สำหรับรายละเอียดของฟังก์ชัน หาจำนวนตัดขาดทุนที่เหมาะสม() มีดังนี้

/*+------------------------------------------------------------------+
ฟังก์ชัน หาจำนวนตัดขาดทุนที่เหมาะสม() ทำหน้าที่หาจำนวน pip สำหรับการตัดขาดทุน หรือ Stop Loss ใหม่
+------------------------------------------------------------------+*/
int หาจำนวนตัดขาดทุนที่เหมาะสม(double เส้นค่าเฉลี่ยเคลื่อนช้า)
{
      int จำนวนตัดขาดทุนที่คำนวณได้ = StopLoss;
      int ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า;

       if (CalculateNewStopLoss) {
               ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า = (Close[0] - เส้นค่าเฉลี่ยเคลื่อนช้า) / Point;
               //กรณีได้ค่าติดลบ ปรับให้เป็น บวก ก่อน
               if (ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า < 0)
               {
                     ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า = -(ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า);
                }
                //ใช้เส้นค่าเฉลี่ยเคลื่อนช้าเป็นแนวต้นหรือ Stop Loss แต่ต้องไม่น้อยกว่า 100
               จำนวนตัดขาดทุนที่คำนวณได้ =
                                 ((ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า < 100) ? 100 : ระยะห่างของราคากับเส้นค่าเฉลี่ยเคลื่อนช้า);
        }
        return(จำนวนตัดขาดทุนที่คำนวณได้);
}

ส่วนฟังก์ชัน หาจำนวนล็อตที่เหมาะสม() จะทำหน้าที่คำนวณหา ขนาดของล็อตที่เหมาะสมสำหรับการเปิดคำสั่งซื้อ/ขายครั้งนั้นๆ โดยใช้จำนวนเงินที่ใช้ได้ในบัญชีมาหาจำนวนเงินที่ใช้คำนวณขนาดของล็อต (ไม่เกินระดับความเสี่ยงที่กำหนดใน MaximumRisk) แล้วนำมาหาจำนวน ล็อต ตามวิธีที่กล่าวไว้ในบทความเรื่อง การคำนวณหาจำนวนล็อต (lots)ที่เหมาะสมสำหรับการเปิดคำสั่งซื้อ/ขายในตลาดฟอเร็กซ์ซึ่งรายละเอียดดังนี้

/*+------------------------------------------------------------------+
ฟังก์ชัน หาจำนวนล็อตที่เหมาะสม() ทำหน้าที่หาจำนวนล็อตที่เหมาะสมต่อกันเปิด order
+------------------------------------------------------------------+*/
double หาจำนวนล็อตที่เหมาะสม(double เส้นค่าเฉลี่ยเคลื่อนช้า)
{
        double ขนาดล็อตที่คำนวณได้;
        double จำนวนเงินทุนที่ใช้ได้;

        //หาวงเงินในบัญชีที่เปิดคำสั่งซื้อ/ขายได้
        double จำนวนเงินในบัญชี = AccountFreeMargin();

        if (StringFind(Symbol(), "micro", 0) != 0)
        {
                จำนวนเงินในบัญชี = AccountFreeMargin() * 100;
        }

        //หามูลค่้าต่อ 1 pip
        double มูลค่าต่อ1pip = MarketInfo(Symbol(), MODE_TICKVALUE);

        //ถ้าทุนมากกว่า 200 จึงจะคำนวนตามสูตร
        if (จำนวนเงินในบัญชี > 200)
        {
                //นำจำนวนเงินในบัญชีมาคำนวณหายอดเงินที่ใช้ได้โดยดูจาก MaximumRisk
                จำนวนเงินทุนที่ใช้ได้ = จำนวนเงินในบัญชี * MaximumRisk;
                //หาขขนาดล็อตที่เหมาะสม
                ขนาดล็อตที่คำนวณได้ = NormalizeDouble((
                                          (จำนวนเงินทุนที่ใช้ได้ * //จำนวนเงินที่มี
                                          MaximumRisk) / //คูณ เปอร์เซ็นกำไรที่ต้องการ
                                           (((StopLoss==0) && !CalculateNewStopLoss) ?
                                                                                                                100 :
                  หาจำนวนตัดขาดทุนที่เหมาะสม(เส้นค่าเฉลี่ยเคลื่อนช้า)))/มูลค่าต่อ1pip //หาร ด้วยจำนวน pip ที่ตัดขาดทุน
                                            , 2); //แปลงเป็นเลขทศนิยม 2 ตำแหน่ง
         } else {
                ขนาดล็อตที่คำนวณได้ = 0.01;
         }
         //ถ้า lots ที่คำนวณได้น้อยกว่า MinimumLotSize ให้ใช้ค่าใน MinimumLotSize แทน
         if (ขนาดล็อตที่คำนวณได้ < MinimumLotSize) ขนาดล็อตที่คำนวณได้ = MinimumLotSize;
         //ส่งค่าขนาล็ออตที่เหมาะสมกลับ
         return(ขนาดล็อตที่คำนวณได้);
}

ข้อจำกัดของการใช้กลยุทธ์ Fast Slow Moving Average

กลยุทธ์ Fast Slow Moving Average จะใช้ได้ดีหากการเคลื่อนไหวของอัตราแลกเปลี่ยนของคู่เงินนั้นๆ อยู่ในสภาวะที่มีการเคลื่อนไปในทิศทางขึ้นหรือลงที่ชัดเจน หรือ เป็นเทรน แต่จะมีปัญหาหากตลาดนิ่ง หรืออยู่ในสภาวะ side way จะทำให้เกิดการตัดขาดทุนบ่อยๆ โดยเฉพาะการใช้ Export Adviser หรือ EA ในการซื้อ/ขาย เพราะ EA จะแยกไม่ออกว่าช่วงไหนเป็นเทรน ช่วงไหนเป็น side way แนวทางแก้ไข คือเลือกใช้ Time frame ที่ใหญ่ขึ้นซึ่งขนาดของ Side way จะกว้างขึ้นพอทำกำไรได้


บทความที่เกี่ยวข้อง
เขียน EA สำหรับForex ใช้เองจะดีไหมตอน My Fast Slow Moving Average Thai EA (บทนำ)
วิธีตั้งค่าสำหรับการเริ่มใช้ My Fast Slow Moving Average Thai EA
กระบวนการทำงานของ My Fast Slow Moving Average Thai EA
การปิดคำสั่งซื้อขาย และการทำ Trailing Stop ของ My Fast Slow Moving Average Thai EA


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

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

Adz2you.