#ifndef WARRIOR_GLOBAL_ENUMS_MQH #define WARRIOR_GLOBAL_ENUMS_MQH enum ENUM_SIGNAL { Buy, Sell, Neutral, Undefine }; //+------------------------------------------------------------------+ //| CONTROL-PANEL VOCABULARY. | //| | //| Lives here rather than in Panel\ControlPanel.mqh because the | //| Expert base classes have to name these types, and the panel is | //| included long after them in Warrior_EA.mq5's include order. | //+------------------------------------------------------------------+ //--- The BUTTONS. One action per click; the EA consumes it right after ExtPanel.ChartEvent(). enum ENUM_CP_ACTION { CP_ACTION_NONE, CP_ACTION_TOGGLE_SIGNALS, CP_ACTION_TOGGLE_PAUSE, CP_ACTION_TOGGLE_STOP, //--- one button, both directions: deploy the trained model as final, or put an already-deployed //--- model back into training (the EA decides which from the signals' own state - see //--- HandleControlPanelAction/RefreshControlPanelLabels in Warrior_EA.mq5) CP_ACTION_TOGGLE_DEPLOY, CP_ACTION_SAVE, CP_ACTION_LOAD, CP_ACTION_RESET, CP_ACTION_REPORT, CP_ACTION_RESET_DB }; //--- What a SIGNAL is told to do, which is deliberately not the same list as the buttons above. Three //--- of those buttons are TOGGLES whose direction depends on the current aggregate state; resolving //--- that once in the EA and then telling every signal plainly what to do is what stops each signal //--- re-deriving the direction from its own local state and reaching a different answer. enum ENUM_SIGNAL_COMMAND { SIGCMD_PAUSE_TRAINING, SIGCMD_RESUME_TRAINING, SIGCMD_STOP_TRAINING, SIGCMD_START_TRAINING, SIGCMD_DEPLOY, SIGCMD_RETRAIN_DEPLOYED, SIGCMD_SAVE_WEIGHTS, SIGCMD_LOAD_WEIGHTS, SIGCMD_RESET_WEIGHTS, SIGCMD_RESCAN_SIGNALS, //--- Diagnostic: print one identity line each. The census before a destructive action has to //--- describe the SAME population the action will reach, so it walks the same tree. SIGCMD_REPORT_IDENTITY }; //--- What the panel needs to ASK of the signal tree to label its buttons. Counted, never assumed: //--- "all paused" is only meaningful against how many signals could be paused at all. enum ENUM_SIGNAL_TRAIT { SIGTRAIT_TRAINABLE, // this signal owns a model that trains - the denominator SIGTRAIT_TRAINING_PAUSED, SIGTRAIT_TRAINING_STOPPED, SIGTRAIT_TRAINING_COMPLETE, SIGTRAIT_DEPLOY_SKIPS_RECALL, // deploying now would ship a model that ignores Buy or Sell SIGTRAIT_RESCAN_PENDING }; #endif