MyBanner

โฆษณา

วันอาทิตย์ที่ 3 เมษายน พ.ศ. 2559

เงื่อนไขการปิดคำสั่ง ซื้อ/ขาย ของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA



ดาวน์โหลดแฟ้ม EA
My EMA200 SmoothedHighLowMA MACD and RSI Thai EA Unstable
ปรับปรุงครั้งล่าสุดเมื่อ : ๑๙ มีนาคม พ.. ๒๕๕๙ เวลา ๒๓.๐๐ น.
ไม่รับประกันความเสียหายอันเนื่องมาจากการทำงานของ EA ชุดนี้
ขออภัย ต้นฉบับ EA ชุดนี้สูญหายทั้งหมด หากมีเวลาจะรื้อฟิ้นกลับมาให้ใหม่



โดยปรกติการใช้กลยุทธ์การตัดกันของเส้นค่าเฉลี่ย (Moving Average Crossover) จะใช้การตัดกลับทางของเส้นค่าเฉลี่ย ซึ่งในกรณีดังกล่าว ถ้าเป็นการตรวจดูด้วยสายตา เราจะทราบว่าควรจะปิดคำสั่งซื้อ/ขายช่วงไหน แต่กรณีของการทำเป็น EA ถ้ารอให้ถึงจุดกลับกันของเส้นค่าเฉลี่ยค่อยปิดคำสั่งซื้อ/ขาย จะให้เกิดการขาดทุนจำนวนมาก จากรูปข้างต้น จุดหมายเลข 1 เป็นจุดที่เราตัดสินใจเปิดคำสั่งขาย (SELL) จุดหมายเลข 2 เป็นจุดที่เปิดคำสั่งซื้อ/ขายได้ ซึ่งถ้าเรารอให้ถึงจุดที่ 3 แล้วค่อยปิดคำสั่งซื้อขาย จะเห็นว่าจะมีโอกาสขาดทุน ช่วงที่แสดงในหมายเลขที่ 4 ในรูป จะเป็นช่วงที่จะขาดทุนต่อเนื่อง
ในกรณีของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA จะพยายามสร้างเงื่อนไขการปิดคำสั่งซื้อ/ขายเฉพาะ เพื่อลดปริมาณการขาดทุนลงโดยแบ่งเป็น 2 กรณี คือ กรณีของการปิดคำสั่งซื้อ (BUY) และกรณีของการปิดคำสั่งขาย (SELL)

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



การปิดคำสั่งซื้อ (BUY) ของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EAจะใช้เงื่อนไขในการปิดคำสั่งดังนี้
  1. เมื่อ High[1] น้อยกว่า เส้นค่าเฉลี่ย LowSmoothed14MA
  2. เมื่อ ค่าของเส้นค่าเฉลี่ย LowSmoothed14MAกอนปัจจุบัน มากกว่า ค่าของเส้นค่าเฉลี่ย LowSmoothed14MA
  3. เมื่อ High[0] น้อยกว่า เส้นค่าเฉลี่ย LowSmoothed14MA
โดยทุกเงื่อนไขต้องเกิดขึ้นพร้อมกัน

/*+------------------------------------------------------------------+
ฟังก์ชัน ปิดคำสั่งซื้อ_BUY() ทำหน้าที่ปิดคำสั่งซื้อ (BUY)
+------------------------------------------------------------------+*/
void ปิดคำสั่งซื้อ_BUY(double LowSmoothed14MAก่อนปัจจุบัน,
                                       double LowSmoothed14MA)
{
           //ปิดคำสั่ง BUY ด้วยเงื่อนไขคาดว่าจะกลับเทรน
           if (((High[1] < LowSmoothed14MA) &&
               (LowSmoothed14MAก่อนปัจจุบัน > LowSmoothed14MA)) &&
               (High[0] < LowSmoothed14MA))
           {
           if(!OrderClose(OrderTicket(), OrderLots(), Bid, 0, White))
                    Print("OrderClose error ",GetLastError());
            }
}

