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():
    • เปิดออเดอร์ใหม่ด้วยพารามิเตอร์ที่กำหนด
 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