หน้าแรก การเทรดด้วยระบบ โพสต์

วิธีตรวจจับแท่งเทียนใหม่ใน EA สำหรับ MetaTrader 4

ไฟล์แนบ
10370.zip (734 bytes, ดาวน์โหลด 0 ครั้ง)

สวัสดีครับเพื่อนๆ เทรดเดอร์ทุกคน!

วันนี้เราจะมาพูดถึงวิธีการตรวจจับแท่งเทียนใหม่ใน EA กันครับ

มันง่ายมากโดยเฉพาะถ้าคุณต้องการตรวจจับแท่งเทียนใหม่ในกรอบเวลา (timeframe) ปัจจุบัน

void start(){
  static datetime tmp;
  if (tmp != Time[0]) {
    tmp = Time[0];
    //ใส่โค้ดของคุณที่นี่
  }
}

แต่ถ้าพูดถึงการตรวจจับเหตุการณ์ในกรอบเวลาอื่นๆ มันก็ไม่ยากเกินไปครับ แต่มีข้อจำกัดนิดหน่อย:

MT4 ไม่รองรับ onBar event แต่คุณสามารถเก็บเวลาที่มาถึงใน array และตรวจสอบเวลานั้นทุกครั้งที่มี tick ถ้ามันตรงตามเวลาที่กำหนด ก็ให้ทำการเรียกเหตุการณ์แท่งเทียนใหม่ครับ
หมายความว่า ถ้าคุณรันการทดสอบย้อนหลังในกรอบเวลา M5 คุณสามารถจับเหตุการณ์ M6 M7...D1 ได้ครับ
ทำไมถึงตรวจจับได้เฉพาะแนวโน้มขาขึ้น? คำตอบอยู่ที่คำถาม: คุณจะ สร้าง ข้อมูล tick โดย metatrader? A1, A2, A3,...

จนถึงกรอบเวลา D1 มันจะยากขึ้นเพราะอาทิตย์เริ่มต้นที่เช่น วันอาทิตย์ 20:45 (ขึ้นอยู่กับโบรกเกอร์) และการเริ่มต้น ของเดือน อาจเริ่ม กลางสัปดาห์... เป็นต้นครับ
ผมคิดว่าข้อมูลนี้ไม่ค่อยเกี่ยวข้องมากนัก ดังนั้นเลยไม่ลงเผยแพร่...

ดังนั้นมี หัวข้อ สำหรับคำถามนี้ แต่ผมคิดว่าหลายคนยังไม่ค่อยอ่านบทความและฟอรัมกันเลยจึงขอเผยแพร่โค้ดนี้ครับ

คำอธิบายบางส่วน:

ในฟังก์ชัน init คุณจะต้องเติมเวลาเริ่มต้นใน array:

  curIndex = utils.periodToPeriodIndex(Period());
  times[curIndex] = Time[0];
  for(int i = curIndex + 1; i < MAX; i++)
    times[i] = times[curIndex] - MathMod(times[curIndex], utils.periodIndexToPeriod(i) * 60);

และในฟังก์ชัน start คุณจะต้องตรวจสอบว่าเวลาผ่านไปพอหรือยัง จากนั้นก็ให้ออกเหตุการณ์:

  if (times[curIndex] != Time[0]) {
    times[curIndex] = Time[0];
    onBar(Period());
    for(int i = curIndex + 1; i < MAX; i++) {
      int period = utils.periodIndexToPeriod(i),
          seconds = period * 60,
          time0 = times[curIndex] - MathMod(times[curIndex], seconds);
      if (times[i] != time0) {
        times[i] = time0;
        onBar(period);
      }
    }
  }


เขียนโค้ดของคุณใน

void onTick() { 
}

และ

void onBar(int period) {
}

นั่นแหละครับ ขอบคุณทุกคนที่ติดตามอ่าน


อัปเดต 1.1: ขอบคุณ WHRoeder สำหรับโค้ดที่ชัดเจนครับ

โพสต์ที่เกี่ยวข้อง

ความคิดเห็น (0)