การปิดคำสั่งขาย (SELL)


การปิดคำสั่งขาย (SELL) ของ My EMA200 SmoothedHighLowMA MACD and RSI Thai Eaจะใช้เงื่อนไขในการปิดคำสั่งดังนี้
  1. เมื่อ Low[1] มากกว่า เส้นค่าเฉลี่ย HighSmoothed14MA
  2. เมื่อ ค่าของเส้นค่าเฉลี่ย HighSmoothed14MAก่อนปัจจุบัน น้อยกว่า เส้นค่าเฉลี่ย HighSmoothed14MA
  3. เมื่อ Low[0] มากกว่า เส้นค่าเฉลี่ย HighSmoothed14MA
โดยทุกเงื่อนไขต้องเกิดขึ้นพร้อมกัน

/*+------------------------------------------------------------------+
ฟังก์ชัน ปิดคำสั่งขายSELL() ทำหน้าที่ปิดคำสั่งซื้อ (SELL)
+------------------------------------------------------------------+*/
void ปิดคำสั่งขาย_SELL(double HighSmoothed14MAก่อนปัจจุบัน,
                                         double HighSmoothed14MA)
{
           //ปิดคำสั่ง SELL เมื่อคาดว่าจะกลับเทรน
            if (((Low[1] > HighSmoothed14MA) &&
                (HighSmoothed14MAก่อนปัจจุบัน < HighSmoothed14MA)) &&
                (Low[0] > HighSmoothed14MA))
            {
                    if(!OrderClose(OrderTicket(), OrderLots(), Ask, 0, White))
                             Print("OrderClose error ",GetLastError());
                   }
}

โดยปรกติฟังก์ชัน ตรวจสอบปิดคำสั่งซื้อขาย() จะเป็นฟังก์ชันหลักในการตรวจการปิดคำสั่งซื้อ/ขายของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA โดยงานในฟังก์ชันดังกล่าวจะมีการตรวจการปิดคำสั่งซื้อ/ขายเฉพาะคำสั่งที่มีกำไรในททุก ๆ วันศุกร์ ก่อนปิดตลาด ซึ่งการทำงานดังกล่าวจะทำเฉพาะกรณีที่ผู้ใช้กำหนดค่าของ FridayCloseAllPositiveOrder เป็น true ตอนเริ่มใช้ EA โดย EA จะตรวจสอบเงื่อนไขนี้ก่อน จากนั้นทำการตรวจสอบทำ Trailing Stop (ทำ_TrailingStop_สำหรับคำสั่งขาย_SELL() หรือ ทำ_TrailingStop_สำหรับคำสั่งซื้อ_BUY()) ก่อนที่จะตรวจสอบและเลือกฟังก์ชัน ปิดคำสั่งซื้อ_SELL() หรือ ฟังก์ชัน ปิดคำสั่งขาย_BUY() ตามลำดับ ในตอนท้ายของฟังก์ชัน ตรวจสอบปิดคำสั่งซื้อขาย() จะมีการเรียกฟังก์ชัน ปิดคำสั่งซื้อขายที่เป็นบวกหลายรายการ() โดยฟังก์ชันดังกล่าวจะทำการตรวจสอบปิดคำสั่งซื้อ/ขายที่ผลกำไรเป็นบวก โดยฟังก์ชันนี้จะทำงานเมื่อผู้ใช้งานกำหนดค่าของ AllProfitPositiveCloseAll เป็น true เท่านั้น รายละเอียดของทั้งสองฟังก์ชันมีดังนี้

