ดูอันดับนักแข่งea
เว็บบอร์ดลงโพสฟรี
การแจ้งเตือน
ลบทั้งหมด

เปรียบเทียบ EA FVG MQL4 กับกลยุทธ์การเทรด FVG แบบ Manual

1 กระทู้
1 ผู้ใช้
2 Reactions
70 เข้าชม
James Albert
(@james-albert)
สมาชิก
Rank F
เข้าร่วม: 8 เดือน ที่ผ่านมา
กระทู้: 177
หัวข้อเริ่มต้น  

Fair Value Gap (FVG) คืออะไร?

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

หลักการทำงานของ EA FVG MQL4:

EA FVG MQL4 จะทำงานโดยอัตโนมัติตามหลักการดังนี้:

  1. การระบุ FVG:

    • EA จะตรวจสอบลำดับแท่งเทียน 3 แท่งบนกราฟเพื่อระบุ FVG ตามเงื่อนไขที่กำหนด (แท่งเทียนกลางขนาดใหญ่ และแท่งเทียนแรกและสามไม่มีการทับซ้อนกัน)
    • EA จะคำนวณช่วงราคาของ FVG (ราคาสูงสุดของแท่งเทียนแรก และราคาต่ำสุดของแท่งเทียนที่สาม)
  2. เงื่อนไขการเข้าซื้อขาย:

    • EA จะตรวจสอบว่าราคาเข้าใกล้หรือสัมผัส FVG ที่ยังไม่ได้รับการแก้ไข (Unmitigated FVG)
    • อาจเพิ่มเงื่อนไขเพิ่มเติม เช่น ขนาดของ FVG, ตำแหน่งของ FVG, หรือการยืนยันจากตัวชี้วัดอื่น ๆ (เช่น Fibonacci, MACD)
  3. การวางคำสั่งซื้อขาย:

    • เมื่อเงื่อนไขการเข้าซื้อขายตรงตามที่กำหนด EA จะวางคำสั่งซื้อขาย (Buy หรือ Sell) ที่กึ่งกลางของ FVG
    • EA จะตั้งค่า Stop Loss ที่จุด Break ของ FVG
  4. การจัดการคำสั่งซื้อขาย:

    • EA อาจมีฟังก์ชันการจัดการคำสั่งซื้อขายเพิ่มเติม เช่น การตั้งค่า Take Profit, Trailing Stop, หรือการปิดคำสั่งซื้อขายเมื่อมีสัญญาณกลับตัว

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

สมมติว่า EA ระบุ FVG ขาขึ้นบนกราฟ EUR/USD ในกรอบเวลา H1:

  1. EA ตรวจสอบว่า FVG นี้ยังไม่ได้รับการแก้ไข
  2. ราคาเข้าใกล้กึ่งกลางของ FVG
  3. EA วางคำสั่ง Buy ที่กึ่งกลางของ FVG
  4. EA ตั้งค่า Stop Loss ที่จุด Break ของ FVG
  5. EA อาจตั้งค่า Take Profit ที่ระดับ Fibonacci Retracement 61.8% ของ FVG

Source Code EA FVG MQL4 (โครงร่าง):

//+------------------------------------------------------------------+
//| EA_FVG.mq4                                                                
//| Copyright 2025, James Alber                                 
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, James Albert"
#property link ""
#property version "1.00"
#property strict

//--- input parameters
extern int FVG_Lookback = 20; // จำนวนแท่งเทียนที่ใช้ในการค้นหา FVG
extern double RiskPercent = 1.0; // เปอร์เซ็นต์ความเสี่ยงต่อการเทรด
extern double FVG_FibonacciLevel = 61.8; // ระดับ Fibonacci ที่ใช้ในการยืนยัน FVG
extern int MagicNumber = 12345; // Magic Number สำหรับ EA

