/////////////////////////////////////////////////////// // // SaherElm IT Center MQL5 Helper Class Library // ---------------------------------------------- // Name: XSCXMANHelper // Description: provides all Indicator // Helper requirements ... // // // Maintainer: // ------------ // Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com) // ////////////////////////////////////////////////////// // // Global Properties ... #property library #property copyright "Copyright 2023, SaherElm IT Center" #property link "https://www.saherelm.ir" #property version "1.00" #property strict // // START Definitions ... // // #include "../Libraries/x-saherelm.xman.parser.lib.mq5" // // All Extractable Buffers ... enum ENUM_XMAN_BUFFERS { // // Peaks and Vales ... XMAN_PEAKS_LINE = 0, // Peaks XMAN_VALES_LINE = 1, // Vales XMAN_PEAKS_STATE_LINE = 74, // New Peak XMAN_VALES_STATE_LINE = 75, // New Vales // // Fibonacci Retracement ... XMAN_FIB_L1_LINE = 6, // Fibo Level 1 XMAN_FIB_L2_LINE = 8, // Fibo Level 2 XMAN_FIB_L3_LINE = 10, // Fibo Level 3 XMAN_FIB_L4_LINE = 12, // Fibo Level 3 XMAN_FIB_L5_LINE = 14, // Fibo Level 3 // // Period Cycles ... // // Short Cycle ... XMAN_SC_HH_LINE = 16, // High XMAN_SC_LL_LINE = 18, // Low XMAN_SC_HH_STATE_LINE = 76, // High State XMAN_SC_LL_STATE_LINE = 77, // Low State // // Medium ... XMAN_MC_HH_LINE = 20, // High XMAN_MC_LL_LINE = 22, // Low XMAN_MC_HH_STATE_LINE = 78, // High State XMAN_MC_LL_STATE_LINE = 79, // Low State // // Long ... XMAN_LC_HH_LINE = 24, // High XMAN_LC_LL_LINE = 26, // Low XMAN_LC_HH_STATE_LINE = 80, // High State XMAN_LC_LL_STATE_LINE = 81, // Low State // // Hind ... XMAN_HC_HH_LINE = 28, // High XMAN_HC_LL_LINE = 30, // Low XMAN_HC_HH_STATE_LINE = 82, // High State XMAN_HC_LL_STATE_LINE = 83, // Low State // // XSTR ... XMAN_TREND_LINE = 34, // Trend Value XMAN_TREND_STATE_LINE = 84, // Trend Direction // // XMRB ... // // RIBBON 1 _ HIGH ... XMAN_RB1_LINE = 36, // Value XMAN_RB1_STATE_LINE = 85, // State // // RIBBON 2 _ OPEN ... XMAN_RB2_LINE = 38, // Value XMAN_RB2_STATE_LINE = 86, // State // // RIBBON 3 _ CLOSE ... XMAN_RB3_LINE = 40, // Value XMAN_RB3_STATE_LINE = 87, // State // // RIBBON 4 _ MEDIAN ... XMAN_RB4_LINE = 42, // Value XMAN_RB4_STATE_LINE = 88, // State // // RIBBON 5 _ TYPICAL ... XMAN_RB5_LINE = 44, // Value XMAN_RB5_STATE_LINE = 89, // State // // RIBBON 6 _ LOW ... XMAN_RB6_LINE = 46, // Value XMAN_RB6_STATE_LINE = 90, // State // // XSSLC ... XMAN_SSLC_UP_LINE = 48, // Up XMAN_SSLC_DOWN_LINE = 50, // Down // // XHULL ... XMAN_HULL_UP_LINE = 52, // Up XMAN_HULL_DOWN_LINE = 54, // Down XMAN_HULL_UP_STATE_LINE = 91, // Up State XMAN_HULL_DOWN_STATE_LINE = 92, // Down State // // XHK ... XMAN_HK_OPEN_LINE = 56, // Open XMAN_HK_HIGH_LINE = 57, // High XMAN_HK_LOW_LINE = 58, // Low XMAN_HK_CLOSE_LINE = 59, // Close XMAN_HK_STATE_LINE = 93, // State // // XSMHK ... XMAN_SMHK_OPEN_LINE = 61, // Open XMAN_SMHK_HIGH_LINE = 62, // High XMAN_SMHK_LOW_LINE = 63, // Low XMAN_SMHK_CLOSE_LINE = 64, // Close }; // // Define States On XMAN ... enum ENUM_XMAN_STATES { XMAN_STATE_BULLISH = 2, XMAN_STATE_STRONG_BULLISH = 8, XMAN_STATE_BEARISH = 3, XMAN_STATE_STRONG_BEARISH = 9, XMAN_STATE_NEUTURAL = 1, XMAN_STATE_STRONG_NEUTURAL = 7, }; // // Model all required info as a Model for Instancing Helper Class ... struct XMANInputs { // // Candle Timer ... color candleTimerColor; // Text Color ENUM_BASE_CORNER candleTimerCorner; // Text Position // // Chart Style ... color upColor; // Up Color color downColor; // Down Color color lineColor; // Line mode and Doji candlestick Color color bearishColor; // Bullish Color color bullishColor; // Bearish Color color volumesColor; // Volumes Color ENUM_CHART_MODE chartMode; // Chart Mode // // Market Cycles ... // // Level 1 ... ENUM_X_PERIOD_METHOD l1Method; // How to Find Period ENUM_TIMEFRAMES l1Period; // Time Period // // Level 2 ... ENUM_X_PERIOD_METHOD l2Method; // How to Find Period ENUM_TIMEFRAMES l2Period; // Time Period // // Level 3 ... ENUM_X_PERIOD_METHOD l3Method; // How to Find Period ENUM_TIMEFRAMES l3Period; // Time Period // // Level 4 ... ENUM_X_PERIOD_METHOD l4Method; // How to Find Period ENUM_TIMEFRAMES l4Period; // Time Period // // Fibonacci ... double fiboLevel1; // Fibio 1st Level double fiboLevel2; // Fibio 2st Level double fiboLevel3; // Fibio 3rd Level double fiboLevel4; // Fibio 4th Level double fiboLevel5; // Fibio 5th Level // // Boundary Detection Modes ... ENUM_SERIESMODE hhMode; // Highest High Calculation Method ENUM_SERIESMODE llMode; // Lowest Low Calculation Method // // Trend Detection double trendMultiplier; // Multiplier ENUM_APPLIED_PRICE trendPriceAppliedTo; // Applied To // // Ribbon Detection ... ENUM_X_MA_METHOD ribbonMode; // How to Calculate // // Hull Trend Detection ... double hullDivisor; // Divisor (Speed) ENUM_APPLIED_PRICE hullUpAppliedTo; // Up Zone Applied to ENUM_APPLIED_PRICE hullDownAppliedTo; // Down Zone Applied to // // SSL Channel Detection ... ENUM_X_MA_METHOD sslcMode; // How to Calculate ENUM_APPLIED_PRICE sslcUpAppliedTo; // Up Applied To ENUM_APPLIED_PRICE sslcDownAppliedTo; // Down Applied To // // Presentation ... bool showCandleTimer; // Show Candle Time bool showCandles; // Show Candles bool showHKCandles; // Draw Hiken Ashi Candle bool showSMHKCandles; // Draw Smoothed Hiken Ashi Candle bool showPeaksAndVales; // Show Peaks and Vales bool showTrends; // Show Trends bool fillTrends; // Fill Trends bool showLevels; // Show Levels bool showConsolidations; // Show Consolidations bool showRibbons; // Show Ribbons bool showHull; // Show Hull bool showSSLChannel; // Show SSL Channel bool showFibo1Levels; // Show Fibo 1st Level bool showFibo2Levels; // Show Fibo 2nd Level bool showFibo3Levels; // Show Fibo 3rd Level bool showFibo4Levels; // Show Fibo 4th Level bool showFibo5Levels; // Show Fibo 5th Level }; // // Model all Extractable Info as a Model for Market Analyzing ... struct XMANInfo { // // COMMONS ... // // Symbol ... string symbol; // // Period ... ENUM_TIMEFRAMES period; // // Bar Time ... datetime barTime; // // Bar Index ... int barIndex; // // SPECIALS ... // // Buffers ... // // Peaks and Vales ... double peaks[]; double peaksStates[]; double vales[]; double valesStates[]; // // Fibonacci ... double fibLevel1s[]; double fibLevel2s[]; double fibLevel3s[]; double fibLevel4s[]; double fibLevel5s[]; // // Cycles ... // // Short ... double sHHs[]; double sHHStates[]; double sLLs[]; double sLLStates[]; // // Medium ... double mHHs[]; double mHHStates[]; double mLLs[]; double mLLStates[]; // // Long ... double lHHs[]; double lHHStates[]; double lLLs[]; double lLLStates[]; // // Hind ... double hHHs[]; double hHHStates[]; double hLLs[]; double hLLStates[]; // // Trends ... double trends[]; double trendStates[]; // // Ribbons ... // // 1 _ High ... double ribbon1s[]; double ribbon1States[]; // // 2 _ Open ... double ribbon2s[]; double ribbon2States[]; // // 3 _ Close ... double ribbon3s[]; double ribbon3States[]; // // 4 _ Median ... double ribbon4s[]; double ribbon4States[]; // // 5 _ Typical ... double ribbon5s[]; double ribbon5States[]; // // 6 _ Low ... double ribbon6s[]; double ribbon6States[]; // // SSL Channel ... double sslcUps[]; double sslcDowns[]; // // Hull Trend ... double hullUps[]; double hullUpStates[]; double hullDowns[]; double hullDownStates[]; // // Hiken Ashi ... double hkOpens[]; double hkHighs[]; double hkLows[]; double hkCloses[]; double hkStates[]; // // Smoothed Hiken Ashi ... double smhkOpens[]; double smhkHighs[]; double smhkLows[]; double smhkCloses[]; }; // // END Definitions ... // // // START Import and Inclused requirements ... // // // Includes ... #include "../Libraries/x-saherelm.common.lib.mq5" #include "../Classes/x-saherelm.xhelper.class.mq5" // // END Import and Inclused requirements ... // // // START Overrides ... // // // END Overrides ... // // class XSCXMANHelper : public XSCBaseHelper { // // Public ... public: // // Props ... // // Peaks and Vales ... double peaksBuffer[]; double peaksStateBuffer[]; double valesBuffer[]; double valesStateBuffer[]; // // Fibonacci ... double fibLevel1Buffer[]; double fibLevel2Buffer[]; double fibLevel3Buffer[]; double fibLevel4Buffer[]; double fibLevel5Buffer[]; // // Cycles ... // // Short ... double sHHBuffer[]; double sHHStateBuffer[]; double sLLBuffer[]; double sLLStateBuffer[]; // // Medium ... double mHHBuffer[]; double mHHStateBuffer[]; double mLLBuffer[]; double mLLStateBuffer[]; // // Long ... double lHHBuffer[]; double lHHStateBuffer[]; double lLLBuffer[]; double lLLStateBuffer[]; // // Hind ... double hHHBuffer[]; double hHHStateBuffer[]; double hLLBuffer[]; double hLLStateBuffer[]; // // Trends ... double trendBuffer[]; double trendStateBuffer[]; // // Ribbons ... // // 1 _ High ... double ribbon1Buffer[]; double ribbon1StateBuffer[]; // // 2 _ Open ... double ribbon2Buffer[]; double ribbon2StateBuffer[]; // // 3 _ Close ... double ribbon3Buffer[]; double ribbon3StateBuffer[]; // // 4 _ Median ... double ribbon4Buffer[]; double ribbon4StateBuffer[]; // // 5 _ Typical ... double ribbon5Buffer[]; double ribbon5StateBuffer[]; // // 6 _ Low ... double ribbon6Buffer[]; double ribbon6StateBuffer[]; // // SSL Channel ... double sslUpBuffer[]; double sslDownBuffer[]; // // Hull Trend ... double hullUpBuffer[]; double hullUpStateBuffer[]; double hullDownBuffer[]; double hullDownStateBuffer[]; // // Hiken Ashi ... double hkOpenBuffer[]; double hkHighBuffer[]; double hkLowBuffer[]; double hkCloseBuffer[]; double hkStateBuffer[]; // // Smoothed Hiken Ashi ... double smhkOpenBuffer[]; double smhkHighBuffer[]; double smhkLowBuffer[]; double smhkCloseBuffer[]; // // Constructor ... void XSCXMANHelper( string symbol, // Trading Symbol ENUM_TIMEFRAMES period // Trading Time Frame ) : XSCBaseHelper(symbol, period) { PrepareTag(); } // // Deconstructor ... void ~XSCXMANHelper() { } // // START Properties ... // // // END Properties ... // // // START Provided Functions ... // // // Prepare Tag ... virtual void PrepareTag() { mTag = "XMAN" + GetTagPrefix(); } // virtual int GetMaxLength() { // int result = 1; // result = 1; // return result; } // // Initial Indicator Handler ... bool Init() { // bool result = false; // // Validate Args ... result = // // L1 ... // Short Cycle ... ( // mL1Method == X_PERIOD_AUTO ? mL1Period == NULL : mL1Period != NULL && mL1Method != X_PERIOD_NOTHING // ) // && // // L2 ... // Medium Cycle ... ( // mL2Method == X_PERIOD_AUTO ? mL2Period == NULL : mL2Period != NULL && mL2Method != X_PERIOD_NOTHING // ) // && // // L3 ... // Long Cycle ... ( // mL3Method == X_PERIOD_AUTO ? mL3Period == NULL : mL3Period != NULL && mL3Method != X_PERIOD_NOTHING // ) // && // // L4 ... // Hind Cycle ... ( // mL4Method == X_PERIOD_AUTO ? mL4Period == NULL : mL4Period != NULL && mL4Method != X_PERIOD_NOTHING // ) // && // // Validate Ribbon ... ( // mRibbonMode != X_MA_NOTHING // ) // ; if (!result) { return false; } // // Now we Have to Generate Proper Configs of Inputs ... // to bypass into iCustom ... // // Candle Timer ... string ctConfig = GenerateCTimerConfig( mCandleTimerColor, mCandleTimerCorner); // // Chart Style ... string chStyleConfig = GenerateChartStyleConfig( mUpColor, mDownColor, mLineColor, mBearishColor, mBullishColor, mVolumesColor, mChartMode); // // Market Cycles ... // // SHORT ... string scConfig = GenerateSCConfig( mL1Method, mL1Period); // // MEDIUM ... string mcConfig = GenerateMCConfig( mL2Method, mL2Period); // // LONG ... string lcConfig = GenerateLCConfig( mL3Method, mL3Period); // // HIND ... string hcConfig = GenerateHCConfig( mL4Method, mL4Period); // // Fibonacci ... string fiboConfig = GenerateFibonacciConfig( mFiboLevel1, mFiboLevel2, mFiboLevel3, mFiboLevel4, mFiboLevel5); // // Boundary Detection ... string bdConfig = GenerateBDConfig( mHHMode, mLLMode); // // Trend Detection ... string tdConfig = GenerateTDConfig( mTrendMultiplier, mTrendPriceAppliedTo); // // Ribbon ... string rbConfig = GenerateRBConfig( mRibbonMode); // // Hull Trend ... string hullConfig = GenerateHullConfig( mHullDivisor, mHullUpAppliedTo, mHullDownAppliedTo); // // SSL Channel ... string sslcConfig = GenerateSSLCConfig( mSslcMode, mSslcUpAppliedTo, mSslcDownAppliedTo); // // Presentations ... // // STYLES ... string stylesPRSConfig = GenerateStylePresentationConfig( mShowCandleTimer, mShowCandles, mShowHKCandles, mShowSMHKCandles); // // PEAKSANDVALES ... string pvPRSConfig = GeneratePVPresentationConfig( mShowPeaksAndVales, mShowLevels, mShowConsolidations); // // TREND ... string trendPRSConfig = GenerateTrendPresentationConfig( mShowTrends, mFillTrends, mShowRibbons, mShowHull, mShowSSLChannel); // // FIBO ... string fiboPRSConfig = GenerateFiboPresentationConfig( mShowFibo1Levels, mShowFibo2Levels, mShowFibo3Levels, mShowFibo4Levels, mShowFibo5Levels); // // Initialize Handler ... mHandler = iCustom( // mSymbol, mPeriod, "x-saherelm.x121.xman", // // Inputs ... // // Candle Timer "", ctConfig, // // Chart Style "", chStyleConfig, // // Makret Cycles "", // // Short "", scConfig, // // Medium "", mcConfig, // // Long "", lcConfig, // // Hind "", hcConfig, // // Fibonacci "", fiboConfig, // // Boundary Detection Modes "", bdConfig, // // Trend Detection "", tdConfig, // // Ribbon Detection "", rbConfig, // // Hull Trend Detection "", hullConfig, // // SSL Channel "", sslcConfig, // // Presentations "", // // STYLES stylesPRSConfig, // // PEAKSANDVALES pvPRSConfig, // // TREND trendPRSConfig, // // FIBO fiboPRSConfig // ); result = mHandler != INVALID_HANDLE; // return result; } // // Retrieve Current Config ... XMANInputs GetConfig() { // XMANInputs result; // result.candleTimerColor = mCandleTimerColor; result.candleTimerCorner = mCandleTimerCorner; result.upColor = mUpColor; result.downColor = mDownColor; result.lineColor = mLineColor; result.bearishColor = mBearishColor; result.bullishColor = mBullishColor; result.volumesColor = mVolumesColor; result.chartMode = mChartMode; result.l1Method = mL1Method; result.l1Period = mL1Period; result.l2Method = mL2Method; result.l2Period = mL2Period; result.l3Method = mL3Method; result.l3Period = mL3Period; result.l4Method = mL4Method; result.l4Period = mL4Period; result.fiboLevel1 = mFiboLevel1; result.fiboLevel2 = mFiboLevel2; result.fiboLevel3 = mFiboLevel3; result.fiboLevel4 = mFiboLevel4; result.fiboLevel5 = mFiboLevel5; result.hhMode = mHHMode; result.llMode = mLLMode; result.trendMultiplier = mTrendMultiplier; result.trendPriceAppliedTo = mTrendPriceAppliedTo; result.ribbonMode = mRibbonMode; result.hullDivisor = mHullDivisor; result.hullUpAppliedTo = mHullUpAppliedTo; result.hullDownAppliedTo = mHullDownAppliedTo; result.sslcMode = mSslcMode; result.sslcUpAppliedTo = mSslcUpAppliedTo; result.sslcDownAppliedTo = mSslcDownAppliedTo; result.showCandleTimer = mShowCandleTimer; result.showCandles = mShowCandles; result.showHKCandles = mShowHKCandles; result.showSMHKCandles = mShowSMHKCandles; result.showPeaksAndVales = mShowPeaksAndVales; result.showTrends = mShowTrends; result.fillTrends = mFillTrends; result.showLevels = mShowLevels; result.showConsolidations = mShowConsolidations; result.showRibbons = mShowRibbons; result.showHull = mShowHull; result.showSSLChannel = mShowSSLChannel; result.showFibo1Levels = mShowFibo1Levels; result.showFibo2Levels = mShowFibo2Levels; result.showFibo3Levels = mShowFibo3Levels; result.showFibo4Levels = mShowFibo4Levels; result.showFibo5Levels = mShowFibo5Levels; // return result; } // // Set Config ... bool SetConfig(XMANInputs &config) { // bool result = false; // mCandleTimerColor = config.candleTimerColor; mCandleTimerCorner = config.candleTimerCorner; mUpColor = config.upColor; mDownColor = config.downColor; mLineColor = config.lineColor; mBearishColor = config.bearishColor; mBullishColor = config.bullishColor; mVolumesColor = config.volumesColor; mChartMode = config.chartMode; mL1Method = config.l1Method; mL1Period = config.l1Period; mL2Method = config.l2Method; mL2Period = config.l2Period; mL3Method = config.l3Method; mL3Period = config.l3Period; mL4Method = config.l4Method; mL4Period = config.l4Period; mFiboLevel1 = config.fiboLevel1; mFiboLevel2 = config.fiboLevel2; mFiboLevel3 = config.fiboLevel3; mFiboLevel4 = config.fiboLevel4; mFiboLevel5 = config.fiboLevel5; mHHMode = config.hhMode; mLLMode = config.llMode; mTrendMultiplier = config.trendMultiplier; mTrendPriceAppliedTo = config.trendPriceAppliedTo; mRibbonMode = config.ribbonMode; mHullDivisor = config.hullDivisor; mHullUpAppliedTo = config.hullUpAppliedTo; mHullDownAppliedTo = config.hullDownAppliedTo; mSslcMode = config.sslcMode; mSslcUpAppliedTo = config.sslcUpAppliedTo; mSslcDownAppliedTo = config.sslcDownAppliedTo; mShowCandleTimer = config.showCandleTimer; mShowCandles = config.showCandles; mShowHKCandles = config.showHKCandles; mShowSMHKCandles = config.showSMHKCandles; mShowPeaksAndVales = config.showPeaksAndVales; mShowTrends = config.showTrends; mFillTrends = config.fillTrends; mShowLevels = config.showLevels; mShowConsolidations = config.showConsolidations; mShowRibbons = config.showRibbons; mShowHull = config.showHull; mShowSSLChannel = config.showSSLChannel; mShowFibo1Levels = config.showFibo1Levels; mShowFibo2Levels = config.showFibo2Levels; mShowFibo3Levels = config.showFibo3Levels; mShowFibo4Levels = config.showFibo4Levels; mShowFibo5Levels = config.showFibo5Levels; // result = Init(); // return result; } // // Reading Buffers based on Given Bar Index ... virtual void Calculate( int barIndex // Given Bar Index ) { // // Peaks ... ArraySetAsSeries(peaksBuffer, true); CopyBuffer( mHandler, XMAN_PEAKS_LINE, barIndex, mLoopbackBars, peaksBuffer); // // Peaks State ... ArraySetAsSeries(peaksStateBuffer, true); CopyBuffer( mHandler, XMAN_PEAKS_STATE_LINE, barIndex, mLoopbackBars, peaksStateBuffer); // // Vales ... ArraySetAsSeries(valesBuffer, true); CopyBuffer( mHandler, XMAN_VALES_LINE, barIndex, mLoopbackBars, valesBuffer); // // Vales State ... ArraySetAsSeries(valesStateBuffer, true); CopyBuffer( mHandler, XMAN_VALES_STATE_LINE, barIndex, mLoopbackBars, valesStateBuffer); // // Fibo 1 ... ArraySetAsSeries(fibLevel1Buffer, true); CopyBuffer( mHandler, XMAN_FIB_L1_LINE, barIndex, mLoopbackBars, fibLevel1Buffer); // // Fibo 2 ... ArraySetAsSeries(fibLevel2Buffer, true); CopyBuffer( mHandler, XMAN_FIB_L2_LINE, barIndex, mLoopbackBars, fibLevel2Buffer); // // Fibo 3 ... ArraySetAsSeries(fibLevel3Buffer, true); CopyBuffer( mHandler, XMAN_FIB_L3_LINE, barIndex, mLoopbackBars, fibLevel3Buffer); // // Fibo 4 ... ArraySetAsSeries(fibLevel4Buffer, true); CopyBuffer( mHandler, XMAN_FIB_L4_LINE, barIndex, mLoopbackBars, fibLevel4Buffer); // // Fibo 5 ... ArraySetAsSeries(fibLevel5Buffer, true); CopyBuffer( mHandler, XMAN_FIB_L5_LINE, barIndex, mLoopbackBars, fibLevel5Buffer); // // Cycles ... // // Short ... // // High ... ArraySetAsSeries(sHHBuffer, true); CopyBuffer( mHandler, XMAN_SC_HH_LINE, barIndex, mLoopbackBars, sHHBuffer); // // High State ... ArraySetAsSeries(sHHStateBuffer, true); CopyBuffer( mHandler, XMAN_SC_HH_STATE_LINE, barIndex, mLoopbackBars, sHHStateBuffer); // // High ... ArraySetAsSeries(sLLBuffer, true); CopyBuffer( mHandler, XMAN_SC_LL_LINE, barIndex, mLoopbackBars, sLLBuffer); // // High State ... ArraySetAsSeries(sLLStateBuffer, true); CopyBuffer( mHandler, XMAN_SC_LL_STATE_LINE, barIndex, mLoopbackBars, sLLStateBuffer); // // Medium ... // // High ... ArraySetAsSeries(mHHBuffer, true); CopyBuffer( mHandler, XMAN_MC_HH_LINE, barIndex, mLoopbackBars, mHHBuffer); // // High State ... ArraySetAsSeries(mHHStateBuffer, true); CopyBuffer( mHandler, XMAN_MC_HH_STATE_LINE, barIndex, mLoopbackBars, mHHStateBuffer); // // High ... ArraySetAsSeries(mLLBuffer, true); CopyBuffer( mHandler, XMAN_MC_LL_LINE, barIndex, mLoopbackBars, mLLBuffer); // // High State ... ArraySetAsSeries(mLLStateBuffer, true); CopyBuffer( mHandler, XMAN_MC_LL_STATE_LINE, barIndex, mLoopbackBars, mLLStateBuffer); // // Long ... // // High ... ArraySetAsSeries(lHHBuffer, true); CopyBuffer( mHandler, XMAN_LC_HH_LINE, barIndex, mLoopbackBars, lHHBuffer); // // High State ... ArraySetAsSeries(lHHStateBuffer, true); CopyBuffer( mHandler, XMAN_LC_HH_STATE_LINE, barIndex, mLoopbackBars, lHHStateBuffer); // // High ... ArraySetAsSeries(lLLBuffer, true); CopyBuffer( mHandler, XMAN_LC_LL_LINE, barIndex, mLoopbackBars, lLLBuffer); // // High State ... ArraySetAsSeries(lLLStateBuffer, true); CopyBuffer( mHandler, XMAN_LC_LL_STATE_LINE, barIndex, mLoopbackBars, lLLStateBuffer); // // Hind ... // // High ... ArraySetAsSeries(hHHBuffer, true); CopyBuffer( mHandler, XMAN_HC_HH_LINE, barIndex, mLoopbackBars, hHHBuffer); // // High State ... ArraySetAsSeries(hHHStateBuffer, true); CopyBuffer( mHandler, XMAN_HC_HH_STATE_LINE, barIndex, mLoopbackBars, hHHStateBuffer); // // High ... ArraySetAsSeries(hLLBuffer, true); CopyBuffer( mHandler, XMAN_HC_LL_LINE, barIndex, mLoopbackBars, hLLBuffer); // // High State ... ArraySetAsSeries(hLLStateBuffer, true); CopyBuffer( mHandler, XMAN_HC_LL_STATE_LINE, barIndex, mLoopbackBars, hLLStateBuffer); // // Trend ... // // Trend ... ArraySetAsSeries(trendBuffer, true); CopyBuffer( mHandler, XMAN_TREND_LINE, barIndex, mLoopbackBars, trendBuffer); // // Trend State ... ArraySetAsSeries(trendStateBuffer, true); CopyBuffer( mHandler, XMAN_TREND_STATE_LINE, barIndex, mLoopbackBars, trendStateBuffer); // // Ribbons ... // // 1 ... // // R1 ... ArraySetAsSeries(ribbon1Buffer, true); CopyBuffer( mHandler, XMAN_RB1_LINE, barIndex, mLoopbackBars, ribbon1Buffer); // // R1 State ... ArraySetAsSeries(ribbon1StateBuffer, true); CopyBuffer( mHandler, XMAN_RB1_STATE_LINE, barIndex, mLoopbackBars, ribbon1StateBuffer); // // 2 ... // // R2 ... ArraySetAsSeries(ribbon2Buffer, true); CopyBuffer( mHandler, XMAN_RB2_LINE, barIndex, mLoopbackBars, ribbon2Buffer); // // R2 State ... ArraySetAsSeries(ribbon2StateBuffer, true); CopyBuffer( mHandler, XMAN_RB2_STATE_LINE, barIndex, mLoopbackBars, ribbon2StateBuffer); // // 3 ... // // R3 ... ArraySetAsSeries(ribbon3Buffer, true); CopyBuffer( mHandler, XMAN_RB3_LINE, barIndex, mLoopbackBars, ribbon3Buffer); // // R3 State ... ArraySetAsSeries(ribbon3StateBuffer, true); CopyBuffer( mHandler, XMAN_RB3_STATE_LINE, barIndex, mLoopbackBars, ribbon3StateBuffer); // // 4 ... // // R4 ... ArraySetAsSeries(ribbon4Buffer, true); CopyBuffer( mHandler, XMAN_RB4_LINE, barIndex, mLoopbackBars, ribbon4Buffer); // // R4 State ... ArraySetAsSeries(ribbon4StateBuffer, true); CopyBuffer( mHandler, XMAN_RB4_STATE_LINE, barIndex, mLoopbackBars, ribbon4StateBuffer); // // 5 ... // // R5 ... ArraySetAsSeries(ribbon5Buffer, true); CopyBuffer( mHandler, XMAN_RB5_LINE, barIndex, mLoopbackBars, ribbon5Buffer); // // R5 State ... ArraySetAsSeries(ribbon5StateBuffer, true); CopyBuffer( mHandler, XMAN_RB5_STATE_LINE, barIndex, mLoopbackBars, ribbon5StateBuffer); // // 6 ... // // R6 ... ArraySetAsSeries(ribbon6Buffer, true); CopyBuffer( mHandler, XMAN_RB6_LINE, barIndex, mLoopbackBars, ribbon6Buffer); // // R6 State ... ArraySetAsSeries(ribbon6StateBuffer, true); CopyBuffer( mHandler, XMAN_RB6_STATE_LINE, barIndex, mLoopbackBars, ribbon6StateBuffer); // // SSL Channel ... // // UP ... ArraySetAsSeries(sslUpBuffer, true); CopyBuffer( mHandler, XMAN_SSLC_UP_LINE, barIndex, mLoopbackBars, sslUpBuffer); // // DOWN ... ArraySetAsSeries(sslDownBuffer, true); CopyBuffer( mHandler, XMAN_SSLC_DOWN_LINE, barIndex, mLoopbackBars, sslDownBuffer); // // HULL Trend ... // // UP ... ArraySetAsSeries(hullUpBuffer, true); CopyBuffer( mHandler, XMAN_HULL_UP_LINE, barIndex, mLoopbackBars, hullUpBuffer); // // UP State ... ArraySetAsSeries(hullUpStateBuffer, true); CopyBuffer( mHandler, XMAN_HULL_UP_STATE_LINE, barIndex, mLoopbackBars, hullUpStateBuffer); // // DOWN ... ArraySetAsSeries(hullDownBuffer, true); CopyBuffer( mHandler, XMAN_HULL_DOWN_LINE, barIndex, mLoopbackBars, hullDownBuffer); // // DOWN State ... ArraySetAsSeries(hullDownStateBuffer, true); CopyBuffer( mHandler, XMAN_HULL_DOWN_STATE_LINE, barIndex, mLoopbackBars, hullDownStateBuffer); // // Hiken Ashi ... // // Open ... ArraySetAsSeries(hkOpenBuffer, true); CopyBuffer( mHandler, XMAN_HK_OPEN_LINE, barIndex, mLoopbackBars, hkOpenBuffer); // // High ... ArraySetAsSeries(hkHighBuffer, true); CopyBuffer( mHandler, XMAN_HK_HIGH_LINE, barIndex, mLoopbackBars, hkHighBuffer); // // Low ... ArraySetAsSeries(hkLowBuffer, true); CopyBuffer( mHandler, XMAN_HK_LOW_LINE, barIndex, mLoopbackBars, hkLowBuffer); // // Close ... ArraySetAsSeries(hkCloseBuffer, true); CopyBuffer( mHandler, XMAN_HK_CLOSE_LINE, barIndex, mLoopbackBars, hkCloseBuffer); // // Close ... ArraySetAsSeries(hkStateBuffer, true); CopyBuffer( mHandler, XMAN_HK_STATE_LINE, barIndex, mLoopbackBars, hkStateBuffer); } // // Retrieve Info at Specific Bar Index ... XMANInfo GetInfo( int barIndex // Given Bar Index ) { // XMANInfo result; // if (barIndex < 0) { barIndex = 0; } // // Do Calculations ... Calculate(barIndex); // // Generate Candle Time ... datetime barTime = GetCandleTime( mSymbol, mPeriod, barIndex); // // Fill Result ... result.symbol = mSymbol; result.period = mPeriod; result.barTime = barTime; result.barIndex = barIndex; // // Buffers ... // Copy(peaksBuffer, result.peaks); Copy(peaksStateBuffer, result.peaksStates); Copy(valesBuffer, result.vales); Copy(valesStateBuffer, result.valesStates); // Copy(fibLevel1Buffer, result.fibLevel1s); Copy(fibLevel2Buffer, result.fibLevel2s); Copy(fibLevel3Buffer, result.fibLevel3s); Copy(fibLevel4Buffer, result.fibLevel4s); Copy(fibLevel5Buffer, result.fibLevel5s); // Copy(sHHBuffer, result.sHHs); Copy(sHHStateBuffer, result.sHHStates); Copy(sLLBuffer, result.sLLs); Copy(sLLStateBuffer, result.sLLStates); // Copy(mHHBuffer, result.mHHs); Copy(mHHStateBuffer, result.mHHStates); Copy(mLLBuffer, result.mLLs); Copy(mLLStateBuffer, result.mLLStates); // Copy(lHHBuffer, result.lHHs); Copy(lHHStateBuffer, result.lHHStates); Copy(lLLBuffer, result.lLLs); Copy(lLLStateBuffer, result.lLLStates); // Copy(hHHBuffer, result.hHHs); Copy(hHHStateBuffer, result.hHHStates); Copy(hLLBuffer, result.hLLs); Copy(hLLStateBuffer, result.hLLStates); // Copy(trendBuffer, result.trends); Copy(trendStateBuffer, result.trendStates); // Copy(ribbon1Buffer, result.ribbon1s); Copy(ribbon1StateBuffer, result.ribbon1States); // Copy(ribbon2Buffer, result.ribbon2s); Copy(ribbon2StateBuffer, result.ribbon2States); // Copy(ribbon3Buffer, result.ribbon3s); Copy(ribbon3StateBuffer, result.ribbon3States); // Copy(ribbon4Buffer, result.ribbon4s); Copy(ribbon4StateBuffer, result.ribbon4States); // Copy(ribbon5Buffer, result.ribbon5s); Copy(ribbon5StateBuffer, result.ribbon5States); // Copy(ribbon6Buffer, result.ribbon6s); Copy(ribbon6StateBuffer, result.ribbon6States); // Copy(sslUpBuffer, result.sslcUps); Copy(sslDownBuffer, result.sslcDowns); // Copy(hullUpBuffer, result.hullUps); Copy(hullUpStateBuffer, result.hullUpStates); Copy(hullDownBuffer, result.hullDowns); Copy(hullDownStateBuffer, result.hullDownStates); // Copy(hkOpenBuffer, result.hkOpens); Copy(hkHighBuffer, result.hkHighs); Copy(hkLowBuffer, result.hkLows); Copy(hkCloseBuffer, result.hkCloses); Copy(hkStateBuffer, result.hkStates); // return result; } // // Protcted ... protected: // // Private ... private: // // Inputs ... // // Candle Timer ... color mCandleTimerColor; // Text Color ENUM_BASE_CORNER mCandleTimerCorner; // Text Position // // Chart Style ... color mUpColor; // Up Color color mDownColor; // Down Color color mLineColor; // Line mode and Doji candlestick Color color mBearishColor; // Bullish Color color mBullishColor; // Bearish Color color mVolumesColor; // Volumes Color ENUM_CHART_MODE mChartMode; // Chart Mode // // Market Cycles ... // // Level 1 ... ENUM_X_PERIOD_METHOD mL1Method; // How to Find Period ENUM_TIMEFRAMES mL1Period; // Time Period // // Level 2 ... ENUM_X_PERIOD_METHOD mL2Method; // How to Find Period ENUM_TIMEFRAMES mL2Period; // Time Period // // Level 3 ... ENUM_X_PERIOD_METHOD mL3Method; // How to Find Period ENUM_TIMEFRAMES mL3Period; // Time Period // // Level 4 ... ENUM_X_PERIOD_METHOD mL4Method; // How to Find Period ENUM_TIMEFRAMES mL4Period; // Time Period // // Fibonacci ... double mFiboLevel1; // Fibio 1st Level double mFiboLevel2; // Fibio 2st Level double mFiboLevel3; // Fibio 3rd Level double mFiboLevel4; // Fibio 4th Level double mFiboLevel5; // Fibio 5th Level // // Boundary Detection Modes ... ENUM_SERIESMODE mHHMode; // Highest High Calculation Method ENUM_SERIESMODE mLLMode; // Lowest Low Calculation Method // // Trend Detection double mTrendMultiplier; // Multiplier ENUM_APPLIED_PRICE mTrendPriceAppliedTo; // Applied To // // Ribbon Detection ... ENUM_X_MA_METHOD mRibbonMode; // How to Calculate // // Hull Trend Detection ... double mHullDivisor; // Divisor (Speed) ENUM_APPLIED_PRICE mHullUpAppliedTo; // Up Zone Applied to ENUM_APPLIED_PRICE mHullDownAppliedTo; // Down Zone Applied to // // SSL Channel Detection ... ENUM_X_MA_METHOD mSslcMode; // How to Calculate ENUM_APPLIED_PRICE mSslcUpAppliedTo; // Up Applied To ENUM_APPLIED_PRICE mSslcDownAppliedTo; // Down Applied To // // Presentation ... bool mShowCandleTimer; // Show Candle Time bool mShowCandles; // Show Candles bool mShowHKCandles; // Draw Hiken Ashi Candle bool mShowSMHKCandles; // Draw Smoothed Hiken Ashi Candle bool mShowPeaksAndVales; // Show Peaks and Vales bool mShowTrends; // Show Trends bool mFillTrends; // Fill Trends bool mShowLevels; // Show Levels bool mShowConsolidations; // Show Consolidations bool mShowRibbons; // Show Ribbons bool mShowHull; // Show Hull bool mShowSSLChannel; // Show SSL Channel bool mShowFibo1Levels; // Show Fibo 1st Level bool mShowFibo2Levels; // Show Fibo 2nd Level bool mShowFibo3Levels; // Show Fibo 3rd Level bool mShowFibo4Levels; // Show Fibo 4th Level bool mShowFibo5Levels; // Show Fibo 5th Level }; // // START Usefull Functions ... // // // END Usefull Functions ... //