/*+------------------------------------------------------------------+
ฟังก์ชัน ปิดคำสั่งซื้อขายที่เป็นบวกหลายรายการ() ทำหน้าที่ปิดคำสั่งซื้อขายที่เป็นบวกพร้อมกันหลายรายการ
+------------------------------------------------------------------+*/
void ปิดคำสั่งซื้อขายที่เป็นบวกหลายรายการ(int จำนวนคำสั่งซื้อขายที่มีกำไร)
{
           double ผลกำไรขาดทุนของคำสั่งซื้อขาย;
           if (AllProfitPositiveCloseAll)
          {
                     //ถ้าจำนวนคำสั่งซื้อขายที่ได้กำไรเกิน 2 ใน 3 ปิดคำสั่งซื้อที่ได้กำไรทั้งหมด
                    if (จำนวนคำสั่งซื้อขายที่เปิดค้างอยู่() == จำนวนคำสั่งซื้อขายที่มีกำไร)
                   {
                              for(int i=0;i<OrdersTotal();i++)
                             {
                                    //กรณี่มีคำสั่งซื้อขาย
                                    if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
                                    {
                                            //เลือกลบเฉพาะที่เปิดด้วย EA ชุดนี้เท่านั้น
                                            if ((OrderMagicNumber() == เลขประจำEA) &&
                                                (OrderComment() == ชื่อEA) &&
                                                (OrderSymbol() == Symbol()))
                                           {
                                                 //หาค่ากำไร/ขาดทุนของ Order
                                      ผลกำไรขาดทุนของคำสั่งซื้อขาย = OrderProfit() + OrderSwap() + OrderCommission();

                                                 if (ผลกำไรขาดทุนของคำสั่งซื้อขาย > 0.5)
                                                 {
                                                        //ตรวจสอบกรณีคำสั่งซื้อ (BUY)
                                                        if (OrderType()==OP_BUY)
                                                        {
                                                                //ปิดคำสั่ง BUY
                                                                if(!OrderClose(OrderTicket(), OrderLots(), Bid, 0, White))
                                                                              Print("OrderClose error ",GetLastError());
                                                        }
                                                        //ตรวจสอบกรณีคำสั่งขาย (SELL)
                                                        if (OrderType()==OP_SELL)
                                                        {
                                                               //ปิดคำสั่ง SELL
                                                               if(!OrderClose(OrderTicket(), OrderLots(), Ask, 0, White))
                                                                        Print("OrderClose error ",GetLastError());
                                                        }
                                                 }
                                          }
                                    }
                            }

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

      for(int i=0;i<OrdersTotal();i++)
      {
           //กรณีไม่มีคำสั่งซื้อขาย
           if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
           {
                  //เลือกลบเฉพาะที่เปิดด้วย EA ชุดนี้เท่านั้น
                  if ((OrderMagicNumber() == เลขประจำEA) &&
                       (OrderComment() == ชื่อEA) &&
                       (OrderSymbol() == Symbol()))
                  {
                           //หาค่ากำไร/ขาดทุนของ Order
                           ผลกำไรขาดทุนของคำสั่งซื้อขาย = OrderProfit() + OrderSwap() + OrderCommission();
                           if (ผลกำไรขาดทุนของคำสั่งซื้อขาย > 0)
                           {
                                     คำสั่งซื้อขายที่ได้กำไร += 1;
                           }
                           //ตรวจสอบกรณีคำสั่งซื้อ (BUY)
                           if (OrderType()==OP_BUY)
                           {
                                      //ปิดคำสั่ง BUY ที่มีกำไรในวันศุกร์
                                      if (((FridayCloseAllPositiveOrder && (DayOfWeek()==FRIDAY)) &&
                                         (TimeHour(TimeCurrent()) >= TimeHour(StringToTime("21:00:00")))) &&
                                         (ผลกำไรขาดทุนของคำสั่งซื้อขาย > 0))
                                      {
                                          ข้อความแสดงบนจอ += "\n\n***ทุกวันศุกร์ปิดคำสั่งซื้อที่ผลกำไรเป็น บวก ตั้งแต่เวลา ๒๑.๐๐ น. เป็นต้นไป ***";
                                                Comment(ข้อความแสดงบนจอ);
                                               //ปิดคำสั่ง BUY
                                               if(!OrderClose(OrderTicket(), OrderLots(), Bid, 0, White))
                                                            Print("OrderClose error ",GetLastError());
                                       }
                                      //กรณีปรกติ
                                      //ทำ TrailingStop ถ้าทำได้
                                      ทำ_TrailingStop_สำหรับคำสั่งซื้อ_BUY();

                                      //ตรวจสอบปิดคำสั่งซื้อขายตามเงื่อนไขที่ต้องการ
                                      ปิดคำสั่งซื้อ_BUY(LowSmoothed14MAก่อนปัจจุบัน,
                                                                 LowSmoothed14MA);
                         }
                         //ตรวจสอบกรณีคำสั่งขาย (SELL)
                         if (OrderType()==OP_SELL)
                         {
                                 //ปิดคำสั่ง BUY ที่มีกำไรในวันศุกร์
                                 if (((FridayCloseAllPositiveOrder && (DayOfWeek()==FRIDAY)) &&
                                    (TimeHour(TimeCurrent()) >= TimeHour(StringToTime("21:00:00")))) &&
                                    (ผลกำไรขาดทุนของคำสั่งซื้อขาย > 0))
                                 {
                                     ข้อความแสดงบนจอ += "\n\n***ทุกวันศุกร์ปิดคำสั่งซื้อที่ผลกำไรเป็น บวก ตั้งแต่เวลา ๒๑.๐๐ น. เป็นต้นไป ***";
                                       Comment(ข้อความแสดงบนจอ);
                                       //ปิดคำสั่ง SELL
                                       if(!OrderClose(OrderTicket(), OrderLots(), Ask, 0, White))
                                                         Print("OrderClose error ",GetLastError());
                                 }
                                 //ทำ Trailing Stop ถ้าทำได้
                                 ทำ_TrailingStop_สำหรับคำสั่งขาย_SELL();
                                 //ตรวจสอบปิดคำสั่งซื้อขายตามเงื่อนไขที่ต้องการ
                                ปิดคำสั่งขาย_SELL(HighSmoothed14MAก่อนปัจจุบัน,
                                                                            HighSmoothed14MA);
                           }
                    }
            }
      }

      //ปิดคำสั่งที่มีกำไรหากจำนวนเงิน 2 ใน 3 ของคำสั่งซื้อขายทั้งหมด
      ปิดคำสั่งซื้อขายที่เป็นบวกหลายรายการ(คำสั่งซื้อขายที่ได้กำไร);
}

ฟังก์ชัน ทำ_TrailingStop_สำหรับคำสั่งซื้อ_BUY()
/*+------------------------------------------------------------------+
ฟังก์ชัน ทำ_TrailingStop_สำหรับคำสั่งซื้อ_BUY() ทำหน้าที่ทำ Trailling stop สำหรับคำสั่ง BUY
+------------------------------------------------------------------+*/
void ทำ_TrailingStop_สำหรับคำสั่งซื้อ_BUY(){         
       //ตรวจสอบทำ TrailingStop สำหรับการซื้อ BUY         
       if (TrailingStop>0)         
       {          
             if (OrderStopLoss() < OrderOpenPrice())        
             {            
                   //กรณีไม่เคยทำ Trailing Stop มาก่อน 
                  //รอจนกว่าราคาจะวิ่งถึงจุดที่กำหนด 150 จุด จากราคาเปิด
                  if(Bid - OrderOpenPrice() >= TrailingStopStart*Point) 
                  {                                         
                           if(Bid - OrderStopLoss()> TrailingStop*Point)                                         
                           {                                                          
                                    if (!OrderModify(OrderTicket(), OrderOpenPrice(),  
                                           Bid - TrailingStop*Point, OrderTakeProfit(), 0, Blue))      
                                    {                                                                       
                                           Print("OrderModify error ",GetLastError());       
                                    }                                                           
                                    return;                                          
                            }                               
                    }                    
              }        
      }
}

ฟังกชัน ทำ_TrailingStop_สำหรับคำสั่งขาย_SELL()
/*+------------------------------------------------------------------+
ฟังก์ชัน ทำ_TrailingStop_สำหรับคำสั่งขาย_SELL() ทำหน้าที่ทำ Trailling stop สำหรับคำสั่ง SELL
+------------------------------------------------------------------+*/
void ทำ_TrailingStop_สำหรับคำสั่งขาย_SELL()
{                
         if (TrailingStop > 0)               
      {                  
                 if (OrderStopLoss() > OrderOpenPrice())                                      
                 {
                    //กรณียังไม่เคยทำ Stop Loss มาก่อน
                    //รอจนกว่าราคาจะวิ่งถึงจุดที่กำหนด 150 จุด จากราคาเปิดด
                          if(OrderOpenPrice() - Ask > TrailingStopStart * Point) 
                         {
                                    if(OrderStopLoss()-Ask > TrailingStop*Point) 
                                    {
                                 if(!OrderModify(OrderTicket(), OrderOpenPrice(),
                                                   Ask + TrailingStop*Point, OrderTakeProfit(), 0, Red))
                                            {
                                                    Print("OrderModify error ",GetLastError());
                                 }
                                 return;
                            }
                         }
                  }
          }
}

บทความที่เกี่ยวข้อง
เขียน EA สำหรับ FOREX ใช้เองจะดีไหม ตอน My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
การกำหนดค่าเริ่มต้นสำหรับ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
ต้นฉบับ โปรแกรมของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
กลยุทธ์ในการเปิดคำสั่งขายของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
การกำหนดขนาดล็อต (Lot size) และการกำหนดจำนวนตัดขาดทุน (Stop Loss) ของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA


บันทึกประจำวันที่ 1 สิงหาคม พ.. 2557 (2014)

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

วันเสาร์ที่ 26 มีนาคม พ.ศ. 2559

การกำหนดขนาดล็อต (Lot size) และการกำหนดจำนวนตัดขาดทุน (Stop Loss) ของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA



ดาวน์โหลดแฟ้ม EA
My EMA200 SmoothedHighLowMA MACD and RSI Thai EA Unstable
ปรับปรุงครั้งล่าสุดเมื่อ : ๑๙ มีนาคม พ.. ๒๕๕๙ เวลา ๒๓.๐๐ น.
ไม่รับประกันความเสียหายอันเนื่องมาจากการทำงานของ EA ชุดนี้
ขออภัย ต้นฉบับ EA ชุดนี้สูญหายทั้งหมด หากมีเวลาจะรื้อฟิ้นกลับมาให้ใหม่


การกำหนดขนาดล็อตในการเปิดคำสั่งซื้อ/ขายของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA จะเป็นระบบการคำนวณขนาดล็อตอัตโนมัติเช่นเดียวกับ EA สำหรับ FOREX อื่นๆ ที่ผู้เขียนจัดทำขึ้น โดยที่ผู้ที่นำไปใช้จะต้องกำหนดขนาดล็อตต่ำสุดที่ต้องการไว้ (MinumumLotSize) วิธีการคำนวณหาขนาดล็อตที่เหมาะสม จะใช้สูตรตามที่ได้เคยเสนอไว้ในบทความเรื่อง การคำนวณหาจำนวนล็อต (lots) ที่เหมาะสมสำหรับการเปิดคำสั่งซื้อ/ขายในตลาดฟอเร็กซ์
สำหรับจำนวนตัดขาดทุน หรือ Stop Loss ของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA ซึ่งจะเป็นข้อมูลอย่างหนึ่งที่จะต้องนำมาคำนวณหาขนาดล็อตที่เหมาะสม โดยในกรณีที่ผู้ใช้ไม่ได้กำหนดให้ EA หา จำนวนตัดขาดทุนอัตโนมัติ (กำหนดค่า UserAutoStopLoss = true) ตัว EA จะใช้ค่า 400 เป็นค่าตัดขาดทุนปริยายในการหาขนาดล็อตที่เหมาะสม
แต่ถ้าผู้ใช้กำหนดให้ EA คำนวนหาจำนวนตัดขาดทุนให้อัตโนมัติ EA จะใช้ค่าจากเส้นค่าเฉลี่ย EMA 200 เป็นเกณฑ์ หรือเป็นแนวต้านของการเปิดคำสั่งซื้อ/ขาย โดยจะแบ่งเป็น 2 กรณี ดังนี้
  • กรณีที่ EMA200 < Low[0] หรือ กรณีเป็นเทรนขาขั้น จะหาระยะสำหรับคำนวณหาจำนวนตัดขาดทุน จาก Close[0] มาที่เส้น EMA200
  • กรณีที่ EMA200 > High[0] หรือ กรณีที่เป็นเทรนขาลง จะหาระยะสำหรับคำนวณจำนวนตัดขาดทุน จาก EMA200 มาที่ Close[0]
หมายเหตุ การที่กำหนดค่าตัดขาดทุนปริยายไว้ที่ 400 pip นั้น เนื่องจากเป็นค่าที่ได้จากการศึกษาจากเว็บไซต์ต่างๆ เกี่ยวกับ FOREX ซึ่งพบว่าเป็นค่าของจำนวนตัดขาดทุนที่เหมาะสมสำหรับการใช้กลยุทธิ์การตัดกันของเส้นค่าเฉลี่ย (Moving Average crossover)

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

      if (UseAutoStopLoss) {

             if (EMA200 < Low[0]) //ขาขึ้น
            {
                        //ระยะจากราคาปัจจบันไปถึง EMA200
                        ระยะห่างจากราคาถึงแนวต้าน = ((Close[0] - EMA200) / Point);
             }

             if (EMA200 > High[0]) //ขาลง

            {
                        //ระยะจากราคาปัจจบันถึงราคาสูงสุดของแท่งราคา + ParabolicSAR
                       ระยะห่างจากราคาถึงแนวต้าน = ((EMA200 - Close[0]) / Point);
             }

             //กรณีได้ค่าติลบ

            if (ระยะห่างจากราคาถึงแนวต้าน < 0)
            {
                        ระยะห่างจากราคาถึงแนวต้าน = -(ระยะห่างจากราคาถึงแนวต้าน);
             }
           //แปลงให้เป็นจำนวนนับ
           จำนวนตัดขาดทุนที่คำนวณได้ = ((ระยะห่างจากราคาถึงแนวต้าน < 400) ? 400 : ระยะห่างจากราคาถึงแนวต้าน);
      }


return(จำนวนตัดขาดทุนที่คำนวณได้);
}


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


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


      //ตรวจหาคำว่า micro ในสัญลักษร์คู่เงิน
      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) && !UseAutoStopLoss) ?
                                            400 :
                        หาจำนวนตัดขาดทุนที่เหมาะสม(EMA200)))/มูลค่าต่อ1pip //หาร ด้วยจำนวน pip ที่ตัดขาดทุน
                                         , 2); //แปลงเป็นเลขทศนิยม 2 ตำแหน่ง
     } else {
                 ขนาดล็อตที่คำนวณได้ = 0.01;
     }
     //ถ้่า lots ที่คำนวณได้น้อยกว่า MinimumLotSize ให้ใช้ค่าใน MinimumLotSize แทน
     if (ขนาดล็อตที่คำนวณได้ < MinimumLotSize) ขนาดล็อตที่คำนวณได้ = MinimumLotSize;

      //ส่งค่าขนาล็ออตที่เหมาะสมกลับ

      return(ขนาดล็อตที่คำนวณได้);
}

บทความที่เกี่ยวข้อง
เขียน EA สำหรับ FOREX ใช้เองจะดีไหม ตอน My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
การกำหนดค่าเริ่มต้นสำหรับ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
ต้นฉบับ โปรแกรมของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA
กลยุทธ์ในการเปิดคำสั่งขายของ My EMA200 SmoothedHighLowMA MACD and RSI Thai EA


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

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

Adz2you.