MyBanner

โฆษณา

วันพุธที่ 19 ธันวาคม พ.ศ. 2561

หลักการในการเขียนชุดคำสั่งทำ Trailing Stop Loss ใน EA สำหรับช่วยเทรด Forex




              มีท่านที่สนใจเรื่องการเขียน EA สำหรับช่วยเทรดฟอร์เร็กซ์ ส่งข่าวมาขอให้ช่วยอธิบายการในการเขียนคำสั่งสำหรับการทำ Trailing Stop Loss หลังจากที่เปิดคำสั่งซื้อ/ขาย (Order) ไปแล้ว ก็จะขออธิบายดูไม่แน่ใจว่าจะพอรู้เรื่องไหม

Trailing Stop Loss หรือเรียกสั้นๆ ว่า Trailing Stop เป็นการเลื่อนราคาตัดขาดทุน หรือ Stop Loss ตามราคาที่เคลื่อนไป โดยปรกติจะทำเพื่อปกป้องทุน หรือ บางครั้งก็ใช้เป็นเงื่อนไขในปิดคำสั่งซื้อ/ขาย ซึ่งใน EA ที่ผู้เขียนจัดทำส่วนใหญ่จะใช้เป็นเงื่อนไขในการปิดคำสั่ง กล่าวคือ เมื่อเราเลื่อน Stop Loss ตามราคาที่เคลื่อนไปตามทิศทางที่เราเปิดคำสั่งซื้อ/ขาย เมื่อถึงจุดหนึ่งปรากฏว่าราคาสวนกลับมาชน Stop Loss คำสั่งซื้อ/ขายนั้นๆ ก็จะถูกปิดไปอัตโนมัติ

ก่อนอื่น เรามาดูกันก่อนว่า เวลาที่เราเปิดคำสั่งซื้อ/ขายบน MT4 หรือ MT5 แต่ละครั้งมีราคาอะไรเกี่ยวข้องบ้าง ซึ่งถ้าดูจากไดอะล็อกข้างต้น จะพบว่ามีราคาที่เกี่ยวข้องกับการเปิดคำสั่งซื้อ/ขายแต่ละครั้ง จะมีอยู่ด้วยกัน 3 ราคา คือ 

  1. ราคาที่ทำการเปิดคำสั่งซื้อ/ขาย หรือ Order Open Price
  2. ราคาเป้าหมายกำไร หรือ Take Profit : TP
  3. ราคาตัดขาดทุน หรือ Stop Loss : SL

ซึ่งถ้าเรามาดูที่ชุดคำสั่งภาษา MQL ที่ใช้ในการเปิดคำสั่งซื้อ/ขาย ก็คือคำสั่ง OrderSend() ซึ่งจะมีรูปแบบชุดคำสั่งดังนี้

int  OrderSend(
               string   symbol,                          // symbol
                 int      cmd                              // operation
             double   volume,                          // volume
             double   price,                              // price
                 int      slippage,                         // slippage
             double   stoploss                         // stop loss
             double   takeprofit,                       // take profit
               string   comment=NULL,          // comment
                 int      magic=0,                        // magic number
            datetime expiration=0,                  // pending order expiration
               color    arrow_color=clrNONE  // color
          );

โดยที่


symbol หมายถึง ชื่อคู่เงินหรือสินทรัพย์


cmd หมายถึง คำสั่งในการเปิดการซื้อ/ขาย (Trade Operation) มี 6 คำสั่ง ประกอบด้วยคำสั่ง OP_BUY (0), OP_SELL (1), OP_BUYLIMIT (2), OP_SELLLIMIT (3), OP_BUYSTOP (4), OP_SELLSTOP (5)


volume หมายถึง ขนาดล็อตที่จะเปิดคำสั่งซื้อขาย (Lot size)


price หมายถึง ราคาที่เปิดคำสั่งซื้อ/ขาย


slippage หมายถึง จำนวนครั้งในการเปลี่ยนสูงสุดเมื่อราคาขณะนั้นไม่ตรงกับราคาที่ระบุในคำสั่ง


stoploss หมายถึง ราคาตัดขาดทุน


takeprofit หมายถึง ราคาเป้าหมายกำไร


comment=NULL หมายถึง หมายเหตุ ใส่เป็นค่า NULL ถ้าไม่ใส่ข้อความใดๆ แต่ปรกติจะใส่ชื่อเป็น EA


magic=0 หมายถึง เป็นตัวเลขเฉพาะ ใส่ 0 ถ้าไปม่ใส่ค่าใดๆ โดยปรกตินักพัฒนา EA จะใส่เป็นเลขประจำตัวของตัว EA (ผู้พัฒนา EA ตั้งขึ้นเอง)


expiration=0 หมายถึง ระยะเวลาหมดอายุของคำสั่ง (ใช้ในกรณี ค่า cmd ตั้งแต่ 2 ขึ้นไป)


arrow_color=clrNONE หมายถึง สีของลูกศรชี้ตำแหน่งราคาที่ซื้อบนหน้าจอกราฟ ใส่เป็น clrNONE ถ้าไปม่ต้องการกำหนดสีเป็นสีอื่นๆ


จากรายละเอียดเกี่ยวกับชุดคำสั่งภาษา MQL4 สำหรับเปิดคำสั่งซื้อ/ขายในข้างต้น จะสังเกตเห็นว่ามีราคาที่เกี่ยวข้องกับการเปิดคำสั่งซื้อ/ขาย หรือ Order อยู่ด้วยกัน 3 ราคา คือ ราคาที่ทำการเปิดคำสั่งซื้อ/ขาย (price), ราคาตัดขาดทุน (stoploss) และราคาเป้าหมายกำไร (takeprofit) โดยราคาที่เราสนใจ ณ ตอนนี้ คือ ราคาตัดขาดทุน หรือ Stop Loss ซึ่งถ้าเราทำการเปิดคำสั่งซื้อ/ขาย ไม่ว่าจะเป็นบน MT4 หรือ MT5 บนหน้าจอกราฟของโปรแกรมเทรด จะมีเส้นแสดงราคาที่เกี่ยวข้องกับการเปิดคำสั่งซื้อ/ขาย ปรากฏอยู่ ถ้าเราไม่ได้ระบุ stop loss และ take profit ไว้ เส้นแสดงราคาของคำสั่งซื้อ/ขายจะมีเพียงเส้นเดียว แต่ถ้าระบุราคาทั้งสองอย่างหลังไว้ด้วย จำนวนเส้นแสดงราคาของคำสั่งซื้อ/ขายก็จะมีเพิ่มขึ้น อย่างในภาพตัวอย่างถัดเป็นตัวอย่างของการเปิดคำสั่งซื้อ (BUY) และระบุ Stop loss ไว้ บนหน้าจอกราฟของโปรแกรมเทรด ก็จะมีเส้นแสดงราคาที่เกี่ยวข้องปรากฏขึ้น 2 เส้นดังรูป


