Files
Bell-PriceActionWithEma-EA/Experts/EA_ICT_CL/State.mqh
T
2026-03-10 19:28:06 +07:00

88 lines
3.3 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#ifndef EA_ICT_CL__STATE_MQH
#define EA_ICT_CL__STATE_MQH // Tránh include trùng
// Module: State enums và struct dùng chung toàn EA
//====================================================
// ENUMS
//====================================================
enum EAState
{
EA_IDLE, // Chờ chọn FVG tốt nhất
EA_WAIT_TOUCH, // Chờ giá chạm vào vùng FVG
EA_WAIT_TRIGGER, // Đã touch FVG, chờ M5 MSS
EA_IN_TRADE // Đã gửi pending / đang giữ position
};
enum HTFBias { BIAS_NONE=0, BIAS_UP=1, BIAS_DOWN=-1, BIAS_SIDEWAY=2 }; // Bias D1
enum MarketDir { DIR_NONE=0, DIR_UP=1, DIR_DOWN=-1 }; // Hướng trend H1/M5
enum BlockReason
{
BLOCK_NONE, BLOCK_SESSION, BLOCK_DAILY_LOSS, // Không chặn / chặn session / chặn daily loss
BLOCK_BIAS_MISMATCH, BLOCK_NO_BIAS // Bias không khớp H1 / không có bias
};
enum FVGStatus
{
FVG_PENDING, // Chưa bị giá chạm
FVG_TOUCHED, // Đã chạm, chờ MSS
FVG_USED // Đã dùng (broken/expired/triggered)
};
//====================================================
// STRUCTS
//====================================================
struct BiasContext
{
HTFBias bias; // UP/DOWN/SIDEWAY/NONE
double rangeHigh, rangeLow; // Vùng sideway (nếu có)
datetime lastBarTime; // Thời gian bar D1 đã xử lý (tránh cập nhật trùng)
};
struct TFTrendContext
{
MarketDir trend; // DIR_UP / DIR_DOWN / DIR_NONE
double h0, h1, l0, l1; // Giá 2 swing high, 2 swing low gần nhất
int idxH0, idxH1, idxL0, idxL1; // Chỉ số bar tương ứng
double keyLevel; // Mức key (l0 hoặc h0 tùy trend)
datetime lastBarTime; // Bar đã cập nhật (tránh cập nhật lại mỗi tick)
datetime lastMssTime; // Thời gian MSS gần nhất (chỉ M5)
double lastMssLevel; // Giá entry MSS (tH0 hoặc tL0)
MarketDir lastMssBreak; // Hướng break (UP/DOWN)
double mssSLSwing; // Giá SL tương ứng (tL0 hoặc tH0)
};
struct FVGRecord
{
int id; // ID FVG trong pool
FVGStatus status; // PENDING / TOUCHED / USED
int usedCase; // 0=expired, 1=broken, 2=triggered by MSS
MarketDir direction; // DIR_UP (bull FVG) / DIR_DOWN (bear FVG)
double high, low, mid; // Vùng gap và điểm giữa
datetime createdTime; // Thời điểm tạo FVG
datetime touchTime; // Thời điểm giá chạm (nếu TOUCHED)
datetime usedTime; // Thời điểm chuyển USED
MarketDir triggerTrendAtTouch; // Trend M5 lúc touch (debug)
datetime mssTime; // Thời điểm MSS (nếu usedCase==2)
double mssEntry; // Entry level từ MSS
double mssSL; // SL level từ MSS
};
struct OrderPlan
{
bool valid; // Plan có hợp lệ không
int direction; // +1 buy, -1 sell
double entry, stopLoss, takeProfit, lot; // Giá và khối lượng
int parentFVGId; // ID FVG gốc (để trace)
};
struct DailyRiskContext
{
double startBalance, currentBalance; // Balance đầu ngày và hiện tại
datetime dayStartTime; // Mốc đầu ngày D1
bool limitHit; // Đã chạm max daily loss chưa
};
#endif // EA_ICT_CL__STATE_MQH