#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; } }