การทำ Trailing Stop บนโปรแกรมเทรด


บนโปรแกรมเทรด ทั้งบน MT4 และ MT5 จะอนุญาตให้เราทำการสั่งให้โปรแกรมเทรดทำ Trailing Stop บนหน้าจอกราฟของโปรแกรมได้ โดยสามารถทำได้ 2 วิธี คือ

วิธีแรก ให้ทำการวางลูกศรของเมาส์บนเส้นราคาตัดขาดทุน หรือ stoploss ของคำสั่งซื้อ/ขาย แล้วคลิกปุ่มขวาของเมาส์ จากนั้นเลือกที่หัวข้อ Trailing Stop จากเมนูที่ปรากฏขึ้น และเลือกระยะในการเลื่อนราคาตัดขาดทุนจากเมนูย่อยที่ปรากฏขึ้นดังตัวอย่างในรูปถัดไป



วิธีที่สอง ทำได้โดยการคลิปุ่มขวาของเมาส์บนรายการคำสั่งซื้อ/ขายที่ต้องการทำ Trailing Stop ในตารางที่อยู่ด้านล่างของโปรแกรมเทรด แล้วเลือกที่หัวข้อ Trailing Stop จากนั้นเลือกระยะ Trailing Stop จากเมนูย่อยที่ปรากฏขึ้น ดังรูป


กลไกการทำงานของระบบ Trailing Stop ของโปรแกรมเทรด

หลังจากที่เราทำการกำหนดค่าของการทำ Trailing Stop  ของคำสั่งซื้อ/ขายที่เราเปิดไว้ตามวิธีการข้างต้นแล้ว กลไกการทำงานของระบบ Trailing Stop ของโปรแกรมเทรดทั้ง MT4 และ MT5 จะทำงานหลังจากที่ราคาเคลื่อนผ่าน ราคาที่ทำการเปิดคำสั่งซื้อ/ขายไปแล้ว โดยโปรแกรมเทรดจะทำการตรวจสอบเปรียบเทียบราคาปัจจุบัน ถ้าระยะห่างของทั้งสองราคามากกว่าค่าที่เรากำหนดไว้ โปรแกรมเทรดจะเลื่อนราคาตัดขาดทุน หรือ Stop loss ไปไว้ที่ ราคาปัจจุบัน ลบ ด้วยค่า Trailing Stop ที่ตั้งไว้ และจะทำการเลื่อน ราคาตัดขาดทุน ทุกครั้งที่ราคาปัจจุบันกับราคาตัดขาดทุนห่างกันมากกว่าค่า Tailing Stop ที่เราตั้งไว้

หลักการเขียน Trailing Stop ใน EA (Expert Advisor)

เท่าที่ผู้เขียนพยายามค้นหาชุดคำสั่งภาษา MQL ที่ทำหน้าที่เกี่ยวกับ Trailing Stop ปรากฏว่าไม่มีชุดคำสั่งสำหรับงานดังกล่าวโดยเฉพาะ ดังนั้นเราจะต้องเขียนฟังก์ชันสำหรับงานนี้ขึ้นมาเอง โดยใส่ฟังก์ชันดังกล่าวไว้ใส่ใน ฟังก์ชัน OnTick() ของต้นฉบับโปรแกรมของ EA ซึ่งฟังก์ชัน Ontick() จะเป็นฟังก์ชันที่ถูกเรียกขึ้นมาทำงานโดยโปรแกรมเทรดทุกครั้งที่ราคามีการเปลี่ยนแปลง ซึ่งมีหลักการคร่าวๆ ดังนี้

0. กำหนดค่า Points ที่จะใช้ทำ Trailing Stop

1. ทำการเลือกรายการของคำสั่งซื้อ/ขายที่เปิดไว้ ที่จะทำ Trailing Stop ด้วยฟังก์ชัน OrderSelect() ซึ่งมีรูปแบบชุดคำสั่งดังนี้

bool  OrderSelect(
              int     index,                               // index or order ticket
              int     select,                               // flag
              int     pool=MODE_TRADES  // mode
   );

โดยที่



index
หมายถึง ลำดับรายการหรือ ตัวบ่งชี้รายการ (Ticket)


select
หมายถึง เงื่อนไขในการชี้รายการ ซึ่งมี 2 ตัวเลือก คือ
  • SELECT_BY_POS ระบุตำแหน่งรายการด้วยตัวเลขลำดับรายการ
  • SELECT_BY_TICKET ระบุตำแหน่งรายการด้วยค่าเฉพาะที่เรียกว่า ticket


pool=MODE_TRADES
หมายถึง
ระบุโหมดในการเปิดคำสั่งซื้อขายของรายการ มีด้วยกัน 2 โหมด คือ
  • MODE_TRADES (default) รายการเทรดปรกติ
  • MODE_HISTORY รายการเทรดในประวัติ


2. อ่านค่า ราคาปัจจุบันด้วยฟังก์ชัน iClose()

3. อ่านราคาที่เปิดคำสั่งซื้อขายของรายการที่ถูกเลือกด้วยคำสั่ง OrderOpenPrice() นำมาเปรียบเทียบกับราคาปัจจุบันที่อ่านจากฟังก์ชัน iClose() โดยแยกเป็น 2 กรณี

  • กรณีของการซื้อ (BUY) ราคาปัจจุบันมากกว่า OrderOpenPrice() จะดำเนินการทำ Trailing Stop ต่อ 
  • กรณีของการขาย (SELL) ราคาปัจจุบัน น้อยกว่า OrderOpenPrice() จะดำเนินการทำ Trailing Stop ต่อ