//+------------------------------------------------------------------+
//| Expert initialization function                                      
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                  
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| Expert tick function                                                
//+------------------------------------------------------------------+
void OnTick()
{
//---
CheckForFVG();
}
//+------------------------------------------------------------------+
//| Function to check for Fair Value Gaps                      
//+------------------------------------------------------------------+
void CheckForFVG()
{
for(int i = FVG_Lookback; i >= 2; i--)
{
//--- Check for bullish FVG
if(High[i-2] < Low[i] && High[i-1] > High[i-2] && Low[i-1] < Low[i])
{
double fvgHigh = High[i-2];
double fvgLow = Low[i];
double fvgMid = (fvgHigh + fvgLow) / 2;
double fvgSize = fvgHigh - fvgLow;

//--- Check if FVG is unmitigated
if(!IsFVGMitigated(fvgHigh, fvgLow))
{
//--- Check for Fibonacci confluence
if(CheckFibonacciConfluence(fvgHigh, fvgLow, fvgMid))
{
//--- Place buy order
PlaceBuyOrder(fvgMid, fvgLow);
}
}
}

//--- Check for bearish FVG
if(Low[i-2] > High[i] && Low[i-1] < Low[i-2] && High[i-1] > High[i])
{
double fvgHigh = High[i];
double fvgLow = Low[i-2];
double fvgMid = (fvgHigh + fvgLow) / 2;
double fvgSize = fvgLow - fvgHigh;

//--- Check if FVG is unmitigated
if(!IsFVGMitigated(fvgHigh, fvgLow))
{
//--- Check for Fibonacci confluence
if(CheckFibonacciConfluence(fvgHigh, fvgLow, fvgMid))
{
//--- Place sell order
PlaceSellOrder(fvgMid, fvgHigh);
}
}
}
}
}
//+------------------------------------------------------------------+
//| Function to check if FVG is mitigated                        
//+------------------------------------------------------------------+
bool IsFVGMitigated(double fvgHigh, double fvgLow)
{
for(int i = 0; i < Bars; i++)
{
if(High[i] >= fvgLow && Low[i] <= fvgHigh)
{
return(true);
}
}
return(false);
}
//+------------------------------------------------------------------+
//| Function to check for Fibonacci confluence                 
//+------------------------------------------------------------------+
bool CheckFibonacciConfluence(double fvgHigh, double fvgLow, double fvgMid)
{
double fibo = fvgHigh - ((fvgHigh - fvgLow) * (FVG_FibonacciLevel / 100));
if(MathAbs(fvgMid - fibo) < Point * 5) // 5 pips tolerance
{
return(true);
}
return(false);
}
//+------------------------------------------------------------------+
//| Function to place buy order                                     
//+------------------------------------------------------------------+
void PlaceBuyOrder(double price, double sl)
{
double lots = CalculateLots();
int ticket = OrderSend(Symbol(), OP_BUY, lots, price, 3, sl, 0, "Buy FVG", MagicNumber, 0, Green);
if(ticket > 0)
{
Print("Buy order placed successfully!");
}
else
{
Print("Error placing buy order: ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| Function to place sell order                                     
//+------------------------------------------------------------------+
void PlaceSellOrder(double price, double sl)
{
double lots = CalculateLots();
int ticket = OrderSend(Symbol(), OP_SELL, lots, price, 3, sl, 0, "Sell FVG", MagicNumber, 0, Red);
if(ticket > 0)
{
Print("Sell order placed successfully!");
}
else
{
Print("Error placing sell order: ", GetLastError());
}
}
//+------------------------------------------------------------------+
//| Function to calculate lot size                                    
//+------------------------------------------------------------------+
double CalculateLots()
{
double accountBalance = AccountBalance();
double riskAmount = accountBalance * (RiskPercent / 100);
double stopLossPips = MathAbs(OrderStopLoss() - OrderOpenPrice()) / Point;
double lotSize = riskAmount / (stopLossPips * Point * MarketInfo(Symbol(), MODE_TICKVALUE));
return(NormalizeDouble(lotSize, 2));
}
//+------------------------------------------------------------------+

คำอธิบาย:

  • OnInit(): ฟังก์ชันเริ่มต้นการทำงานของ EA
  • OnDeinit(): ฟังก์ชันสิ้นสุดการทำงานของ EA
  • OnTick(): ฟังก์ชันที่ทำงานทุกครั้งที่มีการอัปเดตราคาใหม่
  • CheckForFVG(): ฟังก์ชันหลักในการตรวจสอบ FVG บนกราฟ
  • IsFVGMitigated(): ฟังก์ชันตรวจสอบว่า FVG ได้รับการแก้ไขแล้วหรือไม่
  • CheckFibonacciConfluence(): ฟังก์ชันตรวจสอบการบรรจบกันของ FVG กับระดับ Fibonacci
  • PlaceBuyOrder(): ฟังก์ชันวางคำสั่งซื้อ
  • PlaceSellOrder(): ฟังก์ชันวางคำสั่งขาย
  • CalculateLots(): ฟังก์ชันคำนวณขนาดล็อตตามเปอร์เซ็นต์ความเสี่ยง

ข้อควรจำ:

  • โค้ดนี้เป็นเพียงโครงร่างและอาจต้องมีการปรับแต่งเพิ่มเติมเพื่อให้เหมาะสมกับความต้องการของคุณ
  • คุณต้องทดสอบ EA อย่างละเอียดในบัญชีทดลองก่อนใช้งานในบัญชีจริง
  • การซื้อขายด้วย EA มีความเสี่ยง และไม่มีกลยุทธ์ใดที่รับประกันผลกำไรได้

   
อ้างอิง

ทิ้งคำตอบไว้

ชื่อผู้แต่ง

อีเมลผู้เขียน

ตำแหน่ง *

You are not allowed to attach files on this forum. It is possible that you have not reached the minimum required number of posts, or your user group does not have permission to attach files in this forum.
 
ดูตัวอย่าง แก้ไข 0 ครั้ง บันทึกแล้ว
แบ่งปัน: