diff --git a/Indicators/x-saherelm.xmidtest.mq5 b/Indicators/x-saherelm.xmidtest.mq5 deleted file mode 100644 index eee4d84b..00000000 --- a/Indicators/x-saherelm.xmidtest.mq5 +++ /dev/null @@ -1,238 +0,0 @@ -/////////////////////////////////////////////////////// -// SaherElm IT Center MQL5 Indicator -// ------------------------------------------- -// Name: XMidTest -// Description: DONCHAIN Channel ... -// -// Maintainer: -// ------------ -// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) -// -////////////////////////////////////////////////////// -// -// Global Properties ... -#property copyright "Copyright 2023, SaherElm IT Center" -#property link "https://saherelm.ir" -#property version "1.00" -#property description "SaherElm XMidTest Indicator" -#property strict - -// -// Imports ... -#include "../Classes/Indicators/x-saherelm.mid.class.mq5" - -// -#define ShortName "XMidTest" - -// -#property indicator_chart_window - -// -#property indicator_buffers 1 -#property indicator_plots 1 - -// -// Variables ... -XSCMid *mMid; - -// -#property indicator_type1 DRAW_LINE -double mainBuffer[]; -double mainColorBuffer[]; - -// -// Initialization ... -int OnInit() -{ - // - // Initialize Indicator Class ... - bool isInited = InitIndicatorClass(); - if (!isInited) - { - return INIT_PARAMETERS_INCORRECT; - } - - // - // Define Index Buffers ... - DefineBuffers(); - - // - // Set Indicator ShortName ... - SetIndicatorName(); - - // - // Init Succeed ... - return INIT_SUCCEEDED; -} - -// -// DeInitialization ... -void OnDeinit(const int reason) -{ - // - // REASON_PROGRAM 0 The EA has stopped working calling the ExpertRemove() function - // REASON_REMOVE 1 Program removed from a chart - // REASON_RECOMPILE 2 Program recompiled - // REASON_CHARTCHANGE 3 A symbol or a chart period is changed - // REASON_CHARTCLOSE 4 Chart closed - // REASON_PARAMETERS 5 Inputs changed by a user - // REASON_ACCOUNT 6 Another account has been activated or reconnection to the trade server has occurred due to changes in the account settings - // REASON_TEMPLATE 7 Another chart template applied - // REASON_INITFAILED 8 The OnInit() handler returned a non-zero value - // REASON_CLOSE 9 Terminal closed - - // - mMid.DeInit(reason); - delete mMid; -} - -// -// Calculating what we want ... -int OnCalculate( - const int rates_total, // Total Bars on Chart ... - const int prev_calculated, // Total Calculated Bars on Charts ... - const datetime &time[], // History of Open Time ... - const double &open[], // History of Open Price ... - const double &high[], // History of High Price ... - const double &low[], // History of Low Price ... - const double &close[], // History of Close Price ... - const long &tick_volume[], // History of Tick Volumes on Bar ... - const long &volume[], // History of Trade Volumes ... - const int &spread[] // History of Spread Price ... -) -{ - // - // this counts Available Bars ... - int limit; - - // - // because in some cases we may have more than one input for - // calculation and we must prevent any calculation - // untill we pass the biggest input length, here we get max Input length - // and then wait until pass it ... - int maxLength = mMid.GetInputs().Max(); - - // - int midCalculatedBars = mMid.GetCalculatedBars(); - if (midCalculatedBars < 0) - { - return prev_calculated; - } - - // - limit = (prev_calculated > rates_total || prev_calculated <= 0) ? rates_total : (rates_total - prev_calculated) + 1; - - // - int midMainCopiedItems = mMid.CopyBufferValue( - GetTitle(XSCMID_MAIN_LINE), - mainBuffer, - 0, - limit // - ); - if (midMainCopiedItems <= 0) - { - return prev_calculated; - } - - // - // Main Loop ... - for (int i = limit - 1; i >= 0 && !IsStopped(); i--) - { - CalculateBuffers(i); - } - - // - return rates_total; -} - -// -// CUSTOM Functions ... - -// -// Validate Input Args for Initialization ... -bool InitIndicatorClass() -{ - // - bool result = false; - - // - // Initialize and Prepare - // Inputs of Indicator ... - XSCMidInputs inputs; - result = inputs.Init(); - if (!result) - { - return result; - } - - // - // Instantiate Class ... - mMid = new XSCMid( - _Symbol, - _Period // - ); - - // - // Now Initialize Indicator Class using Given Inputs ... - result = mMid.Init( - inputs // - ); - - // - return result; -} - -// -// Define Indexes and Styles ... -void DefineBuffers() -{ - // - // Start Styling and Indexing Buffers ... - - // - string bufferLabel = GetTitle(XSCMID_MAIN_LINE); - int mainIDX = mMid.GetBufferIndexByLine(XSCMID_MAIN_LINE); - XBuffer mainBufferStruct; - mMid.GetBufferByLine( - XSCMID_MAIN_LINE, - mainBufferStruct // - ); - - // - int bufferIndex = 0; - - // - int max = mMid.GetInputs().Max(); - - // - ArraySetAsSeries(mainBuffer, true); - - // - XBufferPlotStyle mainBufferStyle; - mainBufferStyle.clr = clrAqua; - mainBufferStyle.type = DRAW_LINE; - mainBufferStyle.width = 3; - - // - SetIndexBuffer( - bufferIndex, - mainBuffer, - mainBufferStyle, - mainColorBuffer, - bufferLabel, - true, - EMPTY_VALUE // - ); -} - -// -// Set Indicator Short Name and also we can define Buffers Labels ... -void SetIndicatorName() -{ - IndicatorSetString(INDICATOR_SHORTNAME, ShortName); -} - -// -void CalculateBuffers(int barIndex) -{ -} \ No newline at end of file diff --git a/Libraries/x-saherelm.common.lib.mq5 b/Libraries/x-saherelm.common.lib.mq5 index 4e2b8559..835d0018 100644 --- a/Libraries/x-saherelm.common.lib.mq5 +++ b/Libraries/x-saherelm.common.lib.mq5 @@ -74,7 +74,7 @@ ENUM_SERIESMODE ToSeriesMode(ENUM_X_SWING_TYPE value) int FindSwing( string mSymbol, // Trading Symbol ... ENUM_TIMEFRAMES mPeriod, // Trading Period ... - ENUM_X_SWING_TYPE mode, // Swing Based On Price mode ... + ENUM_X_SWING_TYPE mMode, // Swing Based On Price mode ... int mLength, // Loopback ... int bar_index // BarIndex ... ) @@ -83,7 +83,7 @@ int FindSwing( int result = -1; // - if (StringLen(mSymbol) == 0 || (mode != X_SWING_HIGH && mode != X_SWING_LOW)) + if (StringLen(mSymbol) == 0 || (mMode != X_SWING_HIGH && mMode != X_SWING_LOW)) { return result; } @@ -93,7 +93,7 @@ int FindSwing( int founded = FindNextSwing( mSymbol, mPeriod, - mode, + mMode, (mLength * 2) + 1, current - mLength); @@ -104,7 +104,7 @@ int FindSwing( current = FindNextSwing( mSymbol, mPeriod, - mode, + mMode, mLength, current + 1); @@ -112,7 +112,7 @@ int FindSwing( founded = FindNextSwing( mSymbol, mPeriod, - mode, + mMode, (mLength * 2) + 1, current - mLength); } @@ -129,7 +129,7 @@ int FindSwing( int FindNextSwing( string mSymbol, // Trading Symbol ... ENUM_TIMEFRAMES mPeriod, // Trading Period ... - ENUM_X_SWING_TYPE mode, // Swing Based On Price mode ... + ENUM_X_SWING_TYPE mMode, // Swing Based On Price mode ... int mLength, // Loopback ... int bar_index // BarIndex ... ) @@ -145,10 +145,10 @@ int FindNextSwing( } // - ENUM_SERIESMODE mSeriesMode = ToSeriesMode(mode); + ENUM_SERIESMODE mSeriesMode = ToSeriesMode(mMode); // - result = mode == X_SWING_HIGH + result = mMode == X_SWING_HIGH ? iHighest( mSymbol, mPeriod,