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

71 lines
2.4 KiB
MQL5

#ifndef PRAISE_MQH
#define PRAISE_MQH
void DetectPraiseSignals()
{
Praise_Triple_Magnet = false;
Praise_Power_Couple = false;
Praise_MFIB_Staircase = false;
Praise_MFIB_Express = false;
Praise_MFIB_Breakout = false;
Praise_MA_Stack = false;
Praise_Clean_Reclaim = false;
Praise_Multi_Breakout = false;
double current = MidPrice();
// 1) 7/14/21 Triple magnet hold.
if(Current_ATR > 0.0)
{
double d7 = MathAbs(current - MA_Current[0]) / Current_ATR;
double d14 = MathAbs(current - MA_Current[1]) / Current_ATR;
double d21 = MathAbs(current - MA_Current[2]) / Current_ATR;
if(d7 < 0.5 && d14 < 0.7 && d21 < 0.9 && !Band_Snap_Warning)
Praise_Triple_Magnet = true;
}
// 2) 14/21 power couple.
if(Current_ATR > 0.0 && (MathAbs(MA_Current[1] - MA_Current[2]) / Current_ATR) < 0.3)
Praise_Power_Couple = true;
// 3) MFIB staircase.
if((NearLevel(current, MFIB_Level_382, MA_Touch_Buffer) || NearLevel(current, MFIB_Level_618, MA_Touch_Buffer)) && !MFIB_Reject_Warning)
Praise_MFIB_Staircase = true;
// 4) MFIB express.
if(Current_ADX > 25.0 && (MathAbs(MFIB_Level_786 - MFIB_Level_382) / _Point) > 100)
Praise_MFIB_Express = true;
// 5) MFIB breakout hold.
if(MFIB_Break_Confirmed && !MFIB_Reject_Warning)
Praise_MFIB_Breakout = true;
// 6) MA stack perfection.
bool stack_bull = (MA_Current[0] > MA_Current[1] && MA_Current[1] > MA_Current[2] && MA_Current[2] > MA_Current[3] && MA_Current[3] > MA_Current[4]);
bool stack_bear = (MA_Current[0] < MA_Current[1] && MA_Current[1] < MA_Current[2] && MA_Current[2] < MA_Current[3] && MA_Current[3] < MA_Current[4]);
if(stack_bull || stack_bear)
Praise_MA_Stack = true;
// 7) Clean reclaim sequence.
if(MFIB_Reclaim_Warning && MA_Reclaim_Warning && Fib_Reclaim_Warning)
Praise_Clean_Reclaim = true;
// 8) Multi-level breakout.
if(MFIB_Break_Confirmed && Fib_Break_Confirmed && MA_Break_Warning)
Praise_Multi_Breakout = true;
Praise_Count = 0;
if(Praise_Triple_Magnet) Praise_Count++;
if(Praise_Power_Couple) Praise_Count++;
if(Praise_MFIB_Staircase) Praise_Count++;
if(Praise_MFIB_Express) Praise_Count++;
if(Praise_MFIB_Breakout) Praise_Count++;
if(Praise_MA_Stack) Praise_Count++;
if(Praise_Clean_Reclaim) Praise_Count++;
if(Praise_Multi_Breakout) Praise_Count++;
// Bridge into existing orchestrator counters.
Active_Praise_Signals += Praise_Count;
}
#endif