แต่ถ้าไม่ตรงกับเงื่อนไขข้างต้น จะยังไม่ทำอะไรที่เกี่ยวกับ Trailing Stop

4. ในกรณีที่มีการระบุราคาตัดขาดทุน หรือ Stop Loss ไว้ในคำสั่งซื้อ/ขาย จะทำการอ่านค่าราคาตัดขาดทุนดังกล่าว ออกมาด้วยฟังก์ชัน OrderStopLoss() นำมาเปรียบเทียบกับราคาปัจจุบัน โดยแบ่งเป็น 2 กรณี
  • กรณีของการซื้อ (BUY) จะนำราคาปัจจุบัน ลบด้วย OrderStopLoss()
  • กรณีของการขาย (SELL) จะนำ OrderStopLoss() ลบด้วย ราคาปัจจุบัน
ถ้าผลที่ได้มากกว่าจำนวน Points ที่จะทำ Trailing Stop ที่ระบุในข้อ 0 จะดำเนินการทำ Trailing Stop ต่อ แต่ถ้าน้อยกว่า จะยังไม่ทำอะไร

5. ทำการหาราคาตัดขาดทุนในตำแหน่งใหม่ โดยแบ่งเป็น 2 กรณีเช่นกันคือ
  • กรณีของการซื้อ (BUY) จะนำราคาปัจจุบัน ลบด้วย จำนวน Points ที่จะทำ Trailing Stop ที่กำหนดไว้ใน ข้อ 0 
  • กรณีของการขาย (SELL) จะนำราคาปัจจุบัน บวกด้วย จำนวน Points ท่ี่จะทำ Trailling Stop
ซึ่งผลที่ได้จะเป็นราคาที่เราจะนำมาระบุเป็นราคาตัดขาดทุน

6. ทำการปรับปรุงคำสั่งซื้อ/ขาย ที่กำลังทำ Trailing Stop โดยนำราคาที่ได้ มาระบุในช่อง Stop Loss ของคำสั่ง OrderModify() ของ MQL ซึ่งมีรูปแบบชุดคำสั่งดังนี้

bool  OrderModify(
            int        ticket,            // ticket
        double     price,             // price
        double     stoploss,        // stop loss
        double     takeprofit,     // take profit
       datetime   expiration,    // expiration
         color      arrow_color  // color
   );

โดยที่



ticket หมายถึง
ตัวบ่งชี้รายการ (Ticket) สร้างอัตโนมัติโดยโปรแกรมเทรด


arrow_color หมายถึง สีของเส้นราคา Stop Loss
ในบรรดาพารามิเตอร์ทั้งหมด มีพารามิเตอร์ stoploss และ arrow_color เท่านั้น ที่เป็นค่าที่ต้องระบุใหม่ ค่าพารามิเตอร์ expiration จะใส่ค่าปริยายคือ 0 ไว้ ส่วนค่าพารามิเตอร์อื่นๆ สามารถอ่านได้จากรายการคำสั่งซื้อ/ขาย (Order) ที่เรากำลังทำ Trailing Stop โดย พารามิเตอร์ ticket จะอ่านด้วยคำสั่ง OrderTicket(), พารามิเตอร์ price จะอ่านด้วยคำสั่ง OrderOpenPrice(), พารามิเตอร์ takeprofit จะอ่านด้วยคำสั่ง OrderTakeProfit() เวลาเขียนชุดคำสั่ง จะสามารถเขียนได้ดังตัวอย่างนี้

      ….
      if (!OrderModify( OrderTicket(),
                                    OrderOpenPrice(),
                                    ราคาตัดขาดทุน,
                                    OrderTakeProfit(),
                                    0,
                                    Red))
      {
              Print("OrderModify error ",GetLastError());
      }
       …..
ปิดท้าย

ในทางปฏิบัติ จะมีวิธีการในการหาราคาตัดขาดทุนแบบอื่นๆ ที่ไม่ได้กำหนดเป็นจำนวน Points ตายตัวดังรายละเอียดที่กล่าวมา เราสามารถหา ราคาตัดขาดทุน ที่จะทำ Trailing Stop ได้อีกหลายวิธี เช่น ใช้วิธีการอ่านค่าจากอินดิเคเตอร์บางตัว หรือใช้วิธีนับแท่งราคา เป็นต้น สำหรับใน EA ที่ผู้เขียนจัดทำให้ลองศึกษา จะใช้วิธีอ่านค่าจากอินเตอร์เคเตอร์ที่ชื่อว่า Fractal นำมาเปรียบเทียบหาราคาตัดขาดทุนที่เหมาะสมสำหรับการทำ Trailing Stop และใช้วิธีนับแท่งราคาโดยนำราคาสูงสุดต่ำสุดของแท่งราคามาเปรียบเทียบหาราคาตัดขาดทุนที่เหมาะสมสำหรับการทำ Trailing Stop เป็นอีกวิธีการหนึ่ง ซึ่งทุกท่านสามารถดาวน์โหลด EA ที่ผู้เขียนทำไว้ไปศึกษาได้ เพราะผู้เขียนได้แถมต้นฉบับโปรแกรม หรือ source code ของ EA ไปให้ศึกษาด้วย

วันจันทร์ที่ 26 พฤศจิกายน พ.ศ. 2561

เงื่อนไขการเปิดคำสั่งซื้อ/ขายของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA



Unstable
Platform
MT 4
ปรับปรุงครั้งสุดท้ายเมื่อ : ๒๖ มกราคม พ.ศ.๒๕๖๒
ไม่รับประกันความเสียหาอันเนื่องมาจากการทำงานของ EA ชุดนี้


               My MA100 BB10 Fractals PSAR MACD RSI Thai EA เป็น EA  ที่พัฒนาต่อยอดมาจาก My Fast Slow Moving Average Thai EA ที่ผู้เขียนได้เคยนำเสนอไว้ในบล็อกไซต์แห่งนี้ กล่าวคือ EA ทั้งสองชุดนี้จะใช้เส้น Moving Average หรือเส้น MA เคลื่อนที่เร็วกับเส้น MA เคลื่อนที่ช้าตัดกัน เพียงแต่ใน EA ชุดนี้ เส้น MA เคลื่อนเร็วจะใช้เส้นกลางของ ฺBollinger Bands : BB แทน และใช้ขอบของ BB แสดงขอบเขตของการเคลื่อนที่ของราคา นอกจากนี้ยังใช้อินดิเคเตอร์อื่นๆ ประกอบดังที่ผู้เขียนได้แสดงรายละเอียดไว้ในบทความเรื่อง "indicators ที่ใช้ใน My MA100 BB10 Fractals PSAR MACD RSI Thai EA

