MyBanner

โฆษณา

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

กระบวนการทำงานของ My Fast Slow Moving Average Thai EA



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


โปรแกรม Export Adviser ที่ชื่อ My Fast Slow Moving Average ThaiEA ที่ผู้เขียนจัดทำขึ้นนั้น หลังจากทำการติดตั้งลงในโปรแกรม Meta Trader และนำไปบรรจุลงในกราฟของคู่เงินที่จะทำการซื้อขายอัตราแลกเปลี่ยนแล้ว ตัว EA จะเริ่มทำงานเมื่อ มีการเปลี่ยนแปลงของราคาของคู่เงินนั้นๆ (OnTick())
โดยการทำงานจะเริ่มด้วยการอ่านค่าของ Moving Average (28) เก็บในตัวแปรชื่อ “เส้นค่าฉลี่ยเคลื่อนเร็ว” และค่า Moving Average (180) เก็บในตัวแปรชื่อ “เส้นค่าเฉลี่ยนเคลื่อนช้า” จากนั้นจะเป็นการจัดข้อความที่จะแสดงบนหน้าจอ (บนกราฟ) ตามด้วยทำการนับจำนวนคำสั่งซื้อขายที่เปิดด้วย EA ชุดนี้ที่ยังคงค้างอยู่ ซึ่งถ้ามีก็จะทำการตรวจสอบเพื่อทำการปิดคำสั่งซื้อขาย แล้วจึงทำการตรวจสอบเพื่อเปิดคำสั่งซื้อขายใหม่ โดยจะตรวจสอบเทรน จำนวนที่เปิดครบตามจำนวนที่กำหนดหรือไม่ และจะพยายามไม่เปิดคำสั่งซื้อใหม่ถ้าคำสั่งซื้อที่เปิดไปแล้วยังติดลบอยู่ ยกเว้นกรณีเกิดเทรนใหม่ และตรวจสอบการเปิดคำสั่งซื้อขายในวันศุกร์ ตามลำดับ

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   double เส้นค่าเฉลี่ยเคลื่อนเร็ว;
   double เส้นค่าเฉลี่ยเคลื่อนช้า;
   double ผลกำไรขาดทุนคำสั่งซื้อขายล่าสุด = 0;
   int จำนวนคำสั่งซื้อขายที่เปิดไปแล้ว = 0;
   bool สถานะอนุญาตให้เปิดคำสั่ง = True;
   string เทรนปัจจุบัน = "";

   //อ่านเส้นค่าเฉลี่ยเคลื่อนที่เร็ว

   เส้นค่าเฉลี่ยเคลื่อนเร็ว = iMA(NULL, 0, FastMovingAverage, 6, MODE_SMA, PRICE_CLOSE, 0);
   //อ่านเส้นค่าเฉลี่ยเคลื่อนที่ช้า 
   เส้นค่าเฉลี่ยเคลื่อนช้า = iMA(NULL, 0, SlowMovingAverage, 6, MODE_SMA, PRICE_CLOSE, 0);
   
   //งานแสดงข้อความบนจอ
   ข้อความแสดงบนจอ = "\n****ปรับปรุงครั้งสุดดท้ายเมื่อ : " + ปรับปรุงครั้งล่าสุด + "****";

   ข้อความแสดงบนจอ += "\n\n***เงื่อนไขปิดคำสั่งซื้อขายเฉพาะที่มีกำไร  :  "

                  + (ProfitPositiveCheck ? "True" : "False") + "***";

   ข้อความแสดงบนจอ += "\n\n***เงื่อนไนการคำนวณ Stop Loss อัตโนมัติ   :  "

                  + (CalculateNewStopLoss ? "True" : "False") + "***";

   ข้อความแสดงบนจอ += "\n\n***Stop Loss : "

                  + ((StopLoss==0) ? ((!ProfitPositiveCheck ? 
                                       "ใช้การกลับเทรนเป็น Stop Loss" : 
                                       (!CalculateNewStopLoss ? "ไม่ได้กำหนด Stop Loss" 
                                                              : "Auto Stop Loss" )))
                                   : StopLoss) + "***";

   //ตรวจสอบเงื่อนไขสำหรับการขาย (SELL)

   if (เส้นค่าเฉลี่ยเคลื่อนเร็ว < เส้นค่าเฉลี่ยเคลื่อนช้า)
   {
      ข้อความแสดงบนจอ += "\n\n****FastMA = " + เส้นค่าเฉลี่ยเคลื่อนเร็ว  + "  <" +
                     "  SlowMA = " + เส้นค่าเฉลี่ยเคลื่อนช้า + "****";
      เทรนปัจจุบัน = "ขาลง";
   } else {
      ข้อความแสดงบนจอ += "\n\n****FastMA = " + เส้นค่าเฉลี่ยเคลื่อนเร็ว  + "  >" +
                     "  SlowMA = " + เส้นค่าเฉลี่ยเคลื่อนช้า + "****";
      เทรนปัจจุบัน = "ขาขึ้น";
   }
   
   ข้อความแสดงบนจอ += "\n\n*************เทรน " + เทรนปัจจุบัน + "************";   
   ข้อความแสดงบนจอ += "\n\n ราคาปิดหลังสุด : " + DoubleToStr(Close[1],4) + 
                  (((Close[1] - เส้นค่าเฉลี่ยเคลื่อนเร็ว) >= 0) ? " > ":" < ") + 
                  "เส้นค่าเฉลี่ยเครื่อนเร็ว";

   ข้อความแสดงบนจอ += "\n\n ====จำนวนเงินที่ใช้ได้ ==>  " +

                  ((StringFind(Symbol(), "micro", 0) != -1) ?  
                                 AccountFreeMargin() * 100 : 
                                 AccountFreeMargin() ) + "====";
   ข้อความแสดงบนจอ += "\n\n***มูลค่าต่อ 1 pip==> " + MarketInfo(Symbol(), MODE_TICKVALUE) + "***";
   ข้อความแสดงบนจอ += "\n\n***จำนวนล็อต ในการสั่งซื้อรอบถัดไป  ==> " + หาจำนวนล็อตที่เหมาะสม(เส้นค่าเฉลี่ยเคลื่อนช้า) + "***";

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


   //ตรวจสอบจำนวนคำสั่งซื้อ/ขายที่เปิดค้างอยู่


   int ตัวนับจำนวนรอบการทำงานของการวนซ้ำ = 0;

   int จำนวนคำสั่งซื้อขายทั้งหมด = OrdersTotal();

   for (ตัวนับจำนวนรอบการทำงานของการวนซ้ำ = 0;

        ตัวนับจำนวนรอบการทำงานของการวนซ้ำ < จำนวนคำสั่งซื้อขายทั้งหมด; 
        ตัวนับจำนวนรอบการทำงานของการวนซ้ำ++)
   {
      //เลือกนับเฉพาะ Order ที่เปิดด้วย MyFastSlowMAThaiEA
      if(!OrderSelect(ตัวนับจำนวนรอบการทำงานของการวนซ้ำ, SELECT_BY_POS, MODE_TRADES))
         continue;
      if ((OrderComment() == ชื่อEA)&& (OrderMagicNumber() == เลขประจำEA))
      {
         จำนวนคำสั่งซื้อขายที่เปิดไปแล้ว++;

         ผลกำไรขาดทุนคำสั่งซื้อขายล่าสุด = OrderProfit() + OrderSwap() + OrderCommission();


         if (ผลกำไรขาดทุนคำสั่งซื้อขายล่าสุด <= 0)

         {
            สถานะอนุญาตให้เปิดคำสั่ง = False;
         }
      }
   }
   
   if(IsTradeAllowed())
   {
      //ตรวจสอบคำสั่งซื้อขายล่าสุดเป็นบวกหรือไม่ ถ้าเป็นบวกจึงเปิดคำสั่งซื้อขายใหม่
      if (จำนวนคำสั่งซื้อขายที่เปิดไปแล้ว > 0)
      {
         ตรวจสอบปิดคำสั่งซื้อขาย(เส้นค่าเฉลี่ยเคลื่อนเร็ว);
      }
      
      //ถ้าเป็นแทรนใหม่ ให้เปิดคำสั่งซื้อ/ขายใหม่ได้
      if (StringCompare (เทรนปัจจุบัน, เทรนเก่า) != 0)
      {
         สถานะอนุญาตให้เปิดคำสั่ง = True;                    
      } else {
         สถานะอนุญาตให้เปิดคำสั่ง = False;
      }
      
      //ตรวจสอบสถานะให้เปิดคำสั่งซื้อขายในววันศูกร์
      if ((FridayNotOpenOrder) && (DayOfWeek()==FRIDAY))
      {
         สถานะอนุญาตให้เปิดคำสั่ง = False;
         
         ข้อความแสดงบนจอ += "\n\n**********วันศุกร์ =>กำหนดไม่ให้เปิดคำสั่งซื้อขาย***************";
         Comment(ข้อความแสดงบนจอ);
      }     
               
      //ตรวจสอบจำนวนคำสั่งซื้อ/ขายว่าครบหรือยัง
      if (จำนวนคำสั่งซื้อขายที่เปิดไปแล้ว < MaxTrade)
      {
         //เปิดคำสั่งซื้อขายเฉพาะเมื่อเกิดแท่งราคาแท่งแท่งใหม่
         if ((!(Volume[0] > 1)) && สถานะอนุญาตให้เปิดคำสั่ง)
         {
            ตรวจสอบเปิดคำสั่งซื้อขาย(เส้นค่าเฉลี่ยเคลื่อนเร็ว, เส้นค่าเฉลี่ยเคลื่อนช้า);      
         }
      } else {
         ข้อความแสดงบนจอ += "\n\n**********คำสั่งซื้อขายครบจำนวนแล้ว******************";
         Comment(ข้อความแสดงบนจอ);
      }
   } else {
      ข้อความแสดงบนจอ += "\n\n**********ไม่ให้เปิดคำสั่งซื้อขาย***************";
      Comment(ข้อความแสดงบนจอ);
   }

   ข้อความแสดงบนจอ = "";

}
//+------------------------------------------------------------------+



บทความที่เกี่ยวข้อง
เขียน 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


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

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

Adz2you.