ตัวอย่าง EA ที่มีฟังก์ชันหลัก

IUX Markets Bonus

ตัวอย่าง EA ที่มีฟังก์ชันหลัก: OnInit(), OnDeinit(), OnTick()

ตัวอย่าง EA ที่มีฟังก์ชันหลักOnInitOnDeinit(OnTick
ตัวอย่าง EA ที่มีฟังก์ชันหลักOnInitOnDeinit(OnTick

Expert Advisor (EA) ใน MetaTrader 4 มีโครงสร้างพื้นฐานที่ประกอบด้วยฟังก์ชันหลัก 3 ฟังก์ชัน ได้แก่ OnInit(), OnDeinit(), และ OnTick() ฟังก์ชันเหล่านี้มีบทบาทสำคัญในการควบคุมการทำงานของ EA

1. OnInit()

ฟังก์ชัน OnInit() ถูกเรียกใช้เมื่อ EA ถูกเริ่มต้นหรือเมื่อมีการเปลี่ยนแปลงค่า input parameters ฟังก์ชันนี้ใช้สำหรับ:

  • การกำหนดค่าเริ่มต้นให้กับตัวแปร
  • การตรวจสอบความถูกต้องของ input parameters
  • การเตรียมทรัพยากรที่จำเป็น เช่น การเปิดไฟล์หรือการเชื่อมต่อกับฐานข้อมูล

ตัวอย่างการใช้งาน:


// ฟังก์ชัน OnInit()
int OnInit()
{
   Print("EA has been initialized");
   return(INIT_SUCCEEDED);
}


2. OnDeinit()

ฟังก์ชัน OnDeinit() ถูกเรียกใช้เมื่อ EA ถูกหยุดการทำงานหรือถูกลบออกจากชาร์ต ฟังก์ชันนี้ใช้สำหรับ:

  • การทำความสะอาดและคืนทรัพยากรที่ใช้
  • การบันทึกข้อมูลหรือสถิติการเทรด
  • การแสดงสรุปผลการทำงานของ EA

ตัวอย่างการใช้งาน:



// ฟังก์ชัน OnDeinit()
void OnDeinit(const int reason)
{
   Print("EA has been deinitialized. Reason code = ", reason);
}



 

3. OnTick()

 YWO Promotion

ฟังก์ชัน OnTick() เป็นหัวใจสำคัญของ EA ถูกเรียกใช้ทุกครั้งที่มีการเปลี่ยนแปลงราคา (tick) ฟังก์ชันนี้ใช้สำหรับ:

  • การวิเคราะห์สภาวะตลาดปัจจุบัน
  • การตัดสินใจเปิดหรือปิดออเดอร์
  • การจัดการออเดอร์ที่เปิดอยู่

ตัวอย่างการใช้งาน:



// ฟังก์ชัน OnTick()
void OnTick()
{
   // ตรวจสอบว่ามีออเดอร์เปิดอยู่หรือไม่
   if(OrdersTotal() == 0)
   {
      // ตรวจสอบเงื่อนไขการเปิดออเดอร์
      if(ShouldOpenOrder())
      {
         OpenOrder();
      }
   }
   else
   {
      // ตรวจสอบเงื่อนไขการปิดออเดอร์
      if(ShouldCloseOrder())
      {
         CloseOrder();
      }
   }
}


 

การทำงานร่วมกันของฟังก์ชันหลัก

ฟังก์ชันทั้งสามทำงานร่วมกันเพื่อควบคุมการทำงานของ EA:

  1. OnInit() ถูกเรียกเมื่อ EA เริ่มทำงาน เพื่อตั้งค่าเริ่มต้น
  2. OnTick() ถูกเรียกซ้ำๆ ตลอดการทำงานของ EA เพื่อตัดสินใจเทรด
  3. OnDeinit() ถูกเรียกเมื่อ EA หยุดทำงาน เพื่อทำความสะอาดและสรุปผล

การเขียน EA ที่มีประสิทธิภาพจำเป็นต้องเข้าใจการทำงานของฟังก์ชันเหล่านี้และใช้งานอย่างเหมาะสม เพื่อสร้าง EA ที่ทำงานได้อย่างถูกต้อง มีประสิทธิภาพ และสามารถจัดการกับสถานการณ์ต่างๆ ได้อย่างเหมาะสม

 

ตัวอย่างการใช้งานแบบสมบูรณ์

โดยต่อไปนี้เป็นตัวอย่างฉบับการใช้งานฉบับเต็ม



// ตัวแปร Global
int MagicNumber = 123456;
double LotSize = 0.1;

// ฟังก์ชัน OnInit()
int OnInit()
{
   Print("EA has been initialized");
   return(INIT_SUCCEEDED);
}

// ฟังก์ชัน OnDeinit()
void OnDeinit(const int reason)
{
   Print("EA has been deinitialized. Reason code = ", reason);
}

// ฟังก์ชัน OnTick()
void OnTick()
{
   // ตรวจสอบว่ามีออเดอร์เปิดอยู่หรือไม่
   if(OrdersTotal() == 0)
   {
      // ตรวจสอบเงื่อนไขการเปิดออเดอร์
      if(ShouldOpenOrder())
      {
         OpenOrder();
      }
   }
   else
   {
      // ตรวจสอบเงื่อนไขการปิดออเดอร์
      if(ShouldCloseOrder())
      {
         CloseOrder();
      }
   }
}

// ฟังก์ชันตรวจสอบเงื่อนไขการเปิดออเดอร์
bool ShouldOpenOrder()
{
   // เพิ่มโลจิกการตรวจสอบเงื่อนไขที่นี่
   return false;
}

// ฟังก์ชันตรวจสอบเงื่อนไขการปิดออเดอร์
bool ShouldCloseOrder()
{
   // เพิ่มโลจิกการตรวจสอบเงื่อนไขที่นี่
   return false;
}

// ฟังก์ชันเปิดออเดอร์
void OpenOrder()
{
   int ticket = OrderSend(Symbol(), OP_BUY, LotSize, Ask, 3, 0, 0, "Buy Order", MagicNumber, 0, Blue);
   if(ticket > 0)
   {
      Print("Buy order opened successfully. Ticket: ", ticket);
   }
   else
   {
      Print("Error opening buy order. Error code: ", GetLastError());
   }
}

// ฟังก์ชันปิดออเดอร์
void CloseOrder()
{
   for(int i = OrdersTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
            bool result = OrderClose(OrderTicket(), OrderLots(), Bid, 3, White);
            if(result)
            {
               Print("Order closed successfully. Ticket: ", OrderTicket());
            }
            else
            {
               Print("Error closing order. Error code: ", GetLastError());
            }
         }
      }
   }
}


 

 Exness Promotion
PNFPB Install PWA using share icon

For IOS and IPAD browsers, Install PWA using add to home screen in ios safari browser or add to dock option in macos safari browser