สำหรับเรื่องราวที่จะคุยกันในครั้งนี้ จะเป็นเรื่องของเงื่อนไขในการเปิดคำสั่งซื้อ/ขายของ EA ชุดนี้ ซึ่งแบ่งเป็น 4 กรณี คือ การเปิดคำสั่งซื้อ และขายตามปรกติ และการเปิดคำสั่งซื้อและขายในกรณีักลับทาง ซึ่งกลไกหรือกลุ่มชุดคำสั่งในการดำเนินการดังกล่าว จะรวมอยู่ในฟังก์ชัน OnTick() ซึ่งเป็นฟังก์ชันที่จะทำงานเมื่อค่าเงินมีการเปลี่ยนแปลงเท่ากับ Tick Value ของคู่เงินนั้นๆ โดยมีหลักการทำงานคล่าวๆ คือ
๑. อ่านค่าอินดิเคเตอร์ต่างๆ
๒. แสดงค่าและเงื่อนไขต่างๆ บนจอภาพ
๓. ตรวจสอบและตัดสินใจเปิดคำสั่งซื้อ/ขาย
๔. กรณีที่เปิดคำสั่งซื้อ/ขายไม่ได้ จะทำการเปลี่นคู่เงินหรือสินทรัพย์

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


ในการเปิดคำสั่งซื้อ (BUY) ของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA ประกอบด้วยเงื่อนไขดังนี้

  1.  Parabolic SAR โน้มขึ้น
  2. Close[0] > Open[0]
  3. ทิศทางการซื้อขายตาม MACD เป็นขาขึ้น (Histogram > Signal)
  4. RSI < 75 หรือ RSI > 83
  5. เนื้อเทียนแท่งปัจจุบันมากกว่าใส้เทียนฝั่งบน
  6. เนื้อเทียนแท่งก่อนหน้าต้องมากกว่าใส้เทียนฝั่งบน
  7. ไม่มี pin bar ทะลุขอบบน Bollinger Band ในแท่งราคา 5 แท่งย้อนหลัง
  8. ตำแหน่งตรงเส้นกลาง BB ต้องมากกว่าตำแหน่งเส้นกลาง BB 5 แท่งที่ผ่านมาก
  9. RSI ปัจจุบัน > RSI แท่งที่ผ่านมาก
  10. เส้น MA100 < เส้นกลาง BB (MA10)
  11. ตำแหน่งที่เจอ Fractal Up > ตำแหน่งที่เจอ Fractal Down
  12. Fractal ล่าสุด ต้องเป็น Fractal Down


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



สำหรับการเปิดคำสั่งขาย (SELL) ของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA ประกอบด้วยเงื่อนไขดังนี้




  1.  Parabolic SAR โน้มลง
  2. Close[0] < Open[0]
  3. ทิศทางการซื้อขายตาม MACD เป็นขาขึ้น (Histogram < Signal)
  4. RSI > 25 หรือ RSI < 17
  5. เนื้อเทียนแท่งปัจจุบันมากกว่าใส้เทียนฝั่งล่าง
  6. เนื้อเทียนแท่งก่อนหน้าต้องมากกว่าใส้เทียนฝั่งล่าง
  7. ไม่มี pin bar ทะลุขอบล่าง Bollinger Band ในแท่งราคา 5 แท่งย้อนหลัง
  8. ตำแหน่งตรงเส้นกลาง BB ต้องน้อยกว่าตำแหน่งเส้นกลาง BB 5 แท่งที่ผ่านมาก
  9. RSI ปัจจุบัน < RSI แท่งที่ผ่านมาก
  10. เส้น MA100 > เส้นกลาง BB (MA10)
  11. ตำแหน่งที่เจอ Fractal Up < ตำแหน่งที่เจอ Fractal Down
  12. Fractal ล่าสุด ต้องเป็น Fractal UP

การเปิดคำสั่งซื้อ/ขายสวนเทรน (trend reversal)


ในการเปิดคำสั่งซื้อ/ขายของ  My MA100 BB10 Fractals PSAR MACD RSI Thai EA สามารถทำการเปิดคำสั่งซื้อขายสวนเทรนได้ ด้วยการกำหนดเงื่อนไขหรือคุณสมบัติในหัวข้อ UseTrendReversals เป็น True โดยมีเงื่อนไขการเปิดคำสั่งซื้อ/ขาย ดังนี้

กรณี ซื้อ (BUY) สวนเทรน



ในการเปิดคำสั่งซื้อ (BUY) สวนเทรน จะต่างจากการเปิดคำสั่งซื้อ (BUY) ปรกติ ตรงที่ เส้น MA เคลื่อนที่เร็ว (MA10) อยู่ต่ำกว่าเส้น MA เคลื่อนที่ช้า หรืออยู่ในเทรนขาลง แต่เงื่อนไขอื่นๆ อยู่ในฝั่งขาขึ้นทั้งหมด ซึ่งเงื่อนไขที่ใช้เปิดคำสั่งซื้อ (BUY) ในกรณีสวนเทรนมีดังนี้
  1.  Parabolic SAR โน้มขึ้น
  2. Close[0] > Open[0]
  3. ทิศทางการซื้อขายตาม MACD เป็นขาขึ้น (Histogram > Signal)
  4. RSI < 75 หรือ RSI > 83
  5. เนื้อเทียนแท่งปัจจุบันมากกว่าใส้เทียนฝั่งบน
  6. เนื้อเทียนแท่งก่อนหน้าต้องมากกว่าใส้เทียนฝั่งบน
  7. ไม่มี pin bar ทะลุขอบบน Bollinger Band ในแท่งราคา 5 แท่งย้อนหลัง
  8. ตำแหน่งตรงเส้นกลาง BB ต้องมากกว่าตำแหน่งเส้นกลาง BB 5 แท่งที่ผ่านมาก
  9. RSI ปัจจุบัน > RSI แท่งที่ผ่านมาก
  10. เส้น MA100 > เส้นกลาง BB (MA10) ซึ่งบ่งบอกว่าอยู่ในเทรนขาลง
  11. ตำแหน่งที่เจอ Fractal Up > ตำแหน่งที่เจอ Fractal Down
  12. Fractal ล่าสุด ต้องเป็น Fractal Down

