Files
xMQL5/MQLTestWorkspace/BKPS/14030222/Helpers/x-saherelm.x121.xman.helper.class.mq5
T
2024-05-11 05:36:03 +03:30

1928 lines
46 KiB
Plaintext

///////////////////////////////////////////////////////
//
// 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 ...
//
// Chanes ...
XValueChanged trendChanges[];
XValueChanged peakChanges[];
XValueChanged valeChanges[];
//
// 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 ...
//
XValueChanged trendChanges[];
XValueChanged peakChanges[];
XValueChanged valeChanges[];
//
// 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);
//
// XSMHK ...
//
// Open ...
ArraySetAsSeries(smhkOpenBuffer, true);
CopyBuffer(
mHandler,
XMAN_SMHK_OPEN_LINE,
barIndex,
mLoopbackBars,
smhkOpenBuffer);
//
// High ...
ArraySetAsSeries(smhkHighBuffer, true);
CopyBuffer(
mHandler,
XMAN_SMHK_HIGH_LINE,
barIndex,
mLoopbackBars,
smhkHighBuffer);
//
// Low ...
ArraySetAsSeries(smhkLowBuffer, true);
CopyBuffer(
mHandler,
XMAN_SMHK_LOW_LINE,
barIndex,
mLoopbackBars,
smhkLowBuffer);
//
// Close ...
ArraySetAsSeries(smhkCloseBuffer, true);
CopyBuffer(
mHandler,
XMAN_SMHK_CLOSE_LINE,
barIndex,
mLoopbackBars,
smhkCloseBuffer);
}
//
// 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);
//
Copy(smhkOpenBuffer,
result.smhkOpens);
Copy(smhkHighBuffer,
result.smhkHighs);
Copy(smhkLowBuffer,
result.smhkLows);
Copy(smhkCloseBuffer,
result.smhkCloses);
//
// Prepare Change Handlers ...
barTime = GetCandleTime(
mSymbol,
mPeriod,
0);
//
// Trend Change ...
bool isTrendChangedHandled =
HandleValueChanged(
trendChanges,
trendStateBuffer,
trendBuffer,
barTime);
//
Copy(
trendChanges,
result.trendChanges);
//
// Peak Change ...
bool isPeaksChangedHandled =
HandleValueChanged(
peakChanges,
peaksBuffer,
peaksBuffer,
barTime);
//
Copy(
peakChanges,
result.peakChanges);
//
// Vale Change ...
bool isValesChangedHandled =
HandleValueChanged(
valeChanges,
valesBuffer,
valesBuffer,
barTime);
//
Copy(
valeChanges,
result.valeChanges);
//
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 ...
//