//+------------------------------------------------------------------+ //| ProjectName | //| Copyright 2020, CompanyName | //| http://www.companyname.net | //+------------------------------------------------------------------+ // // Imports ... #include "../Classes/XCObjects/x-saherelm.x-panel.class.mq5" #include // CTrade trade; // string mTag; // XCPanel eaSignallingPanel; string eaSignallingPanelName; XCButton eaSignallingBtn; string eaSignallingBtnName; XCButton eaSignallingLongBtn; string eaSignallingLongBtnName; XCButton eaSignallingShortBtn; string eaSignallingShortBtnName; // bool eaEnableLongs = true; bool eaEnableShorts = true; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { // mTag = "XPanel"; if (!InitialGUI()) { return INIT_FAILED; } // return (INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { DestroyGUI(); } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { // UpdateGUI(); } //+------------------------------------------------------------------+ //|Chart event handling function | //+------------------------------------------------------------------+ void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) { // // Handle Object Movement ... eaSignallingPanel.OnEvent(id, lparam, dparam, sparam); // // Handle OnClick Event ... if (id == CHARTEVENT_OBJECT_CLICK) { HandleOnClickEvent(sparam); } } //+------------------------------------------------------------------+ /** * Initial GUI ... * * @return ( bool ) */ bool InitialGUI() { // bool result = false; // result = InitSignallingGUI(); if (!result) { return result; } // ChartRedraw(0); // return result; } /** * Update GUI Content ... */ void UpdateGUI() { // UpdateSignallingGUI(); } /** * Initialize State and Signalling GUI ... * * @return ( bool ) */ bool InitSignallingGUI() { // bool result = false; // eaSignallingPanelName = mTag + "SIGNALLING"; // // Create a Panel ... result = eaSignallingPanel.Create( eaSignallingPanelName, 10, 40, 300, 50 // ); if (!result) { return result; } eaSignallingPanel.Caption("Signalling"); // // Create Activation Button ... string eaSignallingPrefix = eaSignallingPanelName + "_State_"; // // Signalling ... eaSignallingBtnName = eaSignallingPrefix + "btn"; result = eaSignallingBtn.Create( eaSignallingBtnName, 10, 60, 300, 25 // ); if (!result) { return result; } eaSignallingBtn.SetText(""); eaSignallingPanel.Add(eaSignallingBtnName); // // Long Signalling ... eaSignallingLongBtnName = eaSignallingPrefix + "_Long_btn"; result = eaSignallingLongBtn.Create( eaSignallingLongBtnName, 10, 85, 150, 25 // ); if (!result) { return result; } eaSignallingLongBtn.SetText(""); eaSignallingPanel.Add(eaSignallingLongBtnName); // // Short Signalling ... eaSignallingShortBtnName = eaSignallingPrefix + "_Short_btn"; result = eaSignallingShortBtn.Create( eaSignallingShortBtnName, 160, 85, 150, 25 // ); if (!result) { return result; } eaSignallingShortBtn.SetText(""); eaSignallingPanel.Add(eaSignallingShortBtnName); // UpdateSignallingGUI(); // return result; } /** * Update Signalling GUI Content ... */ void UpdateSignallingGUI() { // // Preparing State ... bool isSignallingActive = eaEnableLongs || eaEnableShorts; // // All Signalls ... color mSignallingBtnTextColor = isSignallingActive ? clrRed : clrGreen; string mSignallingBtnText = isSignallingActive ? "Deactive" : "Active"; eaSignallingBtn.SetText(mSignallingBtnText); eaSignallingBtn.SetColor(mSignallingBtnTextColor); // // Long Signals ... color mSignallingLongBtnTextColor = eaEnableLongs ? clrRed : clrGreen; string mSignallingLongBtnText = eaEnableLongs ? "Deactive Longs" : "Active Longs"; eaSignallingLongBtn.SetText(mSignallingLongBtnText); eaSignallingLongBtn.SetColor(mSignallingLongBtnTextColor); // // Short Signals ... color mSignallingShortBtnTextColor = eaEnableShorts ? clrRed : clrGreen; string mSignallingShortBtnText = eaEnableShorts ? "Deactive Shorts" : "Active Shorts"; eaSignallingShortBtn.SetText(mSignallingShortBtnText); eaSignallingShortBtn.SetColor(mSignallingShortBtnTextColor); } /** * Destroy GUI ... */ void DestroyGUI() { // eaSignallingBtnName = NULL; eaSignallingLongBtnName = NULL; eaSignallingShortBtnName = NULL; // eaSignallingPanel.Destroy(); eaSignallingBtn.Destroy(); eaSignallingLongBtn.Destroy(); eaSignallingShortBtn.Destroy(); } /** * Handle Object's Click Events ... * * @param name: Clicked Object Name */ void HandleOnClickEvent(string name) { // if (!IsValid(name)) { return; } // // State Button ... bool isClicked = false; if (name == eaSignallingBtnName) { // isClicked = true; HandleChangeState(); eaSignallingBtn.SetState(false); Print("State Button Clicked ..."); } // else if (name == eaSignallingLongBtnName) { // isClicked = true; HandleChangeLongsState(); eaSignallingLongBtn.SetState(false); Print("Long State Button Clicked ..."); } // else if (name == eaSignallingShortBtnName) { // isClicked = true; HandleChangeShortsState(); eaSignallingShortBtn.SetState(false); Print("Short State Button Clicked ..."); } // if (isClicked) { UpdateGUI(); } } // // GUI EVENT Handlers ... /** * Toggle Signalling State ... */ void HandleChangeState() { // bool isActive = eaEnableLongs || eaEnableShorts; // if (isActive) { // eaEnableLongs = false; eaEnableShorts = false; } else { // eaEnableLongs = true; eaEnableShorts = true; } } /** * Toggle Longs Signalling State ... */ void HandleChangeLongsState() { eaEnableLongs = !eaEnableLongs; } /** * Toggle Shorts Signalling State ... */ void HandleChangeShortsState() { eaEnableShorts = !eaEnableShorts; } //