กรณี ขาย (SELL) สวนเทรน


สำหรับการเปิดคำสั่งขาย (SELL) สวนเทรน จะต่างจากการเปิดคำสั่งขาย (SELL) ปรกติ ตรงที่ เส้น MA เคลื่อนที่เร็ว (MA10) อยู่เหนือเส้น MA เคลื่อนที่ช้า หรืออยู่ในเทรนขาขึ้น แต่เงื่อนไขอื่นๆ อยู่ในฝั่งขาลงทั้งหมด ซึ่งเงื่อนไขที่ใช้เปิดคำสั่งขาย (SELL) ในกรณีสวนเทรนมีดังนี้
  1.  Parabolic SAR โน้มลง
  2. Close[0] < Open[0]
  3. ทิศทางการซื้อขายตาม MACD เป็นขาขึ้น (Histogram < Signal)
  4. RSI > 25 หรือ RSI < 17
  5. เนื้อเทียนแท่งปัจจุบันมากกว่าใส้เทียนฝั่งล่าง
  6. เนื้อเทียนแท่งก่อนหน้าต้องมากกว่าใส้เทียนฝั่งล่าง
  7. ไม่มี pin bar ทะลุขอบล่าง Bollinger Band ในแท่งราคา 5 แท่งย้อนหลัง
  8. ตำแหน่งตรงเส้นกลาง BB ต้องน้อยกว่าตำแหน่งเส้นกลาง BB 5 แท่งที่ผ่านมาก
  9. RSI ปัจจุบัน < RSI แท่งที่ผ่านมาก
  10. เส้น MA100 < เส้นกลาง BB (MA10)
  11. ตำแหน่งที่เจอ Fractal Up < ตำแหน่งที่เจอ Fractal Down
  12. Fractal ล่าสุด ต้องเป็น Fractal UP

สำหรับชุดคำสั่งเกี่ยวกับเงื่อนไขการเปิดคำสั่งซื้อ/ขาย ของ  My MA100 BB10 Fractals PSAR MACD RSI Thai EA ที่กล่าวมาในข้างต้น ผู้เขียนจะขอยกมาแสดงเพียงบางส่วนดังนี้

      //ตรวจสอบว่าคู่เงินอนุญาตให้เทรดเต็มรูปแบบหรือไม่
      //ตรวจสอบว่าจะซื้อ (BUY) หรือ ขาย (SELL)
      if ((((((((((ลักษณะPSAR == "โน้มขึ้น (BUY)") && 
         (Close[0] > Open[0]) &&
         (ทิศทางการซื้อขายตาม_MACD == "ขาขึ้น (BUY)")) &&
         (เงื่อนไขRSI_BUY_Ok)) &&
         (ดูพินแท่งเทียน(0)) && ดูพินแท่งเทียน(1)) &&
         (StringLen(ข้อความพินBB) == 0)) && //ไม่มี พิน ที่ขอบของ Bollinger Band
         (เส้นกลางBB > เส้นกลางBBก่อนหน้า5แท่ง)) &&
         (RSI > iRSI(NULL, PERIOD_CURRENT, 14,PRICE_CLOSE,1))) &&
         (MA100 < เส้นกลางBB)) &&
         (ตำแหน่งแท่งเทียนที่เจอFractalUP > ตำแหน่งแท่งเทียนที่เจอFractalDOWN)) &&
         (StringFind(ตำแหน่งFractal, "BUY", 0) != -1))
      {
         รูปแบบการซื้อขาย = OP_BUY;
         
      } else {
         if (((((((((((ลักษณะPSAR == "โน้มลง (SELL)") && 
            (Close[0] < Open[0])) &&
            (ทิศทางการซื้อขายตาม_MACD == "ขาลง (SELL)")) &&
            (เงื่อนไขRSI_SELL_Ok)) &&
            (ดูพินแท่งเทียน(0)) && ดูพินแท่งเทียน(1)) &&
            (StringLen(ข้อความพินBB) == 0)) && //ไม่มี พิน ที่ขอบของ Bollinger Band
            (เส้นกลางBB < เส้นกลางBBก่อนหน้า5แท่ง)) &&
            (RSI < iRSI(NULL, PERIOD_CURRENT, 14,PRICE_CLOSE,1))) &&
            (MA100 > เส้นกลางBB)) &&
            (ตำแหน่งแท่งเทียนที่เจอFractalUP < ตำแหน่งแท่งเทียนที่เจอFractalDOWN)) &&
            (StringFind(ตำแหน่งFractal, "SELL", 0) != -1))
         {
            รูปแบบการซื้อขาย = OP_SELL;  
         } else {
            รูปแบบการซื้อขาย = 99;
         }
      }
      
      if ((รูปแบบการซื้อขาย == 99) && UseTrendReversals) 
      {         
         if (MA100 < เส้นกลางBB) //เทรนตาม Moving Average อยู๋ในเทรน BUY
         {                    //แต่งองค์ประกอบอื่นๆ อยู่ฝั่ง SELL
            if (((((((((เงื่อนไขRSI_SELL_Ok) &&
               (ลักษณะPSAR == "โน้มลง (SELL)")) &&
               (ทิศทางการซื้อขายตาม_MACD == "ขาลง (SELL)")) &&
               (เส้นกลางBB < เส้นกลางBBก่อนหน้า5แท่ง)) &&
               (RSI < iRSI(NULL, PERIOD_CURRENT, 14,PRICE_CLOSE,1))) &&
               (Close[1] < Open[1])) &&
               (Close[0] < Open[0])) &&
               (ตำแหน่งแท่งเทียนที่เจอFractalUP < ตำแหน่งแท่งเทียนที่เจอFractalDOWN)) &&
               (StringFind(ตำแหน่งFractal, "SELL", 0) != -1))
            {
               if (StringFind(ข้อความพินBB, "SELL", 0) == -1)
               {
                  รูปแบบการซื้อขาย = OP_SELL;
                  
                  if (OrdersTotal() > 0)
                  {
                     if (OrderType() == OP_BUY) //รายการสุดท้ายเป็น BUY
                     {
                        รหัสกรณีเปลี่ยนคู่เงินไม่ได้ = 0;
                        สถานะอนุญาตให้เปิดคำสั่ง = True;
                        if (((จำนวนคำสั่งซื้อขายทั้งหมด > 0) &&
                           (OrderSymbol() == Symbol())) &&
                           (NoRepleatAsset))
                        {
                           สถานะอนุญาตให้เปิดคำสั่ง = False;
                        }
                     }
                  }
               }
            }
         }
         
         if (MA100 > เส้นกลางBB) //เทรนตาม Moving Average อยู๋ในเทรน SELL
         {                    //แต่งองค์ประกอบอื่นๆ อยู่ฝั่ง BUY
            if (((((((((เงื่อนไขRSI_BUY_Ok) &&
               (ลักษณะPSAR == "โน้มขึ้น (BUY)")) &&
               (ทิศทางการซื้อขายตาม_MACD == "ขาขึ้น (BUY)")) &&
               (เส้นกลางBB > iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_MAIN, 4))) &&
               (RSI > iRSI(NULL, PERIOD_CURRENT, 14,PRICE_CLOSE,1))) &&
               (Close[1] > Open[1])) &&
               (Close[0] > Open[0])) &&
               (ตำแหน่งแท่งเทียนที่เจอFractalUP > ตำแหน่งแท่งเทียนที่เจอFractalDOWN)) &&
               (StringFind(ตำแหน่งFractal, "BUY", 0) != -1))
            {
               if (StringFind(ข้อความพินBB, "BUY", 0) == -1)
               {
                  รูปแบบการซื้อขาย = OP_BUY;
                  
                  if (OrdersTotal() > 0)
                  {
                     if (OrderType() == OP_SELL) //รายการสุดท้ายเป็น BUY
                     {
                        รหัสกรณีเปลี่ยนคู่เงินไม่ได้ = 0;
                        สถานะอนุญาตให้เปิดคำสั่ง = True;
                        if (((จำนวนคำสั่งซื้อขายทั้งหมด > 0) && 
                           (OrderSymbol() == Symbol())) &&
                           (NoRepleatAsset))
                        {
                           สถานะอนุญาตให้เปิดคำสั่ง = False;
                        }
                     }
                  }
               }
            }
         }
      }

