Files
Bell-PriceActionWithEma-EA/Experts/EA_ICT_CL/State.mqh
T

88 lines
3.3 KiB
Plaintext
Raw Normal View History

2026-03-10 13:47:42 +07:00
#ifndef EA_ICT_CL__STATE_MQH
2026-03-10 19:28:06 +07:00
#define EA_ICT_CL__STATE_MQH // Tránh include trùng
2026-03-10 13:47:42 +07:00
2026-03-10 19:28:06 +07:00
// Module: State enums và struct dùng chung toàn EA
2026-03-10 13:47:42 +07:00
//====================================================
// ENUMS
//====================================================
enum EAState
{
2026-03-10 19:28:06 +07:00
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
2026-03-10 13:47:42 +07:00
};
2026-03-10 19:28:06 +07:00
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
2026-03-10 13:47:42 +07:00
enum BlockReason
{
2026-03-10 19:28:06 +07:00
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
2026-03-10 13:47:42 +07:00
};
enum FVGStatus
{
2026-03-10 19:28:06 +07:00
FVG_PENDING, // Chưa bị giá chạm
FVG_TOUCHED, // Đã chạm, chờ MSS
FVG_USED // Đã dùng (broken/expired/triggered)
2026-03-10 13:47:42 +07:00
};
//====================================================
// STRUCTS
//====================================================
struct BiasContext
{
2026-03-10 19:28:06 +07:00
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)
2026-03-10 13:47:42 +07:00
};
struct TFTrendContext
{
2026-03-10 19:28:06 +07:00
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)
2026-03-10 13:47:42 +07:00
2026-03-10 19:28:06 +07:00
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)
2026-03-10 13:47:42 +07:00
};
struct FVGRecord
{
2026-03-10 19:28:06 +07:00
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)
2026-03-10 13:47:42 +07:00
2026-03-10 19:28:06 +07:00
datetime mssTime; // Thời điểm MSS (nếu usedCase==2)
double mssEntry; // Entry level từ MSS
double mssSL; // SL level từ MSS
2026-03-10 13:47:42 +07:00
};
struct OrderPlan
{
2026-03-10 19:28:06 +07:00
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)
2026-03-10 13:47:42 +07:00
};
struct DailyRiskContext
{
2026-03-10 19:28:06 +07:00
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
2026-03-10 13:47:42 +07:00
};
#endif // EA_ICT_CL__STATE_MQH