ใช้ MQL5 Wizard สร้างสัญญาณเทรดจาก Alligator Indicator

Mike 2011.01.15 03:35 31 0 0
ไฟล์แนบ

MQL5 Wizard ช่วยให้เราสร้าง Expert Advisor (EA) ได้โดยอัตโนมัติ (ดูเพิ่มเติมที่ MQL5 Wizard: สร้าง Expert Advisors โดยไม่ต้องเขียนโปรแกรม).

วันนี้เรามาพูดถึงสัญญาณการเทรดที่ใช้ Alligator Indicator ที่ถูกนำเสนอโดย B. Williams ในหนังสือ "Trading Chaos" โดยกลยุทธ์นี้มีชื่อว่า "สัญญาณจาก Alligator" ซึ่งสามารถสร้าง EA โดยอัตโนมัติใน MQL5 Wizard.

ระบบนี้ใช้ค่าเฉลี่ยเคลื่อนที่ 3 ตัว (Lips, Teeth และ Jaw) รวมถึงออสซิลเลเตอร์ที่คำนวณจากผลต่างระหว่างกัน สัญญาณการเทรดจะถูกสร้างขึ้นหลังจากที่เส้น Alligator ตัดกัน โดยขึ้นอยู่กับแนวโน้มที่กำหนดจากลำดับของเส้นเหล่านี้ ในกรณีที่แนวโน้มขาขึ้น เส้น Lips (ซึ่งมีช่วงเวลาน้อยที่สุด) จะอยู่สูงสุด รองลงมาคือ เส้น Teeth และต่ำสุดคือ เส้น Jaw ขณะที่แนวโน้มขาลงจะเป็นกรณีตรงกันข้าม.

สัญญาณการเทรด:

  • เปิดตำแหน่งซื้อ: เมื่อเส้น Alligator ตัดกันและระยะห่างระหว่างเส้นเพิ่มขึ้นในแนวโน้มขาขึ้น;
  • ปิดตำแหน่งซื้อ: เมื่อเส้น Lips ข้ามเส้น Jaw ขึ้น;
  • เปิดตำแหน่งขาย: เมื่อเส้น Alligator ตัดกันและระยะห่างระหว่างเส้นเพิ่มขึ้นในแนวโน้มขาลง;
  • ปิดตำแหน่งขาย: เมื่อเส้น Lips ข้ามเส้น Jaw ลง;

กลยุทธ์นี้ถูกใช้งานในคลาส CSignalAlligator.

สัญญาณการเทรดจาก Alligator Indicator

สัญญาณการเทรดจาก Alligator Indicator


รายละเอียดของสัญญาณการเทรด

กลยุทธ์การเทรดนี้ถูกนำไปใช้งานใน CSignalAlligator ซึ่งมีวิธีการที่ถูกป้องกันเพื่อให้ง่ายต่อการเข้าถึงค่าของอินดิเคเตอร์:

double   Jaw(int ind)              // คืนค่าของเส้น Jaw ของแท่ง
double   Teeth(int ind)           // คืนค่าของเส้น Teeth ของแท่ง
double   Lips(int ind)              // คืนค่าของเส้น Lips ของแท่ง
double   LipsTeethDiff(int ind)   // คืนค่าความแตกต่างระหว่างเส้น Lips และ Teeth
double   TeethJawDiff(int ind)    // คืนค่าความแตกต่างระหว่างเส้น Teeth และ Jaw
double   LipsJawDiff(int ind)     // คืนค่าความแตกต่างระหว่างเส้น Lips และ Jaw
bool     CheckCross();             // ใช้เพื่อตรวจสอบการตัดกันของเส้น Alligator


1. เปิดตำแหน่งซื้อ

การตรวจสอบเงื่อนไขการเทรดมีคุณสมบัติบางอย่างที่เกิดจากการเปลี่ยนแปลงของเส้น Lips, Teeth และ Jaw.

เงื่อนไขในการเปิดตำแหน่งซื้อ:

  • ใช้ CheckCross เพื่อตรวจสอบการตัดกันและการเพิ่มขึ้นของความแตกต่างระหว่างเส้น;
  • LipsTeethDiff(-2)>=LipsTeethDiff(-1) และ LipsTeethDiff(-1)>=LipsTeethDiff(0); ตรวจสอบการเพิ่มขึ้นของความแตกต่างระหว่างเส้น Lips และ Teeth;
  • LipsTeethDiff(0)>=0.0; เส้น Lips สูงกว่าเส้น Teeth;
  • TeethJawDiff(-2) >=TeethJawDiff(-1) และ TeethJawDiff(-1) >=TeethJawDiff(0) ; ตรวจสอบการเพิ่มขึ้นของความแตกต่างระหว่างเส้น Teeth และ Jaw;
  • TeethJawDiff(0) >=0.0; เส้น Teeth สูงกว่าเส้น Jaw.
//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเปิดตำแหน่งซื้อ (buy)                    |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenLong(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)>=LipsTeethDiff(-1) && LipsTeethDiff(-1)>=LipsTeethDiff(0) && LipsTeethDiff(0)>=0.0 &&
      TeethJawDiff(-2) >=TeethJawDiff(-1)  && TeethJawDiff(-1) >=TeethJawDiff(0)  && TeethJawDiff(0) >=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


2. ปิดตำแหน่งซื้อ

เงื่อนไขในการปิดตำแหน่งซื้อ:

  • LipsTeethDiff(-1)<0; เส้น Lips ของแท่งถัดไป (เพราะการเปลี่ยนแปลง) ต่ำกว่าเส้น Teeth;
  • LipsTeethDiff(0)>=0; เส้น Lips ของแท่งปัจจุบันสูงกว่าหรือเท่ากับเส้น Teeth;
  • LipsTeethDiff(1)>0; เส้น Lips ของแท่งก่อนหน้าสูงกว่าเส้น Teeth.
