Moving Average: ตัวช่วยสร้างสัญญาณซื้อขายใน MetaTrader 4

Mike 2005.11.29 21:04 9 0 0
ไฟล์แนบ


    Moving Average หรือค่าเฉลี่ยเคลื่อนที่ เป็นเครื่องมือที่ช่วยในการสร้างสัญญาณซื้อขาย ซึ่งจะใช้ค่าเฉลี่ยเคลื่อนที่เพียงตัวเดียวในการเปิดและปิดสถานะการซื้อขาย โดยจะทำการเปิดออร์เดอร์เมื่อค่าเฉลี่ยเคลื่อนที่ตัดราคาที่แท่งเทียนล่าสุด (แท่งที่มีดัชนี 1) และขนาดล็อตจะได้รับการปรับแต่งตามอัลกอริธึมพิเศษ.

    EA (Expert Advisor) จะทำการวิเคราะห์การเปรียบเทียบระหว่างค่าเฉลี่ยเคลื่อนที่และกราฟราคาตลาด การตรวจสอบจะถูกดำเนินการโดยฟังก์ชัน CheckForOpen() หากค่าเฉลี่ยเคลื่อนที่ตัดแท่งเทียนในลักษณะที่สูงกว่า Open price แต่ต่ำกว่า Close price จะทำการเปิดสถานะ BUY และหากมันต่ำกว่า Open price แต่สูงกว่า Close price จะทำการเปิดสถานะ SELL.

    การจัดการเงินที่ใช้ใน EA นี้มีความเรียบง่ายแต่มีประสิทธิภาพ โดยจะควบคุมปริมาณสถานะแต่ละอันตามผลลัพธ์ของธุรกรรมที่ผ่านมา ซึ่งอัลกอริธึมนี้ถูกสร้างขึ้นโดยฟังก์ชัน LotsOptimized() ขนาดล็อตพื้นฐานจะคำนวณจากความเสี่ยงสูงสุด:

    lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);

    พารามิเตอร์ MaximumRisk แสดงถึงเปอร์เซ็นต์ความเสี่ยงพื้นฐานสำหรับแต่ละธุรกรรม โดยมักมีค่าอยู่ระหว่าง 0.01 (1%) ถึง 1 (100%) ยกตัวอย่างเช่น หาก AccountFreeMargin เท่ากับ $20,500 และกฎการจัดการเงินกำหนดให้ใช้ความเสี่ยง 2% ขนาดล็อตพื้นฐานจะเท่ากับ 20500 * 0.02 / 1000 = 0.41 เป็นสิ่งสำคัญที่ต้องควบคุมความถูกต้องของขนาดล็อตและปรับให้เป็นไปตามค่าที่อนุญาต โดยทั่วไปขนาดล็อตที่เป็นเศษส่วนที่มีขั้นตอน 0.1 สามารถทำได้ การทำธุรกรรมที่มีปริมาณ 0.41 จะไม่ถูกดำเนินการ เพื่อให้อยู่ในเกณฑ์มาตรฐาน จะใช้ฟังก์ชัน NormalizeDouble() โดยมีความถูกต้องถึง 1 หลักหลังจุดทศนิยม ผลลัพธ์ที่ได้จะทำให้ล็อตพื้นฐานเป็น 0.4 การคำนวณล็อตพื้นฐานจาก AccountFreeMargin จะช่วยเพิ่มปริมาณการซื้อขายขึ้นอยู่กับความสำเร็จในการเทรด คือการเทรดด้วยการนำกำไรกลับมาลงทุนใหม่ นี่คือกลไกหลักที่มีการจัดการเงินอย่างเคร่งครัดเพื่อเพิ่มประสิทธิภาพการเทรด.

    DecreaseFactor เป็นตัวควบคุมปริมาณล็อตที่จะลดลงหลังจากการเทรดที่ขาดทุน ค่าปกติคือ 2, 3, 4, 5 หากธุรกรรมที่แล้วมีผลขาดทุน ปริมาณในธุรกรรมถัดไปจะลดลงตามอัตราส่วน DecreaseFactor เพื่อรอผ่านช่วงขาดทุน นี่คือปัจจัยหลักในอัลกอริธึมการจัดการเงิน แนวคิดคือถ้าการเทรดประสบความสำเร็จเพิ่มขึ้น EA จะทำงานด้วยล็อตพื้นฐานเพื่อทำกำไรสูงสุด หลังจากการทำธุรกรรมที่ขาดทุนครั้งแรก EA จะ "ลดความเร็ว" จนกว่าจะมีการทำธุรกรรมที่ดีอีกครั้ง อัลกอริธึมนี้อนุญาตให้ปิดการ "ลดความเร็ว" โดยการตั้งค่า DecreaseFactor = 0 จำนวนธุรกรรมที่ขาดทุนติดต่อกันจะถูกคำนวณจากประวัติการซื้อขาย ขนาดล็อตพื้นฐานจะถูกคำนวณใหม่ตามนี้:

    if(losses>1) lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);

    อัลกอริธึมนี้ช่วยลดความเสี่ยงที่เกิดจากการทำธุรกรรมที่ขาดทุนติดต่อกัน ขนาดล็อตจะถูกตรวจสอบอย่างเคร่งครัดตามขนาดล็อตขั้นต่ำที่อนุญาตเมื่อสิ้นสุดฟังก์ชัน เพราะการคำนวณก่อนหน้านี้อาจทำให้ล็อต=0:

    if(lot<0.1) lot=0.1;

    EA นี้เหมาะสำหรับการทำงานในกรอบเวลาแบบรายวัน และในโหมดการทดสอบ - สำหรับการทำที่ราคาปิด มันจะทำการซื้อขายเฉพาะในเวลาที่มีการเปิดแท่งใหม่ ดังนั้นโหมดการจำลองทุกแท่งจึงไม่จำเป็น.

    ผลการทดสอบจะแสดงในรายงาน.

