การโค้ดบล็อกสำหรับ 'Counter' ใน MetaTrader 5: วิธีนับและหยุด

Mike 2024.04.14 19:15 19 0 0
ไฟล์แนบ

01. นับ 'X' ครั้งและหยุด

  • ขั้นตอนที่ 1 - สร้างตัวแปรเพื่อกำหนด ขีดจำกัดการนับ ซึ่งสามารถใช้เป็น พารามิเตอร์นำเข้า เพื่อทำการปรับแต่งในโค้ดได้เช่นกัน
  • ขั้นตอนที่ 2 - สร้างตัวแปรอีกตัวเพื่อเก็บจำนวนครั้งที่นับได้ (จำนวนครั้งที่ถูกนับ)
  • ขั้นตอนที่ 3 - เมื่อ Counter และ จำนวนที่นับ เท่ากัน นั่นหมายความว่า ถึงเวลาที่จะทำการส่งโค้ดบล็อกที่คุณระบุไว้
  • ขั้นตอนที่ 4 - เมื่อโค้ดถูกส่งแล้ว อย่าลืม รีเซ็ตค่า Counter ด้วย มิฉะนั้นมันจะนับต่อไปเรื่อย ๆ (ในกรณีนี้)
คุณสามารถกำหนดเงื่อนไขการกรองสำหรับบล็อก Counter ได้เช่นกัน เช่น >> "ถ้านี่เป็นจริง ให้นับหนึ่งครั้ง"
input int count = 50; // กำหนดขีดจำกัดการนับเป็นพารามิเตอร์นำเข้า int Counter; // ตัวแปรนับ // การเริ่มต้น Expert -------------------- int OnInit() { return(INIT_SUCCEEDED); } // การยกเลิก Expert ------------------- void OnDeinit(const int reason) { } // Expert OnTick -------------------------- void OnTick() { Counter ++; // เพิ่ม 1 ให้กับ Counter ทุกครั้งที่เกิด Tick Comment("Current Count -:", Counter); if(Counter == count) // นับ 'X' ครั้งและส่ง | บล็อกนี้จะถูกประมวลผลเพียงครั้งเดียวต่อการนับ { // โค้ดของคุณอยู่ที่นี่...... Alert(count," ครั้งที่นับแล้ว"); Counter = 0; // รีเซ็ต Counter ที่ท้ายของโค้ดบล็อก. นี่คือสิ่งที่ต้องทำ. } } // สิ้นสุด OnTick ----------------------


02. ส่ง 'X' ครั้งแล้วรอ 'X' ครั้งแล้วส่ง

วิธีนี้สามารถใช้เป็นการรอและส่ง ส่งและรอได้

  • ขั้นตอนที่ 1 - สร้างตัวแปรเพื่อกำหนด ขีดจำกัดการนับ และ ขีดจำกัดการรอ ซึ่งสามารถใช้เป็น พารามิเตอร์นำเข้า เพื่อทำการปรับแต่งในโค้ดได้เช่นกัน
  • ขั้นตอนที่ 2 - สร้างตัวแปรอีกตัวเพื่อเก็บจำนวนครั้งที่นับได้และจำนวนครั้งที่รอ (จำนวนครั้งที่นับได้และจำนวนครั้งที่รอ)
  • ขั้นตอนที่ 3 - เมื่อ Counter และ จำนวนการนับ เท่ากัน นั่นหมายความว่า ถึงเวลาที่จะส่งโค้ดบล็อกที่คุณระบุไว้
  • ขั้นตอนที่ 4 - เมื่อ Waiter และ จำนวนที่รอ เท่ากัน นั่นหมายความว่า ถึงเวลาที่จะรอสักครู่
  • ขั้นตอนที่ 5 - เมื่อถึงขีดจำกัดการรอ อย่าลืม รีเซ็ตค่า Counter และ Waiter ด้วย มิฉะนั้นจะไม่ทำงาน
คุณสามารถตั้งค่า เงื่อนไขการกรอง สำหรับบล็อก Counter และ Waiter ได้เช่นกัน เช่น >> "ถ้านี่เป็นจริง รอสักครู่"


input int count = 50; // กำหนดขีดจำกัดการนับเป็นพารามิเตอร์นำเข้า input int wait = 50; // กำหนดขีดจำกัดการรอเป็นพารามิเตอร์นำเข้า int Counter; // ตัวแปรนับ ค่าเริ่มต้นคือ "0" int Waiter; // ตัวแปรรอ ค่าเริ่มต้นคือ "0" // การเริ่มต้น Expert -------------------- int OnInit() { return(INIT_SUCCEEDED); } // การยกเลิก Expert ------------------- void OnDeinit(const int reason) { } // Expert OnTick -------------------------- void OnTick() { Comment("Counted Ticks -: ", Counter, "\n", "Waited Ticks -: ", Waiter); if(Counter < count) // ส่ง 'X' ครั้ง { Counter++; // ปรับปรุง Counter // โค้ดของคุณอยู่ที่นี่. } else if(Waiter < wait) // รอ 'X' ครั้ง { Waiter++; // ปรับปรุง Waiter // โค้ดของคุณอยู่ที่นี่. } if(Waiter == wait) // ถึงขีดจำกัดการรอ { Counter = 0; // รีเซ็ต Counter Waiter = 0; // รีเซ็ต Waiter } } // สิ้นสุด OnTick ---------------------- //+------------------------------------------------------------------+

พิเศษ -:

คุณสามารถเขียนโค้ด "ส่ง X ครั้งและหยุด" โดยการปรับเปลี่ยนโค้ดข้างต้นโดย ลบบล็อกการรอออก แล้วมันจะนับตามจำนวนที่กำหนดและหยุดทำงานจนกว่าจะมีการรีเซ็ต Counter คุณสามารถรีเซ็ตที่ไหนก็ได้ในโค้ดของคุณหากคุณสร้างตัวแปรเหล่านี้ในระดับโลก (global variables)


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