บทความที่เกี่ยวข้อง

เขียน EA สำหรับ FOREX ใช้เองจะดีไหม ตอน My MA100 BB10 Fractals PSAR MACD RSI Thai EA
การกำหนดค่าต่างๆ ของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA
indicators ที่ใช้ใน My MA100 BB10 Fractals PSAR MACD RSI Thai EA
เงื่อนไขการเปิดคำสั่งซื้อ/ขายของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA
การคำนวณหาขนาด lot, Stop Loss (SL) และ Take Profit (TP) ของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA

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

indicators ที่ใช้ใน My MA100 BB10 Fractals PSAR MACD RSI Thai EA



Unstable
Platform
MT 4
ปรับปรุงครั้งสุดท้ายเมื่อ : ๒๖ มกราคม พ.ศ.๒๕๖๒
ไม่รับประกันความเสียหาอันเนื่องมาจากการทำงานของ EA ชุดนี้


               สำหรับ My MA100 BB10 Fractals PSAR MACD RSI Thai EA เป็น EA ที่มีการใช้อินดิเคเตอร์จำนวน 6  อย่าง  ประกอบด้วย  Moving Average (MA)Bollinger Band (BB), Fractals, Parabolic SAR (PSAR), MACD, RSI ดังที่ปรากฏในชื่อของ EA นอกจากนี้ยังมีการพิจารณาแท่งราคาประกอบด้วย

Moving Average (MA100)


อินดีเคเตอร์ตัวแรกที่จะต้องใช้ใน EA ชุดนี้คือ เส้น Moving Average หรือที่เรียกสั้นๆ ว้าเส้น MA โดยค่าที่ใช้ใน EA ชุดนี้ คือ เส้น MA 100 ค่า MA method เป็นแบบ Simple และ Apply to Close โดยเวลาเขียนคำสั่งภาษา MQL4 ของ Mata Trader 4อ่านค่ามาใช้ใน EA ขะใช้จะใช้คำสั่ง iMA() ซึ่งมีรูปcบบคำสั่งดังนี้

double  iMA(
        string       symbol                 // symbol
        int            timeframe,              // timeframe
        int            ma_period            // MA averaging period
        int            ma_shift,                // MA shift
        int            ma_method,           // averaging method
        int            applied_price,        // applied price
        int            shift                       //  shift
   );

โดยที่
symbol หมายถึง
ชื่อคู่เงินหรือสินทรัพย์ (String) ที่จะมาคำนวณหาค่า Moving Average ถ้าต้องการใช้คู่เงินหรือสินทรัพย์ที่ปรากฏอยู่บนหน้าจอกราฟของ MT4 ในขณะนั้น จะใส่ค่าเป็น NULL
timeframe หมายถึง กรอบเวลาที่ต้องการวัดค่า MA
ma_period หมายถึง คาบเวลาที่ต้องการหาค่า MA
ma_shift หมายถึง ค่าเยื้องคาบเวลาโดยปรกติจะใส่ค่าเป็น 0
ma_method หมายถึง
วิธีการคำนวนหาค่า MA มี 4 แบบ คือ Simple (SMA), Exponential (EMA), Smoothed (SMMA) และ Linear Weighted(LWMA)
applied_price หมายถึง
กำหนดให้ใช้ค่าใดจากแท่งราคามาในการนวนค่า MA มี 9 ค่า เช่น High, Open, Close, Low, ฯลฯ
shift หมายถึง
แท่งราคาเริ่มต้นที่จะคำนวณค่า MA ปรกติจะใส่ค่าเป็น 0 ซึ่งหมายถึงเริ่มที่แท่งราคาปัจจุบัน


สำหรับค่า MA ที่เราจะอ่านขึ้นมาเพื่อใช้ใน EA ชุดนี้ ชุดคำสั่งที่เราจะใช้ สามารถเขียนได้ดังนี้