//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการปิดตำแหน่งซื้อ                         |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseLong(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)< 0 && LipsTeethDiff(0)>=0 && LipsTeethDiff(1)< 0);
  }


3. เปิดตำแหน่งขาย

เงื่อนไขในการเปิดตำแหน่งขาย:

  • ใช้ CheckCross เพื่อตรวจสอบการตัดกันและการเพิ่มขึ้นของความแตกต่างระหว่างเส้น;
  • LipsTeethDiff(-2)<=LipsTeethDiff(-1) และ LipsTeethDiff(-1)<=LipsTeethDiff(0); ตรวจสอบการเพิ่มขึ้นของความแตกต่างระหว่างเส้น Lips และ Teeth;
  • LipsTeethDiff(0)<=0.0; เส้น Lips ของแท่งปัจจุบันต่ำกว่าเส้น Teeth;
  • TeethJawDiff(-2)<=TeethJawDiff(-1) และ TeethJawDiff(-1)<=TeethJawDiff(0); ตรวจสอบการเพิ่มขึ้นของความแตกต่างระหว่างเส้น Teeth และ Jaw;
  • TeethJawDiff(0) <=0.0; เส้น Teeth ของแท่งปัจจุบันต่ำกว่าเส้น Jaw;
//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการเปิดตำแหน่งขาย (sell)                  |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckOpenShort(double& price,double& sl,double& tp,datetime& expiration)
  {
   if(CheckCross()) return(false);
//---
   price=0.0;
   sl   =0.0;
   tp   =0.0;
//---
   if(LipsTeethDiff(-2)<=LipsTeethDiff(-1) && LipsTeethDiff(-1)<=LipsTeethDiff(0) && LipsTeethDiff(0)<=0.0 &&
      TeethJawDiff(-2) <=TeethJawDiff(-1)  && TeethJawDiff(-1) <=TeethJawDiff(0)  && TeethJawDiff(0) <=0.0)
      m_crossed=true;
//---
   return(m_crossed);
  }


4. ปิดตำแหน่งขาย

เงื่อนไขในการปิดตำแหน่งขาย:

  • LipsTeethDiff(-1)>0; เส้น Lips ของแท่งถัดไปสูงกว่าเส้น Teeth;
  • LipsTeethDiff(0)<=0; เส้น Lips ของแท่งปัจจุบันต่ำกว่าหรือเท่ากับเส้น Teeth;
  • LipsTeethDiff(1)<0; เส้น Lips ของแท่งก่อนหน้าต่ำกว่าเส้น Teeth.
//+------------------------------------------------------------------+
//| ตรวจสอบเงื่อนไขในการปิดตำแหน่งขาย                        |
//+------------------------------------------------------------------+
bool CSignalAlligator::CheckCloseShort(double& price)
  {
   price=0.0;
//---
   return(LipsTeethDiff(-1)>&0 && LipsTeethDiff(0)<=0 && LipsTeethDiff(1)< 0);
  }

การสร้าง Expert Advisor โดยใช้ MQL5 Wizard

ในการสร้างหุ่นยนต์เทรดตามกลยุทธ์นี้ คุณต้องเลือกคุณสมบัติของสัญญาณเป็น "สัญญาณจาก Alligator" ในตัวเลือก "สร้าง Expert Advisors สำเร็จรูป" ของ MQL5 Wizard:

เลือกสัญญาณจาก Alligator ใน MQL5 Wizard

เลือกสัญญาณจาก Alligator ใน MQL5 Wizard

ถัดไป คุณต้องระบุอัลกอริธึม Trailing Stop ที่ต้องการและระบบ การจัดการเงินและความเสี่ยง รหัสของ Expert Advisor จะถูกสร้างขึ้นโดยอัตโนมัติ คุณสามารถคอมไพล์และทดสอบใน Strategy Tester ของ MetaTrader 5.


ผลการทดสอบ

มาพิจารณาผลการทดสอบย้อนหลังของ Expert Advisor จากข้อมูลย้อนหลัง (EURUSD H1, ระยะเวลาทดสอบ: 1.1.2010-05.01.2011, JawPeriod=13, JawShift=8, TeethPeriod=8, TeethShift=5, LipsPeriod=5, LipsShift=3, MaMethod=2, Applied=5, CrossMeasure=5).

ในการสร้าง Expert Advisor เราใช้ปริมาณคงที่ (Trading Fixed Lot, 0.1) และไม่ใช้ Trailing Stop (Trailing ไม่ใช้).

ผลการทดสอบของ Expert Advisor

ผลการทดสอบของ Expert Advisor ที่ใช้สัญญาณจาก Alligator Indicator


กำไรสามารถเพิ่มขึ้นได้หากคุณใช้การกรองดีลและพิจารณาลักษณะของตลาดตามเวลา คลาส CSignalITF จะช่วยให้คุณสามารถเพิ่มตัวกรองเวลาระหว่างวัน เวลาในการเทรดที่ดีที่สุดสามารถค้นพบได้โดยใช้ Strategy Tester ของ MetaTrader 5. ดูตัวอย่างใน MQL5 Wizard - สัญญาณจากการตัดกันของ EMA สองตัวพร้อมตัวกรองเวลาระหว่างวัน.


ไฟล์แนบ: ไฟล์ SignalAlligator.mqh ที่มีคลาส CSignalAlligator ต้องถูกวางไว้ใน terminal_data_folder\MQL5\Include\Expert\Signal.

ไฟล์ expert_alligator.mq5 มีรหัสของ Expert Advisor ที่สร้างขึ้นโดยใช้ MQL5 Wizard.


รายการ
ความคิดเห็น 0