EA ที่ทำงานกับหลายคู่สกุลเงิน

IUX Markets Bonus

ตัวอย่าง EA ที่ทำงานกับหลายคู่สกุลเงิน

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

EA หลายคู่เงิน
EA หลายคู่เงิน

ข้อดีของ EA ที่ทำงานกับหลายคู่สกุลเงิน:

  1. กระจายความเสี่ยง
  2. เพิ่มโอกาสในการทำกำไร
  3. ใช้ประโยชน์จากความสัมพันธ์ระหว่างคู่สกุลเงินต่างๆ
  4. เหมาะสำหรับตลาดที่มีความผันผวนต่ำ

ตัวอย่าง EA ที่ทำงานกับหลายคู่สกุลเงิน:

ต่อไปนี้เป็นตัวอย่าง EA ที่ทำงานกับ 3 คู่สกุลเงิน ได้แก่ EURUSD, GBPUSD และ USDJPY โดยใช้กลยุทธ์ Moving Average Crossover อย่างง่าย


#property copyright "Your Name"
#property link      "https://www.example.com"
#property version   "1.00"
#property strict

// Input parameters
input int FastMA = 10;
input int SlowMA = 20;
input double LotSize = 0.01;

// Global variables
string symbols[3] = {"EURUSD", "GBPUSD", "USDJPY"};
int magicNumbers[3] = {100001, 100002, 100003};

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
{
   // Validate inputs
   if(FastMA <= 0 || SlowMA <= 0 || FastMA >= SlowMA)
   {
      Print("Invalid MA parameters");
      return INIT_PARAMETERS_INCORRECT;
   }
   
   return(INIT_SUCCEEDED);
}

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
   // Clean up code here
}

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
{
   for(int i=0; i<ArraySize(symbols); i++)
   {
      string symbol = symbols[i];
      int magicNumber = magicNumbers[i];
      
      // Check for open positions
      if(PositionExists(symbol, magicNumber))
         continue;
      
      // Get MA values
      double fastMA = iMA(symbol, 0, FastMA, 0, MODE_SMA, PRICE_CLOSE, 0);
      double slowMA = iMA(symbol, 0, SlowMA, 0, MODE_SMA, PRICE_CLOSE, 0);
      double fastMAPrev = iMA(symbol, 0, FastMA, 0, MODE_SMA, PRICE_CLOSE, 1);
      double slowMAPrev = iMA(symbol, 0, SlowMA, 0, MODE_SMA, PRICE_CLOSE, 1);
      
      // Check for crossover
      if(fastMAPrev <= slowMAPrev && fastMA > slowMA)
      {
         // Buy signal
         double askPrice = SymbolInfoDouble(symbol, SYMBOL_ASK);
         OpenOrder(symbol, OP_BUY, askPrice, magicNumber);
      }
      else if(fastMAPrev >= slowMAPrev && fastMA < slowMA)
      {
         // Sell signal
         double bidPrice = SymbolInfoDouble(symbol, SYMBOL_BID);
         OpenOrder(symbol, OP_SELL, bidPrice, magicNumber);
      }
   }
}

//+------------------------------------------------------------------+
//| Check if position exists for the given symbol and magic number   |
//+------------------------------------------------------------------+
bool PositionExists(string symbol, int magicNumber)
{
   for(int i=0; i<OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == symbol && OrderMagicNumber() == magicNumber) return true; } } return false; } //+------------------------------------------------------------------+ //| Open a new order | //+------------------------------------------------------------------+ void OpenOrder(string symbol, int orderType, double price, int magicNumber) { int ticket = OrderSend(symbol, orderType, LotSize, price, 3, 0, 0, "Multi-currency EA", magicNumber, 0, orderType == OP_BUY ? clrGreen : clrRed); if(ticket > 0)
      Print("Order opened successfully: ", symbol, " ", orderType == OP_BUY ? "Buy" : "Sell");
   else
      Print("Error opening order: ", GetLastError());
}


อธิบายองค์ประกอบของโค้ด:
  1. Input Parameters:
    • FastMA และ SlowMA: ค่า period สำหรับ Moving Average เร็วและช้า
    • LotSize: ขนาดการเทรดต่อออเดอร์
  2. Global Variables:
    • symbols: อาร์เรย์เก็บชื่อคู่สกุลเงินที่ต้องการเทรด
    • magicNumbers: อาร์เรย์เก็บเลข magic number สำหรับแต่ละคู่สกุลเงิน
  3. OnInit():
    • ตรวจสอบความถูกต้องของค่า input
  4. OnTick():
    • วนลูปผ่านแต่ละคู่สกุลเงิน
    • ตรวจสอบว่ามีออเดอร์เปิดอยู่หรือไม่
    • คำนวณค่า Moving Average
    • ตรวจสอบสัญญาณ crossover และเปิดออเดอร์ตามเงื่อนไข
  5. PositionExists():
    • ตรวจสอบว่ามีออเดอร์เปิดอยู่สำหรับคู่สกุลเงินและ magic number ที่ระบุหรือไม่
  6. OpenOrder():
    • เปิดออเดอร์ใหม่ด้วยพารามิเตอร์ที่กำหนด
FOREXDUCK Logo

FOREXDUCK (นามปากกา) นักเขียนของเรามีประสบการณ์การเงินการลงทุนกว่า 10 ปี มีความเชี่ยวชาญในการวิเคราะห์ตลาด Forex และคริปโต โดยเฉพาะการวิเคราะห์ทางเทคนิค รวมถึงเทคนิคต่าง

HFM Promotion