MA100 = iMA(NULL, PERIOD_CURRENT, 100, 0, MODE_SMA, PRICE_CLOSE, 0);

หมายเหตุ
ชุดคำสั่งข้างต้น จะทำหน้าที่คำคำนวณค่าอินดิเคเตอร์ตามที่กำหนด มาเก็บไว้ในตัวแปรเพื่อไว้ใช้ในการดำเนินงานของ EA ชุดคำสั่งดังกล่าวจะไม่ได้วาดรูปร่างชองของอินดิเคเตอร์บนหน้าจอกราฟของ MT4


Bollinger Band (BB10)



Bollinger Band เป็นอินดิเคเตอร์อีกตัวหนึ่งที่ถูกนำมาใช้ใน EA ชุดนี้ โโยอาสัยคุณสมบัติของ Bollinger Band ที่เส้นกลางคือเส้น Moveing Average และมีเส้นกรอบแสดงขอบเขตการเคลื่อนของราคา และความหนาแน่นของการซื้อ/ขาย ใน EA ชุดนี้ จะกำหนดค่า Period เท่ากับ 10 และ ค่า Deviations เท่ากับ 2 ใน EA ชุดนี้ จะใช้เส้นกลางของ Bollinger Band ร่วมกับ MA100 ในการบอกทิศทาง (Trend) ของราคา ใช้เปรียบเทียบเส้นกลางที่แท่งราคาปัจจุบันกับที่แท่งราคาย้อนหลัง 5 แท่งเพื่อบอกทิศทางของราคาว่าขึ้นหรือลง และใช้เส้นขอบของ Bollinger Band สังเกตุการกลับตัว สำหรับชุดคำสั่ง MQL4 สำหรับอ่านค่าต่างๆ ของ Bollinger Band ได้แก้คำสั่ง iBands() ซึ่งมีรูปบบคำสั่งดังนี้

double  iBands(
          string          symbol              // symbol
          int               timeframe         // timeframe
          int               period,                // averaging period
          double        deviation           // standard deviations
          int               bands_shift,        // bands shift
          int               applied_price,    // applied price
          int               mode                // line index
          int               shift                   // shift
     );

โดยที่

deviation หมายถึง ค่า deviation ของ Bollinger Band ปรกติจะมีค่าเป็น 2
bands_shift หมายถึง
ค่าเยื้องหรือแท่งราคาที่จะให้เริ่มสร้างเส้นขอบของ Bollinger Band ปรกติจะมีค่าเป็น 0 คือเริ่มจากแท่งราคาปัจจุบัน
mode
หมายถึง
ค่าที่ต้องการจากคำสั่ง iBands() ซึ่งมีอยู่ด้วยกัน 3 ค่า คือ 0 – MODE_MAIN หมายถึง เส้นกลาง , 1 – MODE_UPPER หมายถึง เส้นขอบบน, และ 2 – MODE_LOWER หมายถึง เส้นขอบล่าง

สำหรับคำสั่งที่ใช้ใน EA ชุดนี้ คือการอ่านค่า เส้นกลางของ Bollinger Band ที่แท่งราคาย้อนหลังไป 5 แท่งนับจากแท่งราคาปัจจุบัน ชุดคำสั่งที่ใช้คือ

เส้นกลางBBก่อนหน้า5แท่ง = iBands(NULL, PERIOD_CURRENT, 12, 2, 0, PRICE_CLOSE,MODE_MAIN, 4);

ส่วนการอ่านค่าต่างๆ ของ Bollinger Bands ที่ต้องใช้ทั้งค่า เส้นกลาง, เส้นขอบบน และเส้นขอบล่างจะใช้ชุดคำสั่ง ดังนี้

      ขอบบนBB=iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_UPPER, 0);
      เส้นกลางBB=iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_MAIN,0);
      ขอบล่างBB=iBands(NULL, PERIOD_CURRENT, 10, 2, 0, PRICE_CLOSE, MODE_LOWER, 0);

Fractals


Fractals เป็นอินดิเคเตอร์ที่ใช้บ่งบอกถึงจุดกลับตัวในการเคลื่อนที่ของราคา โดยจะแสดงเป็นรูปหัวลูกศรชี้ขึ้นหรือลง ตรงแท่งราคาที่มีราคาสุงสุดอยู่เหนือแท่งราคาอื่นๆ ที่อยู่บริเวณใกล้ๆ กัน โดยจะสแดงเป็นรูปลูกศรชี้ขึ้น หรือตรงแท่งราคาที่มีค่าต่ำสุดต่ำกว่าแท่งราคาอื่นๆที่อยู่บริเวณใกล้กัน Fractal เป็นอินดิเคเตอร์ที่แสดงผลช้ากว่าราคาตลาด แต่เป็นเครื่องบ่งบอกได้ว่า ถ้าเกิด Fractal ที่แท่งราคาใด ไม่ว่าจะเป็นจุดต่ำสุดหรือสูงสุดแสดงว่า โอกาสที่แท่งราคาจะเคลื่อนไปในทิศทางที่เกิด Fractal น้อยมาก ใกล้

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

double  iFractals(
               string       symbol,              // symbol
                 int          timeframe,         // timeframe
                 int          mode                // line index
                 int          shift                    // shift
        );

โดยที่

mode หมายถึง สัญลักษณ์กำกับว่า จะให้คำสั่ง iFractals() แสดงค่าใดออกมาซึ่งมี 2 แบบ คือ 1=MODE_UPPER และ 2= MODE_LOWER


สำหรับชุดคำสั่งในการหาและอ่่านค่า Fractals ใน EA ชุดนี้มีดังนี้

      //หา Fractal ล่าสุด
      ตำแหน่งแท่งเทียนที่เจอFractalUP = 0;
      FractalUP = 0;
      while (FractalUP == 0)
      {
         FractalUP = iFractals(NULL, PERIOD_CURRENT, MODE_UPPER, ตำแหน่งแท่งเทียนที่เจอFractalUP);
         ตำแหน่งแท่งเทียนที่เจอFractalUP++;
      }
      
      ตำแหน่งแท่งเทียนที่เจอFractalDOWN = 0;
      FractalDOWN = 0;
      while (FractalDOWN == 0)
      {
         FractalDOWN = iFractals(NULL, PERIOD_CURRENT, MODE_LOWER, ตำแหน่งแท่งเทียนที่เจอFractalDOWN);
         ตำแหน่งแท่งเทียนที่เจอFractalDOWN++;
      }

