Liquidity_Predator/Strategy/M_StateMachine.mqh
2026-04-30 16:53:46 +02:00

68 lines
1.7 KiB
MQL5

#include "M_SM_LIQUIDITY_ACTIVATED.mqh"
#include "M_SM_S1_WAIT_FVG_CREATED.mqh"
#include "M_SM_S1_WAIT_FVG_INVERTED_LONG.mqh"
#include "M_SM_S1_WAIT_FVG_INVERTED_SHORT.mqh"
#include "M_SM_S1_WAIT_TRADE_ACTIVATED.mqh"
#include "M_SM_WAIT_FVG_INVERTED_LONG.mqh"
#include "M_SM_WAIT_FVG_INVERTED_SHORT.mqh"
#include "M_SM_IN_TRADE.mqh"
#include "M_SM_RESET.mqh"
void M_StateMachine()
{
switch(stGVL.nStateMachine)
{
case SM_WAIT_FOR_START:
break;
case SM_LIQUIDITY_ACTIVATED:
M_SM_LIQUIDITY_ACTIVATED();
break;
case SM_WAIT_FVG_INVERTED:
if(stGVL.eCurrentDirection == DIR_LONG)
{
M_SM_WAIT_FVG_INVERTED_LONG();
}
else
{
M_SM_WAIT_FVG_INVERTED_SHORT();
}
break;
case SM_S1_WAIT_FVG_CREATED:
M_SM_S1_WAIT_FVG_CREATED();
break;
case SM_S1_WAIT_FVG_INVERTED:
if(stGVL.eCurrentDirection == DIR_LONG)
{
M_SM_S1_WAIT_FVG_INVERTED_LONG();
}
else
{
M_SM_S1_WAIT_FVG_INVERTED_SHORT();
}
break;
case SM_S1_WAIT_TRADE_ACTIVATED:
M_SM_S1_WAIT_TRADE_ACTIVATED();
break;
case SM_IN_TRADE:
M_SM_IN_TRADE();
break;
case SM_RESET:
M_SM_RESET();
break;
}
E_STATEMACHINE nST = stGVL.nStateMachine;
E_STATEMACHINE nST_LAST = stGVL.nLASTStateMachine;
if(stGVL.nLASTStateMachine != stGVL.nStateMachine)
{
M_LogInfo("Statemachine changed to " + EnumToString(stGVL.nStateMachine));
stGVL.nLASTStateMachine = stGVL.nStateMachine;
}
}