รายงานการทดสอบกลยุทธ์

Moving Average


สัญลักษณ์EURUSD (ยูโร เทียบ ดอลลาร์สหรัฐ)
ช่วงเวลา1 ชั่วโมง (H1) 2003.01.08 00:00 - 2003.11.25 00:00
แบบจำลองทุกแท่ง (อิงจากทุกกรอบเวลาอย่างน้อยที่สุดพร้อมการจัดเรียงแบบเสมือนของทุกแท่ง)
พารามิเตอร์Lots=0.1; MaximumRisk=0.01; DecreaseFactor=1; MovingPeriod=16; MovingShift=11;

แท่งในการทดสอบ19371การจำลองแท่ง656918คุณภาพการจำลอง25.00%

เงินฝากเริ่มต้น10000.00



กำไรสุทธิรวม1695.20กำไรรวม4293.20ขาดทุนรวม-2598.00
ปัจจัยกำไร1.65การจ่ายเงินที่คาดหวัง10.80

การลดลงโดยรวม40.35การลดลงสูงสุด (%)318.50 (3.0%)


การซื้อขายทั้งหมด157ตำแหน่งสั้น ( % ที่ชนะ)73 (26.03%)ตำแหน่งยาว ( % ที่ชนะ)84 (32.14%)

การซื้อขายที่ทำกำไร (% ของทั้งหมด)46 (29.30%)การซื้อขายที่ขาดทุน (% ของทั้งหมด)111 (70.70%)
ใหญ่ที่สุดการซื้อขายที่ทำกำไร262.55การซื้อขายที่ขาดทุน-91.00
เฉลี่ยการซื้อขายที่ทำกำไร93.33การซื้อขายที่ขาดทุน-23.41
สูงสุดการชนะติดต่อกัน (กำไรในเงิน)2 (387.15)การขาดทุนติดต่อกัน (ขาดทุนในเงิน)7 (-287.25)
สูงสุดกำไรติดต่อกัน (จำนวนการชนะ)387.15 (2)การขาดทุนติดต่อกัน (จำนวนการขาดทุน)-287.25 (7)
เฉลี่ยการชนะติดต่อกัน1การขาดทุนติดต่อกัน3
รายการ
ความคิดเห็น 0