Parabolic SAR



Parabolic SAR เป็นอินดิเคเตอร์ใช้บอกทิศทางการซื้อ/ขายหรือเทรนของตลาด โดย Parabolic SAR จะแสดงสัญลักษณ์จุดสีใต้แท่งราคา หากราคากำลังอยู่ในฝั่งขาขึ้น และแสดงจุดสีเหนือแท่งราคา หาราคากำลังอยู่ในฝั่งขาลง สำหรับใน EA ชุดนี้จะใช้ Parabolic SAR ในการยืนยันเทรนหรือทิศทางของราคา โดยใช้ค่าปริยาย ซึ่งเราสามารถอ่านค่า Parabolic SAR ด้วยคำสั่ง iSAR() ของ MQL4 โดยมีรูปแบบชุดคำสั่งดังนี้

double  iSAR(
          string       symbol,              // symbol
            int          timeframe,         // timeframe
        double       step,                   // price increment step - acceleration factor
        double       maximum,         /maximum value of step
           int          shift                    // shift
     );

โดยที่

step หมายถึง จำนวนราคาที่ขยับในการคำนวณแต่ละครั้ง ปรกติจะใส่ค่าเป็น 0.02
maximum หมายถึง จำนวนราคาที่ขยับได้สูงสุดต่อการคำนวณแต่ละครั้งปรกติจะใส่ค่าเป็น 0.2


สำหรับชุดคำสั่งในการอ่านค่า Parabolic SAR ใน EA ชุดนี้มีดังนี้

PSAR = iSAR(NULL, PERIOD_CURRENT, 0.02, 0.2, 0);

MACD



MACD เป็นอินดิเคเตอร์ที่มีคนนิยมใช้ในการทำนายทิศทางของราคา สำหรับใน EA ชุดนี้จะใช้ MACD ใน ลักษณะ คือ ใช้การยืนยันเทรน และยืนยันทิศทางการเคลื่อนของราคาว่าชี้ขึ้นหรือชี้ลง โดยใช้ค่าปริยาย คือ 12, 26 และ 9
โดยในกรณีแรก จะใช้หลักการตัดกันของเส้นสัญญาณกับแท่งฮิสโตแกรมของ MACD ในกรณีที่ ฮิสโตแกรมอยู่เหนือเส้นสัญญาณ จะถือว่าเป็นเทรนขาขึ้น แต่ถ้าฮิสโตรแกรมต่ำกว่าเส้นสัญญาณจะถือว่าเป็นเทรนขาลง 
ส่วนในกรณีที่สอง จะใช้การเปรียบเทียบฮิสโตแกรมแท่งปัจจุบันกับแท่งก่อนหน้า 
ดังนั้นค่าที่จะต้องอ่านออกมาจะมี 3 ค่า โดยในภาษา MQL4 จะใช้คำสั่ง iMACD() ซึ่งมีรูปแบบชุดคำสั่งดังนี้

double  iMACD(
             string       symbol                      // symbol
               int          timeframe,                  // timeframe
               int          fast_ema_period      // Fast EMA period
               int          slow_ema_period     // Slow EMA period
               int          signal_period,             // Signal line period
               int          applied_price           // applied price
               int          mode                        // line index
               int          shift                            // shift
   );

โดยที่

fast_ema_period หมายถึง ค่าเส้น EMA วิ่งเร็ว
slow_ema_period หมายถึง ค่าเส้น EMA วิ่งช้า
mode หมายถึง ค่าที่ต้องการหาจากคำสั่ง iMACD() มี 2 ค่า (0-MODE_MAIN, 1-MODE_SIGNAL)

ชุดคำสั่งที่ใช้ใน EA ชุดนี้มีดังนี้

      //อ่านค่า MACD
      MACD = iMACD(NULL, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 0);
      MACD_แท่งก่อนหน้า = iMACD(NULL, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_MAIN, 1);
      MACD_Signal = iMACD(NULL, PERIOD_CURRENT, 12, 26, 9, PRICE_CLOSE, MODE_SIGNAL, 0);

RSI


RSI เป็นอินดิเคเตอร์ที่ใช้บอกปริมาณการซื้อขาย โดยใน EA ชุดนี้ จะใช้ค่าปริยายคือ 14 โดยจะใน 2 ลักษณะ คือใช้ดูเขตซื้อมากเกินไป (> 83) หรือโซนขายมากเกิน (<27) และใช้ดูทิศทางการซื้อ/ขาย (เทียบแท่งราคาแท่งก่อนกับแท่งปัจจุบัน) โดยชุดคำสั่งที่ใช้อ่านค่า RSI คือ คำสั่ง iRSI() โดยมีรูปแบบชุดคำสั่งดังนี้

double  iRSI(
       string       symbol           // symbol
        int          timeframe        // timeframe
        int          period               // period
        int          applied_price,    // applied price
        int          shift                    // shift
      );

สำหรับชุดคำสั่งที่ใช้ใน EA ชุดนี้ มีดังนี้

RSI = iRSI(NULL, PERIOD_CURRENT, 14,PRICE_CLOSE,0);

หมายเหตุ
จะสังเกตุเห็นว่า การใส่ค่าพารามิเตอร์ต่างๆ ในชุดคำสั่งที่ต้องการอ่านค่าจากอินดิเคเตอร์ต่างๆ ของภาษา MQL4 จะเป็นค่าเดียวกับการกำหนดค่าใน Properties ของ อินดิเคเตอร์บนหน้าจอกราฟของ MT4

บทความที่เกี่ยวข้อง

เขียน EA สำหรับ FOREX ใช้เองจะดีไหม ตอน My MA100 BB10 Fractals PSAR MACD RSI Thai EA
การกำหนดค่าต่างๆ ของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA
indicators ที่ใช้ใน My MA100 BB10 Fractals PSAR MACD RSI Thai EA
เงื่อนไขการเปิดคำสั่งซื้อ/ขายของ My MA100 BB10 Fractals PSAR MACD RSI Thai EA

Adz2you.