Vizion-Trading-EA/Shared Projects/VizionAI-Trading/VizionAI-Trading-Repo/VizionAI-EA/MarketState.mqh
2026-02-19 23:19:25 -06:00

35 lines
1.2 KiB
MQL5

#ifndef MARKET_STATE_MQH
#define MARKET_STATE_MQH
void UpdateModeAndState()
{
bool stack_bull = (MA_Current[0] > MA_Current[1] && MA_Current[1] > MA_Current[2] && MA_Current[2] > MA_Current[3]);
bool stack_bear = (MA_Current[0] < MA_Current[1] && MA_Current[1] < MA_Current[2] && MA_Current[2] < MA_Current[3]);
double ma_gap_points = MathAbs(MA_Current[0] - MA_Current[3]) / _Point;
bool low_trend_energy = (Current_ADX < 16.0 || ma_gap_points < 80.0);
if((stack_bull || stack_bear) && Current_ADX >= 20.0)
Current_Mode = MODE_TRENDING;
else if(low_trend_energy)
Current_Mode = MODE_CHOP;
else
Current_Mode = MODE_RANGING;
if(Active_Praise_Signals >= Active_Warnings + 2)
Current_State = STATE_CONTINUATION;
else if(Active_Warnings >= Active_Praise_Signals + 2)
Current_State = STATE_REVERSAL;
else
Current_State = STATE_PULLBACK;
// State bias for downstream execution gating.
Current_Bias_Direction = BiasDirection();
double raw = 50.0 + (double)(Active_Praise_Signals - Active_Warnings) * 5.0;
if(Current_Mode == MODE_TRENDING) raw += 10.0;
if(Current_Mode == MODE_CHOP) raw -= 10.0;
State_Bias_Confidence = MathMax(0.0, MathMin(100.0, raw));
}
#endif