1815 lines
43 KiB
Plaintext
1815 lines
43 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 ...
|
|
|
|
//
|
|
// 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 ...
|
|
//
|