remove fibo lines from x121 indicator and also add support for rsi in data buffers ...
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -46,6 +46,7 @@ input string eaSymbols = "EURUSDb,GBPUSDb,USDJPYb,USDCHFb"; // Trading Symbols
|
|||||||
input group "Signalling";
|
input group "Signalling";
|
||||||
input bool eaAllowLong = true; // Allow Long Signals
|
input bool eaAllowLong = true; // Allow Long Signals
|
||||||
input bool eaAllowShort = true; // Allow Short Signals
|
input bool eaAllowShort = true; // Allow Short Signals
|
||||||
|
input bool eaAllowTrade = true; // Allow Open Trade On Signals
|
||||||
input int eaMaxAllowedLongs = 5; // Max Allowed Long Signals
|
input int eaMaxAllowedLongs = 5; // Max Allowed Long Signals
|
||||||
input int eaMaxAllowedShorts = 5; // Max Allowed Short Signals
|
input int eaMaxAllowedShorts = 5; // Max Allowed Short Signals
|
||||||
input bool eaUseMaxAllowedSignalsPerSymbol = true; // Use Max Allowed Signal Types Per Symbol
|
input bool eaUseMaxAllowedSignalsPerSymbol = true; // Use Max Allowed Signal Types Per Symbol
|
||||||
@@ -152,6 +153,7 @@ int OnInit()
|
|||||||
// Signalling ...
|
// Signalling ...
|
||||||
eaExpert.AllowLong(eaAllowLong);
|
eaExpert.AllowLong(eaAllowLong);
|
||||||
eaExpert.AllowShort(eaAllowShort);
|
eaExpert.AllowShort(eaAllowShort);
|
||||||
|
eaExpert.AllowTrade(eaAllowTrade);
|
||||||
eaExpert.MaxAllowedLongs(eaMaxAllowedLongs);
|
eaExpert.MaxAllowedLongs(eaMaxAllowedLongs);
|
||||||
eaExpert.MaxAllowedShorts(eaMaxAllowedShorts);
|
eaExpert.MaxAllowedShorts(eaMaxAllowedShorts);
|
||||||
eaExpert.UseMaxAllowedSignalsPerSymbol(eaUseMaxAllowedSignalsPerSymbol);
|
eaExpert.UseMaxAllowedSignalsPerSymbol(eaUseMaxAllowedSignalsPerSymbol);
|
||||||
|
|||||||
@@ -46,37 +46,35 @@ enum ENUM_X121_BUFFERS
|
|||||||
X121_DON_LOW_LOWER_LINE = 16,
|
X121_DON_LOW_LOWER_LINE = 16,
|
||||||
X121_DON_CLOSE_UPPER_LINE = 17,
|
X121_DON_CLOSE_UPPER_LINE = 17,
|
||||||
X121_DON_CLOSE_LOWER_LINE = 18,
|
X121_DON_CLOSE_LOWER_LINE = 18,
|
||||||
X121_FIB_LEVEL_1_LINE = 19,
|
|
||||||
X121_FIB_LEVEL_2_LINE = 20,
|
|
||||||
X121_FIB_LEVEL_3_LINE = 21,
|
|
||||||
X121_FIB_LEVEL_4_LINE = 22,
|
|
||||||
X121_FIB_LEVEL_5_LINE = 23,
|
|
||||||
//
|
//
|
||||||
// Data Buffers ...
|
// Data Buffers ...
|
||||||
//
|
//
|
||||||
// XPV Data ...
|
// XPV Data ...
|
||||||
X121_CURRENT_HH_LINE = 24,
|
X121_CURRENT_HH_LINE = 19,
|
||||||
X121_CURRENT_LL_LINE = 25,
|
X121_CURRENT_LL_LINE = 20,
|
||||||
X121_SHORT_HH_LINE = 26,
|
X121_SHORT_HH_LINE = 21,
|
||||||
X121_SHORT_LL_LINE = 27,
|
X121_SHORT_LL_LINE = 22,
|
||||||
X121_MEDIUM_HH_LINE = 28,
|
X121_MEDIUM_HH_LINE = 23,
|
||||||
X121_MEDIUM_LL_LINE = 29,
|
X121_MEDIUM_LL_LINE = 24,
|
||||||
X121_LONG_HH_LINE = 30,
|
X121_LONG_HH_LINE = 25,
|
||||||
X121_LONG_LL_LINE = 31,
|
X121_LONG_LL_LINE = 26,
|
||||||
X121_HIND_HH_LINE = 32,
|
X121_HIND_HH_LINE = 27,
|
||||||
X121_HIND_LL_LINE = 33,
|
X121_HIND_LL_LINE = 28,
|
||||||
//
|
//
|
||||||
// VWAP Data ...
|
// VWAP Data ...
|
||||||
X121_VWAP_VOLUME_LINE = 34,
|
X121_VWAP_VOLUME_LINE = 29,
|
||||||
X121_VWAP_PRICE_LINE = 35,
|
X121_VWAP_PRICE_LINE = 30,
|
||||||
X121_VWAP_FAST_STATE_LINE = 36,
|
X121_VWAP_FAST_STATE_LINE = 31,
|
||||||
X121_VWAP_MID_STATE_LINE = 37,
|
X121_VWAP_MID_STATE_LINE = 32,
|
||||||
X121_VWAP_SLOW_STATE_LINE = 38,
|
X121_VWAP_SLOW_STATE_LINE = 33,
|
||||||
//
|
//
|
||||||
// ATR ...
|
// ATR ...
|
||||||
X121_ATR_LINE = 39,
|
X121_ATR_LINE = 34,
|
||||||
X121_ATR_UPPER_RAW_LINE = 40,
|
X121_ATR_UPPER_RAW_LINE = 35,
|
||||||
X121_ATR_LOWER_RAW_LINE = 41,
|
X121_ATR_LOWER_RAW_LINE = 36,
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
X121_RSI_LINE = 37
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -130,9 +128,10 @@ struct X121Inputs
|
|||||||
|
|
||||||
//
|
//
|
||||||
// RSI ...
|
// RSI ...
|
||||||
int rsiLength; // RSI Length
|
int rsiLength; // Length
|
||||||
double rsiOverSoldLevel; // RSI Over Sold Level
|
double rsiOverSoldLevel; // Over Sold Level
|
||||||
double rsiOverBoughtLevel; // RSI Over Bought Level
|
double rsiOverBoughtLevel; // Over Bought Level
|
||||||
|
ENUM_APPLIED_PRICE rsiAppliedTo; // Applied To
|
||||||
|
|
||||||
//
|
//
|
||||||
// Atr Detection ...
|
// Atr Detection ...
|
||||||
@@ -153,14 +152,6 @@ struct X121Inputs
|
|||||||
// Donchain Detection ...
|
// Donchain Detection ...
|
||||||
int donchainLength; // Donchain Length
|
int donchainLength; // Donchain Length
|
||||||
|
|
||||||
//
|
|
||||||
// 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
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
|
|
||||||
@@ -181,14 +172,6 @@ struct X121Inputs
|
|||||||
bool showVWap; // Show VWap
|
bool showVWap; // Show VWap
|
||||||
bool showDonchain; // Show Donchain
|
bool showDonchain; // Show Donchain
|
||||||
|
|
||||||
//
|
|
||||||
// Fibonachi Presentation ...
|
|
||||||
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
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Atr Presentation ...
|
// Atr Presentation ...
|
||||||
bool showAtrUpper; // Show Upper Zone
|
bool showAtrUpper; // Show Upper Zone
|
||||||
@@ -261,6 +244,7 @@ struct X121Inputs
|
|||||||
rsiLength = 0;
|
rsiLength = 0;
|
||||||
rsiOverSoldLevel = 0;
|
rsiOverSoldLevel = 0;
|
||||||
rsiOverBoughtLevel = 0;
|
rsiOverBoughtLevel = 0;
|
||||||
|
rsiAppliedTo = PRICE_CLOSE;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Paraboli Sar Detection ...
|
// Paraboli Sar Detection ...
|
||||||
@@ -286,14 +270,6 @@ struct X121Inputs
|
|||||||
// Donchain Detection ...
|
// Donchain Detection ...
|
||||||
donchainLength = 0;
|
donchainLength = 0;
|
||||||
|
|
||||||
//
|
|
||||||
// Fibonacci ...
|
|
||||||
fiboLevel1 = 0;
|
|
||||||
fiboLevel2 = 0;
|
|
||||||
fiboLevel3 = 0;
|
|
||||||
fiboLevel4 = 0;
|
|
||||||
fiboLevel5 = 0;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
|
|
||||||
@@ -314,14 +290,6 @@ struct X121Inputs
|
|||||||
showVWap = false;
|
showVWap = false;
|
||||||
showDonchain = false;
|
showDonchain = false;
|
||||||
|
|
||||||
//
|
|
||||||
// Fibonachi Presentation ...
|
|
||||||
showFibo1Levels = false;
|
|
||||||
showFibo2Levels = false;
|
|
||||||
showFibo3Levels = false;
|
|
||||||
showFibo4Levels = false;
|
|
||||||
showFibo5Levels = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Atr Presentation ...
|
// Atr Presentation ...
|
||||||
showAtrUpper = false; // Show Upper Zone
|
showAtrUpper = false; // Show Upper Zone
|
||||||
@@ -385,6 +353,7 @@ struct X121Inputs
|
|||||||
rsiLength = 14;
|
rsiLength = 14;
|
||||||
rsiOverSoldLevel = 30;
|
rsiOverSoldLevel = 30;
|
||||||
rsiOverBoughtLevel = 70;
|
rsiOverBoughtLevel = 70;
|
||||||
|
rsiAppliedTo = PRICE_CLOSE;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Paraboli Sar Detection ...
|
// Paraboli Sar Detection ...
|
||||||
@@ -410,14 +379,6 @@ struct X121Inputs
|
|||||||
// Donchain Detection ...
|
// Donchain Detection ...
|
||||||
donchainLength = 40;
|
donchainLength = 40;
|
||||||
|
|
||||||
//
|
|
||||||
// Fibonacci ...
|
|
||||||
fiboLevel1 = 0.236;
|
|
||||||
fiboLevel2 = 0.382;
|
|
||||||
fiboLevel3 = 0.5;
|
|
||||||
fiboLevel4 = 0.618;
|
|
||||||
fiboLevel5 = 0.764;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Presentation ...
|
// Presentation ...
|
||||||
|
|
||||||
@@ -438,14 +399,6 @@ struct X121Inputs
|
|||||||
showVWap = true;
|
showVWap = true;
|
||||||
showDonchain = true;
|
showDonchain = true;
|
||||||
|
|
||||||
//
|
|
||||||
// Fibonachi Presentation ...
|
|
||||||
showFibo1Levels = false;
|
|
||||||
showFibo2Levels = false;
|
|
||||||
showFibo3Levels = true;
|
|
||||||
showFibo4Levels = false;
|
|
||||||
showFibo5Levels = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Atr Presentation ...
|
// Atr Presentation ...
|
||||||
showAtrUpper = true; // Show Upper Zone
|
showAtrUpper = true; // Show Upper Zone
|
||||||
@@ -572,11 +525,6 @@ struct X121Conditions
|
|||||||
double donHighLowerBuffer[];
|
double donHighLowerBuffer[];
|
||||||
double donLowUpperBuffer[];
|
double donLowUpperBuffer[];
|
||||||
double donLowLowerBuffer[];
|
double donLowLowerBuffer[];
|
||||||
double fl1Buffer[];
|
|
||||||
double fl2Buffer[];
|
|
||||||
double fl3Buffer[];
|
|
||||||
double fl4Buffer[];
|
|
||||||
double fl5Buffer[];
|
|
||||||
double cHHBuffer[];
|
double cHHBuffer[];
|
||||||
double cLLBuffer[];
|
double cLLBuffer[];
|
||||||
double sHHBuffer[];
|
double sHHBuffer[];
|
||||||
@@ -687,37 +635,6 @@ struct X121Conditions
|
|||||||
//
|
//
|
||||||
// bool isCloseLower
|
// bool isCloseLower
|
||||||
|
|
||||||
//
|
|
||||||
// XFIBONACCI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isOerFib1;
|
|
||||||
bool isOerFib2;
|
|
||||||
bool isOerFib3;
|
|
||||||
bool isOerFib4;
|
|
||||||
bool isOerFib5;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isUnderFib1;
|
|
||||||
bool isUnderFib2;
|
|
||||||
bool isUnderFib3;
|
|
||||||
bool isUnderFib4;
|
|
||||||
bool isUnderFib5;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isCloseOerFib1;
|
|
||||||
bool isCloseOerFib2;
|
|
||||||
bool isCloseOerFib3;
|
|
||||||
bool isCloseOerFib4;
|
|
||||||
bool isCloseOerFib5;
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isCloseUnderFib1;
|
|
||||||
bool isCloseUnderFib2;
|
|
||||||
bool isCloseUnderFib3;
|
|
||||||
bool isCloseUnderFib4;
|
|
||||||
bool isCloseUnderFib5;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Constructor ...
|
// Constructor ...
|
||||||
X121Conditions()
|
X121Conditions()
|
||||||
@@ -759,11 +676,6 @@ struct X121Conditions
|
|||||||
Clean(donHighLowerBuffer);
|
Clean(donHighLowerBuffer);
|
||||||
Clean(donLowUpperBuffer);
|
Clean(donLowUpperBuffer);
|
||||||
Clean(donLowLowerBuffer);
|
Clean(donLowLowerBuffer);
|
||||||
Clean(fl1Buffer);
|
|
||||||
Clean(fl2Buffer);
|
|
||||||
Clean(fl3Buffer);
|
|
||||||
Clean(fl4Buffer);
|
|
||||||
Clean(fl5Buffer);
|
|
||||||
Clean(cHHBuffer);
|
Clean(cHHBuffer);
|
||||||
Clean(cLLBuffer);
|
Clean(cLLBuffer);
|
||||||
Clean(sHHBuffer);
|
Clean(sHHBuffer);
|
||||||
@@ -801,11 +713,6 @@ struct X121Conditions
|
|||||||
ArraySetAsSeries(donHighLowerBuffer, true);
|
ArraySetAsSeries(donHighLowerBuffer, true);
|
||||||
ArraySetAsSeries(donLowUpperBuffer, true);
|
ArraySetAsSeries(donLowUpperBuffer, true);
|
||||||
ArraySetAsSeries(donLowLowerBuffer, true);
|
ArraySetAsSeries(donLowLowerBuffer, true);
|
||||||
ArraySetAsSeries(fl1Buffer, true);
|
|
||||||
ArraySetAsSeries(fl2Buffer, true);
|
|
||||||
ArraySetAsSeries(fl3Buffer, true);
|
|
||||||
ArraySetAsSeries(fl4Buffer, true);
|
|
||||||
ArraySetAsSeries(fl5Buffer, true);
|
|
||||||
ArraySetAsSeries(cHHBuffer, true);
|
ArraySetAsSeries(cHHBuffer, true);
|
||||||
ArraySetAsSeries(cLLBuffer, true);
|
ArraySetAsSeries(cLLBuffer, true);
|
||||||
ArraySetAsSeries(sHHBuffer, true);
|
ArraySetAsSeries(sHHBuffer, true);
|
||||||
@@ -912,37 +819,6 @@ struct X121Conditions
|
|||||||
|
|
||||||
//
|
//
|
||||||
// XDON ...
|
// XDON ...
|
||||||
|
|
||||||
//
|
|
||||||
// XFIBONACCI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
isOerFib1 = false;
|
|
||||||
isOerFib2 = false;
|
|
||||||
isOerFib3 = false;
|
|
||||||
isOerFib4 = false;
|
|
||||||
isOerFib5 = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isUnderFib1 = false;
|
|
||||||
isUnderFib2 = false;
|
|
||||||
isUnderFib3 = false;
|
|
||||||
isUnderFib4 = false;
|
|
||||||
isUnderFib5 = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isCloseOerFib1 = false;
|
|
||||||
isCloseOerFib2 = false;
|
|
||||||
isCloseOerFib3 = false;
|
|
||||||
isCloseOerFib4 = false;
|
|
||||||
isCloseOerFib5 = false;
|
|
||||||
|
|
||||||
//
|
|
||||||
isCloseUnderFib1 = false;
|
|
||||||
isCloseUnderFib2 = false;
|
|
||||||
isCloseUnderFib3 = false;
|
|
||||||
isCloseUnderFib4 = false;
|
|
||||||
isCloseUnderFib5 = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1030,6 +906,14 @@ struct X121Conditions
|
|||||||
ToString("isNewValeOverLast", isNewValeOverLast, ignoreFalseConditions, separator) +
|
ToString("isNewValeOverLast", isNewValeOverLast, ignoreFalseConditions, separator) +
|
||||||
ToString("isNewValeUnderLast", isNewValeUnderLast, ignoreFalseConditions, separator) +
|
ToString("isNewValeUnderLast", isNewValeUnderLast, ignoreFalseConditions, separator) +
|
||||||
//
|
//
|
||||||
|
// RSI ...
|
||||||
|
ToString("isRSIOverBought", isRSIOverBought, ignoreFalseConditions, separator) +
|
||||||
|
ToString("isRSICrossedOverOverBought", isRSICrossedOverOverBought, ignoreFalseConditions, separator) +
|
||||||
|
ToString("isRSICrossedUnderOverBought", isRSICrossedUnderOverBought, ignoreFalseConditions, separator) +
|
||||||
|
ToString("isRSIOverSold", isRSIOverSold, ignoreFalseConditions, separator) +
|
||||||
|
ToString("isRSICrossedUnderOverSold", isRSICrossedUnderOverSold, ignoreFalseConditions, separator) +
|
||||||
|
ToString("isRSICrossedOverOverSold", isRSICrossedOverOverSold, ignoreFalseConditions, separator) +
|
||||||
|
//
|
||||||
// XVWAP ...
|
// XVWAP ...
|
||||||
ToString("isVWapFastBullish", isVWapFastBullish, ignoreFalseConditions, separator) +
|
ToString("isVWapFastBullish", isVWapFastBullish, ignoreFalseConditions, separator) +
|
||||||
ToString("isVWapFastBearish", isVWapFastBearish, ignoreFalseConditions, separator) +
|
ToString("isVWapFastBearish", isVWapFastBearish, ignoreFalseConditions, separator) +
|
||||||
@@ -1055,28 +939,6 @@ struct X121Conditions
|
|||||||
ToString("isVWapSwitchedToBearishState", isVWapSwitchedToBearishState, ignoreFalseConditions, separator) +
|
ToString("isVWapSwitchedToBearishState", isVWapSwitchedToBearishState, ignoreFalseConditions, separator) +
|
||||||
ToString("isVWapSwitchedToNeuturalState", isVWapSwitchedToNeuturalState, ignoreFalseConditions, separator) +
|
ToString("isVWapSwitchedToNeuturalState", isVWapSwitchedToNeuturalState, ignoreFalseConditions, separator) +
|
||||||
//
|
//
|
||||||
// XFIBONACCI ...
|
|
||||||
ToString("isOerFib1", isOerFib1, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isOerFib2", isOerFib2, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isOerFib3", isOerFib3, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isOerFib4", isOerFib4, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isOerFib5", isOerFib5, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isUnderFib1", isUnderFib1, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isUnderFib2", isUnderFib2, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isUnderFib3", isUnderFib3, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isUnderFib4", isUnderFib4, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isUnderFib5", isUnderFib5, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseOerFib1", isCloseOerFib1, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseOerFib2", isCloseOerFib2, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseOerFib3", isCloseOerFib3, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseOerFib4", isCloseOerFib4, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseOerFib5", isCloseOerFib5, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseUnderFib1", isCloseUnderFib1, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseUnderFib2", isCloseUnderFib2, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseUnderFib3", isCloseUnderFib3, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseUnderFib4", isCloseUnderFib4, ignoreFalseConditions, separator) +
|
|
||||||
ToString("isCloseUnderFib5", isCloseUnderFib5, ignoreFalseConditions, separator) +
|
|
||||||
//
|
|
||||||
""
|
""
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
@@ -1136,7 +998,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
// Deconstructor ...
|
// Deconstructor ...
|
||||||
~XCX121Helper()
|
~XCX121Helper()
|
||||||
{
|
{
|
||||||
IndicatorRelease(mRSIHandler);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1193,11 +1054,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
ArraySetAsSeries(donHighLowerBuffer, true);
|
ArraySetAsSeries(donHighLowerBuffer, true);
|
||||||
ArraySetAsSeries(donLowUpperBuffer, true);
|
ArraySetAsSeries(donLowUpperBuffer, true);
|
||||||
ArraySetAsSeries(donLowLowerBuffer, true);
|
ArraySetAsSeries(donLowLowerBuffer, true);
|
||||||
ArraySetAsSeries(fl1Buffer, true);
|
|
||||||
ArraySetAsSeries(fl2Buffer, true);
|
|
||||||
ArraySetAsSeries(fl3Buffer, true);
|
|
||||||
ArraySetAsSeries(fl4Buffer, true);
|
|
||||||
ArraySetAsSeries(fl5Buffer, true);
|
|
||||||
ArraySetAsSeries(cHHBuffer, true);
|
ArraySetAsSeries(cHHBuffer, true);
|
||||||
ArraySetAsSeries(cLLBuffer, true);
|
ArraySetAsSeries(cLLBuffer, true);
|
||||||
ArraySetAsSeries(sHHBuffer, true);
|
ArraySetAsSeries(sHHBuffer, true);
|
||||||
@@ -1254,6 +1110,11 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
mInputs.hhMode,
|
mInputs.hhMode,
|
||||||
mInputs.llMode,
|
mInputs.llMode,
|
||||||
//
|
//
|
||||||
|
// Rsi Detection ...
|
||||||
|
"",
|
||||||
|
mInputs.rsiLength,
|
||||||
|
mInputs.rsiAppliedTo,
|
||||||
|
//
|
||||||
// Parabolic Sar Detection ...
|
// Parabolic Sar Detection ...
|
||||||
"",
|
"",
|
||||||
mInputs.sarStep,
|
mInputs.sarStep,
|
||||||
@@ -1281,6 +1142,9 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
// Presentation ...
|
// Presentation ...
|
||||||
"",
|
"",
|
||||||
mInputs.startCalculationForLastBars,
|
mInputs.startCalculationForLastBars,
|
||||||
|
mInputs.sarArrowCode,
|
||||||
|
mInputs.peaksArrowCode,
|
||||||
|
mInputs.valesArrowCode,
|
||||||
//
|
//
|
||||||
// Commons ...
|
// Commons ...
|
||||||
mInputs.showSar,
|
mInputs.showSar,
|
||||||
@@ -1290,14 +1154,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
mInputs.showVWap,
|
mInputs.showVWap,
|
||||||
mInputs.showDonchain,
|
mInputs.showDonchain,
|
||||||
//
|
//
|
||||||
// Fibonachi Presentation ...
|
|
||||||
"",
|
|
||||||
mInputs.showFibo1Levels,
|
|
||||||
mInputs.showFibo2Levels,
|
|
||||||
mInputs.showFibo3Levels,
|
|
||||||
mInputs.showFibo4Levels,
|
|
||||||
mInputs.showFibo5Levels,
|
|
||||||
//
|
|
||||||
// Atr Presentation ...
|
// Atr Presentation ...
|
||||||
"",
|
"",
|
||||||
mInputs.showAtrUpper,
|
mInputs.showAtrUpper,
|
||||||
@@ -1318,20 +1174,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
mInputs.showClose,
|
mInputs.showClose,
|
||||||
mInputs.showLow
|
mInputs.showLow
|
||||||
//
|
//
|
||||||
// Non Important Inpust ...
|
|
||||||
//
|
|
||||||
// Fibonacci ...
|
|
||||||
// "",
|
|
||||||
// mInputs.fiboLevel1,
|
|
||||||
// mInputs.fiboLevel2,
|
|
||||||
// mInputs.fiboLevel3,
|
|
||||||
// mInputs.fiboLevel4,
|
|
||||||
// mInputs.fiboLevel5,
|
|
||||||
// //
|
|
||||||
// mInputs.sarArrowCode,
|
|
||||||
// mInputs.peaksArrowCode,
|
|
||||||
// mInputs.valesArrowCode
|
|
||||||
//
|
|
||||||
);
|
);
|
||||||
result = mHandler != INVALID_HANDLE;
|
result = mHandler != INVALID_HANDLE;
|
||||||
if (!result)
|
if (!result)
|
||||||
@@ -1339,19 +1181,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
mRSIHandler = iRSI(
|
|
||||||
symbol,
|
|
||||||
period,
|
|
||||||
mInputs.rsiLength,
|
|
||||||
PRICE_CLOSE //
|
|
||||||
);
|
|
||||||
result = mRSIHandler != INVALID_HANDLE;
|
|
||||||
if (!result)
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -3727,269 +3556,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// FIBONACCHI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 1 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
double GetFiboLevel1(
|
|
||||||
int barIndex // Bar Index
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
if (barIndex < 0)
|
|
||||||
{
|
|
||||||
barIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
int count = ArraySize(fl1Buffer);
|
|
||||||
if (barIndex >= count)
|
|
||||||
{
|
|
||||||
barIndex = count - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return fl1Buffer[barIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
int CopyFiboLevel1(
|
|
||||||
int start, // Start
|
|
||||||
int count, // Number of Items for read
|
|
||||||
double &buffer[], // Dest Buffer
|
|
||||||
bool forceClean = true // FiboLevel To Clean buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Update Calculations ...
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Copy Items ...
|
|
||||||
return Copy(
|
|
||||||
start,
|
|
||||||
count,
|
|
||||||
fl1Buffer,
|
|
||||||
buffer,
|
|
||||||
forceClean
|
|
||||||
//
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 2 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
double GetFiboLevel2(
|
|
||||||
int barIndex // Bar Index
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
if (barIndex < 0)
|
|
||||||
{
|
|
||||||
barIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
int count = ArraySize(fl2Buffer);
|
|
||||||
if (barIndex >= count)
|
|
||||||
{
|
|
||||||
barIndex = count - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return fl2Buffer[barIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
int CopyFiboLevel2(
|
|
||||||
int start, // Start
|
|
||||||
int count, // Number of Items for read
|
|
||||||
double &buffer[], // Dest Buffer
|
|
||||||
bool forceClean = true // FiboLevel To Clean buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Update Calculations ...
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Copy Items ...
|
|
||||||
return Copy(
|
|
||||||
start,
|
|
||||||
count,
|
|
||||||
fl2Buffer,
|
|
||||||
buffer,
|
|
||||||
forceClean
|
|
||||||
//
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 3 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
double GetFiboLevel3(
|
|
||||||
int barIndex // Bar Index
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
if (barIndex < 0)
|
|
||||||
{
|
|
||||||
barIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
int count = ArraySize(fl3Buffer);
|
|
||||||
if (barIndex >= count)
|
|
||||||
{
|
|
||||||
barIndex = count - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return fl3Buffer[barIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
int CopyFiboLevel3(
|
|
||||||
int start, // Start
|
|
||||||
int count, // Number of Items for read
|
|
||||||
double &buffer[], // Dest Buffer
|
|
||||||
bool forceClean = true // FiboLevel To Clean buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Update Calculations ...
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Copy Items ...
|
|
||||||
return Copy(
|
|
||||||
start,
|
|
||||||
count,
|
|
||||||
fl3Buffer,
|
|
||||||
buffer,
|
|
||||||
forceClean
|
|
||||||
//
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 4 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
double GetFiboLevel4(
|
|
||||||
int barIndex // Bar Index
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
if (barIndex < 0)
|
|
||||||
{
|
|
||||||
barIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
int count = ArraySize(fl4Buffer);
|
|
||||||
if (barIndex >= count)
|
|
||||||
{
|
|
||||||
barIndex = count - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return fl4Buffer[barIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
int CopyFiboLevel4(
|
|
||||||
int start, // Start
|
|
||||||
int count, // Number of Items for read
|
|
||||||
double &buffer[], // Dest Buffer
|
|
||||||
bool forceClean = true // FiboLevel To Clean buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Update Calculations ...
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Copy Items ...
|
|
||||||
return Copy(
|
|
||||||
start,
|
|
||||||
count,
|
|
||||||
fl4Buffer,
|
|
||||||
buffer,
|
|
||||||
forceClean
|
|
||||||
//
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 5 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
double GetFiboLevel5(
|
|
||||||
int barIndex // Bar Index
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
if (barIndex < 0)
|
|
||||||
{
|
|
||||||
barIndex = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
int count = ArraySize(fl5Buffer);
|
|
||||||
if (barIndex >= count)
|
|
||||||
{
|
|
||||||
barIndex = count - 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
return fl5Buffer[barIndex];
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
int CopyFiboLevel5(
|
|
||||||
int start, // Start
|
|
||||||
int count, // Number of Items for read
|
|
||||||
double &buffer[], // Dest Buffer
|
|
||||||
bool forceClean = true // FiboLevel To Clean buffer
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
// Update Calculations ...
|
|
||||||
Calculate();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Copy Items ...
|
|
||||||
return Copy(
|
|
||||||
start,
|
|
||||||
count,
|
|
||||||
fl5Buffer,
|
|
||||||
buffer,
|
|
||||||
forceClean
|
|
||||||
//
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Conditions Generation ...
|
// Conditions Generation ...
|
||||||
|
|
||||||
@@ -4306,41 +3872,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
conditions.donLowLowerBuffer //
|
conditions.donLowLowerBuffer //
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
|
||||||
CopyFiboLevel1(
|
|
||||||
zIndex,
|
|
||||||
loopback,
|
|
||||||
conditions.fl1Buffer //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
CopyFiboLevel2(
|
|
||||||
zIndex,
|
|
||||||
loopback,
|
|
||||||
conditions.fl2Buffer //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
CopyFiboLevel3(
|
|
||||||
zIndex,
|
|
||||||
loopback,
|
|
||||||
conditions.fl3Buffer //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
CopyFiboLevel4(
|
|
||||||
zIndex,
|
|
||||||
loopback,
|
|
||||||
conditions.fl4Buffer //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
CopyFiboLevel5(
|
|
||||||
zIndex,
|
|
||||||
loopback,
|
|
||||||
conditions.fl5Buffer //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Conditions ...
|
// Conditions ...
|
||||||
|
|
||||||
@@ -4513,39 +4044,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
//
|
//
|
||||||
// XDON ...
|
// XDON ...
|
||||||
|
|
||||||
//
|
|
||||||
// XFIBONACCI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isOerFib1 = cBar.low > conditions.fl1Buffer[cIDX];
|
|
||||||
bool isOerFib2 = cBar.low > conditions.fl2Buffer[cIDX];
|
|
||||||
bool isOerFib3 = cBar.low > conditions.fl3Buffer[cIDX];
|
|
||||||
bool isOerFib4 = cBar.low > conditions.fl4Buffer[cIDX];
|
|
||||||
bool isOerFib5 = cBar.low > conditions.fl5Buffer[cIDX];
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isUnderFib1 = cBar.high < conditions.fl1Buffer[cIDX];
|
|
||||||
bool isUnderFib2 = cBar.high < conditions.fl2Buffer[cIDX];
|
|
||||||
bool isUnderFib3 = cBar.high < conditions.fl3Buffer[cIDX];
|
|
||||||
bool isUnderFib4 = cBar.high < conditions.fl4Buffer[cIDX];
|
|
||||||
bool isUnderFib5 = cBar.high < conditions.fl5Buffer[cIDX];
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isCloseOerFib1 = cBar.close > conditions.fl1Buffer[cIDX];
|
|
||||||
bool isCloseOerFib2 = cBar.close > conditions.fl2Buffer[cIDX];
|
|
||||||
bool isCloseOerFib3 = cBar.close > conditions.fl3Buffer[cIDX];
|
|
||||||
bool isCloseOerFib4 = cBar.close > conditions.fl4Buffer[cIDX];
|
|
||||||
bool isCloseOerFib5 = cBar.close > conditions.fl5Buffer[cIDX];
|
|
||||||
|
|
||||||
//
|
|
||||||
bool isCloseUnderFib1 = cBar.close < conditions.fl1Buffer[cIDX];
|
|
||||||
bool isCloseUnderFib2 = cBar.close < conditions.fl2Buffer[cIDX];
|
|
||||||
bool isCloseUnderFib3 = cBar.close < conditions.fl3Buffer[cIDX];
|
|
||||||
bool isCloseUnderFib4 = cBar.close < conditions.fl4Buffer[cIDX];
|
|
||||||
bool isCloseUnderFib5 = cBar.close < conditions.fl5Buffer[cIDX];
|
|
||||||
|
|
||||||
//
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Set ...
|
// Set ...
|
||||||
conditions.isRSIOverBought = isRSIOverBought;
|
conditions.isRSIOverBought = isRSIOverBought;
|
||||||
@@ -4587,26 +4085,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
conditions.isVWapSwitchedToBullishState = isVWapSwitchedToBullishState;
|
conditions.isVWapSwitchedToBullishState = isVWapSwitchedToBullishState;
|
||||||
conditions.isVWapSwitchedToBearishState = isVWapSwitchedToBearishState;
|
conditions.isVWapSwitchedToBearishState = isVWapSwitchedToBearishState;
|
||||||
conditions.isVWapSwitchedToNeuturalState = isVWapSwitchedToNeuturalState;
|
conditions.isVWapSwitchedToNeuturalState = isVWapSwitchedToNeuturalState;
|
||||||
conditions.isOerFib1 = isOerFib1;
|
|
||||||
conditions.isOerFib2 = isOerFib2;
|
|
||||||
conditions.isOerFib3 = isOerFib3;
|
|
||||||
conditions.isOerFib4 = isOerFib4;
|
|
||||||
conditions.isOerFib5 = isOerFib5;
|
|
||||||
conditions.isUnderFib1 = isUnderFib1;
|
|
||||||
conditions.isUnderFib2 = isUnderFib2;
|
|
||||||
conditions.isUnderFib3 = isUnderFib3;
|
|
||||||
conditions.isUnderFib4 = isUnderFib4;
|
|
||||||
conditions.isUnderFib5 = isUnderFib5;
|
|
||||||
conditions.isCloseOerFib1 = isCloseOerFib1;
|
|
||||||
conditions.isCloseOerFib2 = isCloseOerFib2;
|
|
||||||
conditions.isCloseOerFib3 = isCloseOerFib3;
|
|
||||||
conditions.isCloseOerFib4 = isCloseOerFib4;
|
|
||||||
conditions.isCloseOerFib5 = isCloseOerFib5;
|
|
||||||
conditions.isCloseUnderFib1 = isCloseUnderFib1;
|
|
||||||
conditions.isCloseUnderFib2 = isCloseUnderFib2;
|
|
||||||
conditions.isCloseUnderFib3 = isCloseUnderFib3;
|
|
||||||
conditions.isCloseUnderFib4 = isCloseUnderFib4;
|
|
||||||
conditions.isCloseUnderFib5 = isCloseUnderFib5;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
@@ -4622,12 +4100,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
// Props ...
|
// Props ...
|
||||||
X121Inputs mInputs; // Inputs ...
|
X121Inputs mInputs; // Inputs ...
|
||||||
|
|
||||||
//
|
|
||||||
// Buffers ...
|
|
||||||
|
|
||||||
//
|
|
||||||
int mRSIHandler; // RSI Handler ...
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Buffers ...
|
// Buffers ...
|
||||||
double peaksBuffer[];
|
double peaksBuffer[];
|
||||||
@@ -4646,11 +4118,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
double donHighLowerBuffer[];
|
double donHighLowerBuffer[];
|
||||||
double donLowUpperBuffer[];
|
double donLowUpperBuffer[];
|
||||||
double donLowLowerBuffer[];
|
double donLowLowerBuffer[];
|
||||||
double fl1Buffer[];
|
|
||||||
double fl2Buffer[];
|
|
||||||
double fl3Buffer[];
|
|
||||||
double fl4Buffer[];
|
|
||||||
double fl5Buffer[];
|
|
||||||
double cHHBuffer[];
|
double cHHBuffer[];
|
||||||
double cLLBuffer[];
|
double cLLBuffer[];
|
||||||
double sHHBuffer[];
|
double sHHBuffer[];
|
||||||
@@ -4692,8 +4159,8 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
//
|
//
|
||||||
// RSI ...
|
// RSI ...
|
||||||
CopyBuffer(
|
CopyBuffer(
|
||||||
mRSIHandler,
|
mHandler,
|
||||||
0,
|
X121_RSI_LINE,
|
||||||
0,
|
0,
|
||||||
totalBars,
|
totalBars,
|
||||||
rsiBuffer
|
rsiBuffer
|
||||||
@@ -5005,64 +4472,6 @@ class XCX121Helper : public XCBaseHelper
|
|||||||
//
|
//
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
|
||||||
// FIBONACCI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 1 ...
|
|
||||||
CopyBuffer(
|
|
||||||
mHandler,
|
|
||||||
X121_FIB_LEVEL_1_LINE,
|
|
||||||
0,
|
|
||||||
totalBars,
|
|
||||||
fl1Buffer
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 2 ...
|
|
||||||
CopyBuffer(
|
|
||||||
mHandler,
|
|
||||||
X121_FIB_LEVEL_2_LINE,
|
|
||||||
0,
|
|
||||||
totalBars,
|
|
||||||
fl2Buffer
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 3 ...
|
|
||||||
CopyBuffer(
|
|
||||||
mHandler,
|
|
||||||
X121_FIB_LEVEL_3_LINE,
|
|
||||||
0,
|
|
||||||
totalBars,
|
|
||||||
fl3Buffer
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 4 ...
|
|
||||||
CopyBuffer(
|
|
||||||
mHandler,
|
|
||||||
X121_FIB_LEVEL_4_LINE,
|
|
||||||
0,
|
|
||||||
totalBars,
|
|
||||||
fl4Buffer
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 5 ...
|
|
||||||
CopyBuffer(
|
|
||||||
mHandler,
|
|
||||||
X121_FIB_LEVEL_5_LINE,
|
|
||||||
0,
|
|
||||||
totalBars,
|
|
||||||
fl5Buffer
|
|
||||||
//
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// XDON ...
|
// XDON ...
|
||||||
|
|
||||||
|
|||||||
+74
-278
@@ -62,6 +62,11 @@ input group "Boundary Detection";
|
|||||||
input ENUM_SERIESMODE hhMode = MODE_HIGH; // Highest High Calculation Method
|
input ENUM_SERIESMODE hhMode = MODE_HIGH; // Highest High Calculation Method
|
||||||
input ENUM_SERIESMODE llMode = MODE_LOW; // Lowest Low Calculation Method
|
input ENUM_SERIESMODE llMode = MODE_LOW; // Lowest Low Calculation Method
|
||||||
|
|
||||||
|
//
|
||||||
|
input group "Rsi Detection";
|
||||||
|
input int rsiLength = 14; // Length
|
||||||
|
input ENUM_APPLIED_PRICE rsiAppliedTo = PRICE_CLOSE; // Applied To
|
||||||
|
|
||||||
//
|
//
|
||||||
input group "Parabolic Sar Detection";
|
input group "Parabolic Sar Detection";
|
||||||
input double sarStep = 0.02; // Step
|
input double sarStep = 0.02; // Step
|
||||||
@@ -92,6 +97,11 @@ input group "Presentation";
|
|||||||
//
|
//
|
||||||
input int startCalculationForLastBars = 1000; // Calculate Last n Bars
|
input int startCalculationForLastBars = 1000; // Calculate Last n Bars
|
||||||
|
|
||||||
|
//
|
||||||
|
input int sarArrowCode = 159; // Parabolic Sar Arrow Code
|
||||||
|
input int peaksArrowCode = 159; // Peaks Arrow Code
|
||||||
|
input int valesArrowCode = 159; // Vales Arrow Code
|
||||||
|
|
||||||
//
|
//
|
||||||
input bool showSar = true; // Show Parabolic Sar
|
input bool showSar = true; // Show Parabolic Sar
|
||||||
input bool showAtr = true; // Show Atr
|
input bool showAtr = true; // Show Atr
|
||||||
@@ -100,14 +110,6 @@ input bool showVales = true; // Show Vales
|
|||||||
input bool showVWap = true; // Show VWap
|
input bool showVWap = true; // Show VWap
|
||||||
input bool showDonchain = true; // Show Donchain
|
input bool showDonchain = true; // Show Donchain
|
||||||
|
|
||||||
//
|
|
||||||
input group "Fibonachi Presentation";
|
|
||||||
input bool showFibo1Levels = false; // Show Fibo 1st Level
|
|
||||||
input bool showFibo2Levels = false; // Show Fibo 2nd Level
|
|
||||||
input bool showFibo3Levels = false; // Show Fibo 3rd Level
|
|
||||||
input bool showFibo4Levels = false; // Show Fibo 4th Level
|
|
||||||
input bool showFibo5Levels = false; // Show Fibo 5th Level
|
|
||||||
|
|
||||||
//
|
//
|
||||||
input group "Atr Presentation";
|
input group "Atr Presentation";
|
||||||
input bool showAtrUpper = true; // Show Upper Zone
|
input bool showAtrUpper = true; // Show Upper Zone
|
||||||
@@ -128,22 +130,6 @@ input bool showHigh = false; // Show High
|
|||||||
input bool showClose = true; // Show Close
|
input bool showClose = true; // Show Close
|
||||||
input bool showLow = false; // Show Low
|
input bool showLow = false; // Show Low
|
||||||
|
|
||||||
//
|
|
||||||
// Non Important Inputs ...
|
|
||||||
|
|
||||||
//
|
|
||||||
input group "Fibonacci";
|
|
||||||
input double fiboLevel1 = 0.236; // Fibio 1st Level
|
|
||||||
input double fiboLevel2 = 0.382; // Fibio 2st Level
|
|
||||||
input double fiboLevel3 = 0.5; // Fibio 3rd Level
|
|
||||||
input double fiboLevel4 = 0.618; // Fibio 4th Level
|
|
||||||
input double fiboLevel5 = 0.764; // Fibio 5th Level
|
|
||||||
|
|
||||||
//
|
|
||||||
input int sarArrowCode = 159; // Parabolic Sar Arrow Code
|
|
||||||
input int peaksArrowCode = 159; // Peaks Arrow Code
|
|
||||||
input int valesArrowCode = 159; // Vales Arrow Code
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Buffers ...
|
// Buffers ...
|
||||||
|
|
||||||
@@ -157,8 +143,8 @@ input int valesArrowCode = 159; // Vales Arrow Code
|
|||||||
#property indicator_chart_window
|
#property indicator_chart_window
|
||||||
|
|
||||||
//
|
//
|
||||||
#property indicator_buffers 42
|
#property indicator_buffers 38
|
||||||
#property indicator_plots 21
|
#property indicator_plots 16
|
||||||
|
|
||||||
//
|
//
|
||||||
// PEAKS ...
|
// PEAKS ...
|
||||||
@@ -382,89 +368,11 @@ double donCloseLowerBuffer[];
|
|||||||
#property indicator_color16 clrCoral
|
#property indicator_color16 clrCoral
|
||||||
#property indicator_width16 1
|
#property indicator_width16 1
|
||||||
|
|
||||||
//
|
|
||||||
// FIBONACCI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// FIBBO Level 1 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl1BufferIndex 19
|
|
||||||
double fl1Buffer[];
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl1PlotBufferIndex 16
|
|
||||||
#property indicator_label17 "X121 FL1"
|
|
||||||
#property indicator_type17 DRAW_LINE
|
|
||||||
#property indicator_color17 clrGold
|
|
||||||
#property indicator_style17 STYLE_DASHDOTDOT
|
|
||||||
#property indicator_width17 1
|
|
||||||
|
|
||||||
//
|
|
||||||
// FIBBO Level 2 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl2BufferIndex 20
|
|
||||||
double fl2Buffer[];
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl2PlotBufferIndex 17
|
|
||||||
#property indicator_label18 "X121 FL2"
|
|
||||||
#property indicator_type18 DRAW_LINE
|
|
||||||
#property indicator_color18 clrGold
|
|
||||||
#property indicator_style18 STYLE_DASHDOTDOT
|
|
||||||
#property indicator_width18 1
|
|
||||||
|
|
||||||
//
|
|
||||||
// FIBBO Level 3 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl3BufferIndex 21
|
|
||||||
double fl3Buffer[];
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl3PlotBufferIndex 18
|
|
||||||
#property indicator_label19 "X121 FL3"
|
|
||||||
#property indicator_type19 DRAW_LINE
|
|
||||||
#property indicator_color19 clrGold
|
|
||||||
#property indicator_style19 STYLE_DASHDOTDOT
|
|
||||||
#property indicator_width19 1
|
|
||||||
|
|
||||||
//
|
|
||||||
// FIBBO Level 4 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl4BufferIndex 22
|
|
||||||
double fl4Buffer[];
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl4PlotBufferIndex 19
|
|
||||||
#property indicator_label20 "X121 FL4"
|
|
||||||
#property indicator_type20 DRAW_LINE
|
|
||||||
#property indicator_color20 clrGold
|
|
||||||
#property indicator_style20 STYLE_DASHDOTDOT
|
|
||||||
#property indicator_width20 1
|
|
||||||
|
|
||||||
//
|
|
||||||
// FIBBO Level 5 ...
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl5BufferIndex 23
|
|
||||||
double fl5Buffer[];
|
|
||||||
|
|
||||||
//
|
|
||||||
#define fl5PlotBufferIndex 20
|
|
||||||
#property indicator_label21 "X121 FL5"
|
|
||||||
#property indicator_type21 DRAW_LINE
|
|
||||||
#property indicator_color21 clrGold
|
|
||||||
#property indicator_style21 STYLE_DASHDOTDOT
|
|
||||||
#property indicator_width21 1
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Data Buffers ...
|
// Data Buffers ...
|
||||||
|
|
||||||
//
|
//
|
||||||
int mLastBufferIndex = 23;
|
int mLastBufferIndex = 18;
|
||||||
|
|
||||||
//
|
//
|
||||||
// CURRENT ...
|
// CURRENT ...
|
||||||
@@ -522,7 +430,7 @@ double hHHBuffer[];
|
|||||||
double hLLBuffer[];
|
double hLLBuffer[];
|
||||||
|
|
||||||
//
|
//
|
||||||
// VOLUME ...
|
// VWAP ...
|
||||||
#define vwapVolumeBufferIndex mLastBufferIndex + 11
|
#define vwapVolumeBufferIndex mLastBufferIndex + 11
|
||||||
double vwapVolumeBuffer[];
|
double vwapVolumeBuffer[];
|
||||||
|
|
||||||
@@ -558,6 +466,11 @@ double atrUpperRawBuffer[];
|
|||||||
#define atrLowerRawBufferIndex mLastBufferIndex + 18
|
#define atrLowerRawBufferIndex mLastBufferIndex + 18
|
||||||
double atrLowerRawBuffer[];
|
double atrLowerRawBuffer[];
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
#define rsiBufferIndex mLastBufferIndex + 19
|
||||||
|
double rsiBuffer[];
|
||||||
|
|
||||||
//
|
//
|
||||||
// Variables, Properties and etc ...
|
// Variables, Properties and etc ...
|
||||||
|
|
||||||
@@ -568,6 +481,10 @@ int limit;
|
|||||||
//
|
//
|
||||||
int maxLength;
|
int maxLength;
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI Handler ...
|
||||||
|
int rsiHandler = INVALID_HANDLE;
|
||||||
|
|
||||||
//
|
//
|
||||||
// SAR Handler ...
|
// SAR Handler ...
|
||||||
int sarHandler = INVALID_HANDLE;
|
int sarHandler = INVALID_HANDLE;
|
||||||
@@ -619,6 +536,20 @@ int OnInit()
|
|||||||
//
|
//
|
||||||
// Initialize Indicator Handlers ...
|
// Initialize Indicator Handlers ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
rsiHandler = iRSI(
|
||||||
|
_Symbol,
|
||||||
|
_Period,
|
||||||
|
rsiLength,
|
||||||
|
rsiAppliedTo //
|
||||||
|
);
|
||||||
|
bool isInited = rsiHandler != INVALID_HANDLE;
|
||||||
|
if (!isInited)
|
||||||
|
{
|
||||||
|
return INIT_FAILED;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// SAR ...
|
// SAR ...
|
||||||
sarHandler = iSAR(
|
sarHandler = iSAR(
|
||||||
@@ -627,7 +558,7 @@ int OnInit()
|
|||||||
sarStep,
|
sarStep,
|
||||||
sarMax //
|
sarMax //
|
||||||
);
|
);
|
||||||
bool isInited = sarHandler != INVALID_HANDLE;
|
isInited = sarHandler != INVALID_HANDLE;
|
||||||
if (!isInited)
|
if (!isInited)
|
||||||
{
|
{
|
||||||
return INIT_FAILED;
|
return INIT_FAILED;
|
||||||
@@ -692,6 +623,7 @@ void OnDeinit(const int reason)
|
|||||||
// REASON_CLOSE 9 Terminal closed
|
// REASON_CLOSE 9 Terminal closed
|
||||||
|
|
||||||
//
|
//
|
||||||
|
IndicatorRelease(rsiHandler);
|
||||||
IndicatorRelease(sarHandler);
|
IndicatorRelease(sarHandler);
|
||||||
IndicatorRelease(atrHandler);
|
IndicatorRelease(atrHandler);
|
||||||
}
|
}
|
||||||
@@ -749,6 +681,10 @@ int OnCalculate(
|
|||||||
//
|
//
|
||||||
// Validate Calculated Bars ...
|
// Validate Calculated Bars ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
int rsiCalculatedBars = BarsCalculated(rsiHandler);
|
||||||
|
|
||||||
//
|
//
|
||||||
// SAR ...
|
// SAR ...
|
||||||
int sarCalculatedBars = BarsCalculated(sarHandler);
|
int sarCalculatedBars = BarsCalculated(sarHandler);
|
||||||
@@ -759,11 +695,14 @@ int OnCalculate(
|
|||||||
|
|
||||||
//
|
//
|
||||||
bool isPassedRequiredCalculatedBars =
|
bool isPassedRequiredCalculatedBars =
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
rsiCalculatedBars >= maxLength &&
|
||||||
//
|
//
|
||||||
// SAR ...
|
// SAR ...
|
||||||
sarCalculatedBars >= maxLength &&
|
sarCalculatedBars >= maxLength &&
|
||||||
//
|
//
|
||||||
// ATR...
|
// ATR ...
|
||||||
sarCalculatedBars >= maxLength
|
sarCalculatedBars >= maxLength
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
@@ -778,6 +717,10 @@ int OnCalculate(
|
|||||||
//
|
//
|
||||||
// Buffers Copy ...
|
// Buffers Copy ...
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
int copiedRsis = CopyBuffer(rsiHandler, 0, 0, limit, rsiBuffer);
|
||||||
|
|
||||||
//
|
//
|
||||||
// SAR ...
|
// SAR ...
|
||||||
int copiedSars = CopyBuffer(sarHandler, 0, 0, limit, sarBuffer);
|
int copiedSars = CopyBuffer(sarHandler, 0, 0, limit, sarBuffer);
|
||||||
@@ -791,8 +734,13 @@ int OnCalculate(
|
|||||||
bool isPassedRequiredCopiedItems =
|
bool isPassedRequiredCopiedItems =
|
||||||
//
|
//
|
||||||
//
|
//
|
||||||
|
// RSI ...
|
||||||
|
copiedRsis > 0 &&
|
||||||
|
//
|
||||||
// SAR ...
|
// SAR ...
|
||||||
copiedSars > 0 &&
|
copiedSars > 0 &&
|
||||||
|
//
|
||||||
|
// ATR ...
|
||||||
copiedAtrs > 0
|
copiedAtrs > 0
|
||||||
//
|
//
|
||||||
;
|
;
|
||||||
@@ -835,6 +783,9 @@ bool ValidateInputs()
|
|||||||
{
|
{
|
||||||
//
|
//
|
||||||
bool result =
|
bool result =
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
rsiLength > 0 &&
|
||||||
//
|
//
|
||||||
// PSAR ...
|
// PSAR ...
|
||||||
sarMax > 0 &&
|
sarMax > 0 &&
|
||||||
@@ -891,6 +842,10 @@ int ExtractMaxLengthOfInputs()
|
|||||||
// ATR ...
|
// ATR ...
|
||||||
result = MathMax(result, atrLength);
|
result = MathMax(result, atrLength);
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
result = MathMax(result, rsiLength);
|
||||||
|
|
||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -1096,59 +1051,6 @@ void DefineBuffers()
|
|||||||
PlotIndexSetInteger(donLowLowerPlotBufferIndex, PLOT_SHOW_DATA, canShowCLowLower);
|
PlotIndexSetInteger(donLowLowerPlotBufferIndex, PLOT_SHOW_DATA, canShowCLowLower);
|
||||||
PlotIndexSetInteger(donLowLowerPlotBufferIndex, PLOT_DRAW_TYPE, donLowLowerDrawType);
|
PlotIndexSetInteger(donLowLowerPlotBufferIndex, PLOT_DRAW_TYPE, donLowLowerDrawType);
|
||||||
|
|
||||||
//
|
|
||||||
// FIBONNACI ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 1 ...
|
|
||||||
bool canShowFl1 = showFibo1Levels;
|
|
||||||
ENUM_DRAW_TYPE fl1DrawType = canShowFl1 ? DRAW_LINE : DRAW_NONE;
|
|
||||||
ArraySetAsSeries(fl1Buffer, true);
|
|
||||||
SetIndexBuffer(fl1BufferIndex, fl1Buffer, INDICATOR_DATA);
|
|
||||||
PlotIndexSetDouble(fl1PlotBufferIndex, PLOT_EMPTY_VALUE, EMPTY_VALUE);
|
|
||||||
PlotIndexSetInteger(fl1PlotBufferIndex, PLOT_SHOW_DATA, canShowFl1);
|
|
||||||
PlotIndexSetInteger(fl1PlotBufferIndex, PLOT_DRAW_TYPE, fl1DrawType);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 2 ...
|
|
||||||
bool canShowFl2 = showFibo2Levels;
|
|
||||||
ENUM_DRAW_TYPE fl2DrawType = canShowFl2 ? DRAW_LINE : DRAW_NONE;
|
|
||||||
ArraySetAsSeries(fl2Buffer, true);
|
|
||||||
SetIndexBuffer(fl2BufferIndex, fl2Buffer, INDICATOR_DATA);
|
|
||||||
PlotIndexSetDouble(fl2PlotBufferIndex, PLOT_EMPTY_VALUE, EMPTY_VALUE);
|
|
||||||
PlotIndexSetInteger(fl2PlotBufferIndex, PLOT_SHOW_DATA, canShowFl2);
|
|
||||||
PlotIndexSetInteger(fl2PlotBufferIndex, PLOT_DRAW_TYPE, fl2DrawType);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 3 ...
|
|
||||||
bool canShowFl3 = showFibo3Levels;
|
|
||||||
ENUM_DRAW_TYPE fl3DrawType = canShowFl3 ? DRAW_LINE : DRAW_NONE;
|
|
||||||
ArraySetAsSeries(fl3Buffer, true);
|
|
||||||
SetIndexBuffer(fl3BufferIndex, fl3Buffer, INDICATOR_DATA);
|
|
||||||
PlotIndexSetDouble(fl3PlotBufferIndex, PLOT_EMPTY_VALUE, EMPTY_VALUE);
|
|
||||||
PlotIndexSetInteger(fl3PlotBufferIndex, PLOT_SHOW_DATA, canShowFl3);
|
|
||||||
PlotIndexSetInteger(fl3PlotBufferIndex, PLOT_DRAW_TYPE, fl3DrawType);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 4 ...
|
|
||||||
bool canShowFl4 = showFibo4Levels;
|
|
||||||
ENUM_DRAW_TYPE fl4DrawType = canShowFl4 ? DRAW_LINE : DRAW_NONE;
|
|
||||||
ArraySetAsSeries(fl4Buffer, true);
|
|
||||||
SetIndexBuffer(fl4BufferIndex, fl4Buffer, INDICATOR_DATA);
|
|
||||||
PlotIndexSetDouble(fl4PlotBufferIndex, PLOT_EMPTY_VALUE, EMPTY_VALUE);
|
|
||||||
PlotIndexSetInteger(fl4PlotBufferIndex, PLOT_SHOW_DATA, canShowFl4);
|
|
||||||
PlotIndexSetInteger(fl4PlotBufferIndex, PLOT_DRAW_TYPE, fl4DrawType);
|
|
||||||
|
|
||||||
//
|
|
||||||
// LEVEL 5 ...
|
|
||||||
bool canShowFl5 = showFibo5Levels;
|
|
||||||
ENUM_DRAW_TYPE fl5DrawType = canShowFl5 ? DRAW_LINE : DRAW_NONE;
|
|
||||||
ArraySetAsSeries(fl5Buffer, true);
|
|
||||||
SetIndexBuffer(fl5BufferIndex, fl5Buffer, INDICATOR_DATA);
|
|
||||||
PlotIndexSetDouble(fl5PlotBufferIndex, PLOT_EMPTY_VALUE, EMPTY_VALUE);
|
|
||||||
PlotIndexSetInteger(fl5PlotBufferIndex, PLOT_SHOW_DATA, canShowFl5);
|
|
||||||
PlotIndexSetInteger(fl5PlotBufferIndex, PLOT_DRAW_TYPE, fl5DrawType);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Data Buffers ...
|
// Data Buffers ...
|
||||||
|
|
||||||
@@ -1249,6 +1151,13 @@ void DefineBuffers()
|
|||||||
//
|
//
|
||||||
ArraySetAsSeries(atrLowerRawBuffer, true);
|
ArraySetAsSeries(atrLowerRawBuffer, true);
|
||||||
SetIndexBuffer(atrLowerRawBufferIndex, atrLowerRawBuffer, INDICATOR_CALCULATIONS);
|
SetIndexBuffer(atrLowerRawBufferIndex, atrLowerRawBuffer, INDICATOR_CALCULATIONS);
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSI ...
|
||||||
|
|
||||||
|
//
|
||||||
|
ArraySetAsSeries(rsiBuffer, true);
|
||||||
|
SetIndexBuffer(rsiBufferIndex, rsiBuffer, INDICATOR_CALCULATIONS);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1324,11 +1233,6 @@ void CalculateBuffers(
|
|||||||
low //
|
low //
|
||||||
);
|
);
|
||||||
|
|
||||||
//
|
|
||||||
CalculateFibonacci(
|
|
||||||
bar_index //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Calculate Required VWAP Data Buffers ...
|
// Calculate Required VWAP Data Buffers ...
|
||||||
if (ratesTotal - bar_index <= maxLength)
|
if (ratesTotal - bar_index <= maxLength)
|
||||||
@@ -1539,6 +1443,10 @@ void FillBuffersZero(int barIndex)
|
|||||||
// SARS ...
|
// SARS ...
|
||||||
sarBuffer[barIndex] = 0;
|
sarBuffer[barIndex] = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
// RSIS ...
|
||||||
|
rsiBuffer[barIndex] = 0;
|
||||||
|
|
||||||
//
|
//
|
||||||
// ATRS ...
|
// ATRS ...
|
||||||
atrBuffer[barIndex] = 0;
|
atrBuffer[barIndex] = 0;
|
||||||
@@ -1574,13 +1482,6 @@ void FillBuffersZero(int barIndex)
|
|||||||
donHighLowerBuffer[barIndex] = 0;
|
donHighLowerBuffer[barIndex] = 0;
|
||||||
donLowUpperBuffer[barIndex] = 0;
|
donLowUpperBuffer[barIndex] = 0;
|
||||||
donLowLowerBuffer[barIndex] = 0;
|
donLowLowerBuffer[barIndex] = 0;
|
||||||
|
|
||||||
//
|
|
||||||
fl1Buffer[barIndex] = 0;
|
|
||||||
fl2Buffer[barIndex] = 0;
|
|
||||||
fl3Buffer[barIndex] = 0;
|
|
||||||
fl4Buffer[barIndex] = 0;
|
|
||||||
fl5Buffer[barIndex] = 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -2213,109 +2114,4 @@ void CalculateAtrZones(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Calculate Fibonacci Levels ...
|
|
||||||
*
|
|
||||||
* @param bar_index: Integer, current Bar Index ...
|
|
||||||
*/
|
|
||||||
void CalculateFibonacci(
|
|
||||||
int bar_index //
|
|
||||||
)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double fiboUpper = 0;
|
|
||||||
double fiboLower = 0;
|
|
||||||
|
|
||||||
//
|
|
||||||
fiboUpper = peaksBuffer[bar_index];
|
|
||||||
fiboLower = valesBuffer[bar_index];
|
|
||||||
|
|
||||||
//
|
|
||||||
// Level 1 ...
|
|
||||||
bool canCalculateFiboLevel1 = fiboLevel1 > 0;
|
|
||||||
if (canCalculateFiboLevel1)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double iFib = GetFibonacciLevel(
|
|
||||||
fiboUpper,
|
|
||||||
fiboLower,
|
|
||||||
fiboLevel1,
|
|
||||||
1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
fl1Buffer[bar_index] = iFib;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Level 2 ...
|
|
||||||
bool canCalculateFiboLevel2 = fiboLevel2 > 0;
|
|
||||||
if (canCalculateFiboLevel2)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double iFib = GetFibonacciLevel(
|
|
||||||
fiboUpper,
|
|
||||||
fiboLower,
|
|
||||||
fiboLevel2,
|
|
||||||
1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
fl2Buffer[bar_index] = iFib;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Level 3 ...
|
|
||||||
bool canCalculateFiboLevel3 = fiboLevel3 > 0;
|
|
||||||
if (canCalculateFiboLevel3)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double iFib = GetFibonacciLevel(
|
|
||||||
fiboUpper,
|
|
||||||
fiboLower,
|
|
||||||
fiboLevel3,
|
|
||||||
1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
fl3Buffer[bar_index] = iFib;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Level 4 ...
|
|
||||||
bool canCalculateFiboLevel4 = fiboLevel4 > 0;
|
|
||||||
if (canCalculateFiboLevel4)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double iFib = GetFibonacciLevel(
|
|
||||||
fiboUpper,
|
|
||||||
fiboLower,
|
|
||||||
fiboLevel4,
|
|
||||||
1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
fl4Buffer[bar_index] = iFib;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Level 5 ...
|
|
||||||
bool canCalculateFiboLevel5 = fiboLevel5 > 0;
|
|
||||||
if (canCalculateFiboLevel5)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
double iFib = GetFibonacciLevel(
|
|
||||||
fiboUpper,
|
|
||||||
fiboLower,
|
|
||||||
fiboLevel5,
|
|
||||||
1 //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
fl5Buffer[bar_index] = iFib;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -165,6 +165,28 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
ReConfigure();
|
ReConfigure();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Allow Open Trade On Signals State ...
|
||||||
|
*
|
||||||
|
* @return ( bool )
|
||||||
|
*/
|
||||||
|
bool AllowTrade()
|
||||||
|
{
|
||||||
|
return mAllowTrade;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set Allow Open Trade On Signals State ...
|
||||||
|
*
|
||||||
|
* @param value: Boolean ...
|
||||||
|
*/
|
||||||
|
void AllowTrade(bool value)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
mAllowTrade = value;
|
||||||
|
ReConfigure();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Use Max Allowed Signal Types Per Symbol State ...
|
* Get Use Max Allowed Signal Types Per Symbol State ...
|
||||||
*
|
*
|
||||||
@@ -805,6 +827,11 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
//
|
//
|
||||||
datetime currentTime = TimeCurrent();
|
datetime currentTime = TimeCurrent();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Chack Allow Trades ...
|
||||||
|
bool allowTrade = AllowTrade();
|
||||||
|
if (allowTrade)
|
||||||
|
{
|
||||||
//
|
//
|
||||||
// Execute Signal Using Trade Handler ...
|
// Execute Signal Using Trade Handler ...
|
||||||
ENUM_X_SIGNAL_EXECUTION_RESULT state;
|
ENUM_X_SIGNAL_EXECUTION_RESULT state;
|
||||||
@@ -815,6 +842,50 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
false // ignore Policies ...
|
false // ignore Policies ...
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Only Alert Signals ...
|
||||||
|
string msg = (IsLong(signal.type)
|
||||||
|
? "Long"
|
||||||
|
: "Short") +
|
||||||
|
" Signal Recieved: (" +
|
||||||
|
signal.provider + "," +
|
||||||
|
signal.symbol + "," +
|
||||||
|
ToString(signal.period) +
|
||||||
|
") ...";
|
||||||
|
|
||||||
|
//
|
||||||
|
Alert(msg);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Draw Signals and Conditions ...
|
||||||
|
if (eaDrawer != NULL)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
XCBaseObject *objects[];
|
||||||
|
XCSignalObject *signalObject;
|
||||||
|
bool isCreated = eaDrawer.DrawSignal(
|
||||||
|
signal,
|
||||||
|
signalObject //
|
||||||
|
);
|
||||||
|
DrawX121SMCStrategyConditions(
|
||||||
|
conditions,
|
||||||
|
objects,
|
||||||
|
eaDrawer,
|
||||||
|
true, // draw Market Structure ...
|
||||||
|
true, // Draw Price Zones ...
|
||||||
|
true // Draw Decision Zones ...
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
(XCBaseObject *)signalObject,
|
||||||
|
objects //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Override Actions ...
|
// Override Actions ...
|
||||||
@@ -1034,7 +1105,7 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
//
|
//
|
||||||
// Parsers ...
|
// Parsers ...
|
||||||
XSymbolParser _symbolParser;
|
XSymbolParser _symbolParser;
|
||||||
XCPOIDrawer *poiDrawer = NULL;
|
eaDrawer = NULL;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Single Symbol ...
|
// Single Symbol ...
|
||||||
@@ -1052,10 +1123,10 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
if (poiDrawer == NULL)
|
if (eaDrawer == NULL)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
poiDrawer = iX121SMCStrategy
|
eaDrawer = iX121SMCStrategy
|
||||||
.GetDrawer();
|
.GetDrawer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1125,10 +1196,10 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
if (poiDrawer == NULL)
|
if (eaDrawer == NULL)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
poiDrawer = iX121SMCStrategy
|
eaDrawer = iX121SMCStrategy
|
||||||
.GetDrawer();
|
.GetDrawer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1144,9 +1215,9 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
if (poiDrawer != NULL)
|
if (eaDrawer != NULL)
|
||||||
{
|
{
|
||||||
mTradeHandler.SetDrawer(poiDrawer);
|
mTradeHandler.SetDrawer(eaDrawer);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -1574,6 +1645,7 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
// Signalling Props ...
|
// Signalling Props ...
|
||||||
bool mAllowLong; // Allow Long Signals ...
|
bool mAllowLong; // Allow Long Signals ...
|
||||||
bool mAllowShort; // Allow Short Signals ...
|
bool mAllowShort; // Allow Short Signals ...
|
||||||
|
bool mAllowTrade; // Allow Open Trade On Signals ...
|
||||||
int mMaxAllowedLongs; // Max Allowed Long Signals ...
|
int mMaxAllowedLongs; // Max Allowed Long Signals ...
|
||||||
int mMaxAllowedShorts; // Max Allowed Short Signals ...
|
int mMaxAllowedShorts; // Max Allowed Short Signals ...
|
||||||
bool mUseMaxAllowedSignalsPerSymbol; // Use Max Allowed Signal Types Per Symbol ...
|
bool mUseMaxAllowedSignalsPerSymbol; // Use Max Allowed Signal Types Per Symbol ...
|
||||||
@@ -1602,6 +1674,9 @@ class XC121SMCExpert : public XCBaseExpert
|
|||||||
double mHedgingMinVolumeStep; // Minimum Volume Step for Hedging ...
|
double mHedgingMinVolumeStep; // Minimum Volume Step for Hedging ...
|
||||||
double mHedgeingMinRequiredProfitPerVolumeStep; // Minimum Required Profit Per Volume Step for Hedging ...
|
double mHedgeingMinRequiredProfitPerVolumeStep; // Minimum Required Profit Per Volume Step for Hedging ...
|
||||||
|
|
||||||
|
//
|
||||||
|
XCPOIDrawer *eaDrawer; // EA Drawer ...
|
||||||
|
|
||||||
//
|
//
|
||||||
double CalculateAdditionalVolumeMultiplier(XSignal &signal)
|
double CalculateAdditionalVolumeMultiplier(XSignal &signal)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1226,6 +1226,11 @@ bool DetectX121SMCXTWPVSiganlTrigger(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
// Ignore Target ...
|
||||||
|
target = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Filling Conditions Props ...
|
||||||
conditions.sl = sl;
|
conditions.sl = sl;
|
||||||
conditions.target = target;
|
conditions.target = target;
|
||||||
conditions.triggerTime = cTime;
|
conditions.triggerTime = cTime;
|
||||||
|
|||||||
@@ -623,23 +623,18 @@ class XCX121SMCStrategy : public XCX121SMCBaseStrategy
|
|||||||
x121Inputs.hcMethod = hcMethod;
|
x121Inputs.hcMethod = hcMethod;
|
||||||
x121Inputs.hcPeriod = hcPeriod;
|
x121Inputs.hcPeriod = hcPeriod;
|
||||||
|
|
||||||
//
|
|
||||||
x121Inputs.showFibo2Levels = false;
|
|
||||||
x121Inputs.showFibo3Levels = false;
|
|
||||||
x121Inputs.showFibo4Levels = false;
|
|
||||||
|
|
||||||
//
|
//
|
||||||
x121Inputs.showSar = true;
|
x121Inputs.showSar = true;
|
||||||
x121Inputs.showPeaks = true;
|
x121Inputs.showPeaks = true;
|
||||||
x121Inputs.showVales = true;
|
x121Inputs.showVales = true;
|
||||||
x121Inputs.showVWap = false;
|
x121Inputs.showVWap = true;
|
||||||
x121Inputs.showDonchain = true;
|
x121Inputs.showDonchain = true;
|
||||||
|
|
||||||
//
|
//
|
||||||
x121Inputs.showOpen = false;
|
x121Inputs.showOpen = false;
|
||||||
x121Inputs.showHigh = true;
|
x121Inputs.showHigh = false;
|
||||||
x121Inputs.showClose = true;
|
x121Inputs.showClose = true;
|
||||||
x121Inputs.showLow = true;
|
x121Inputs.showLow = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Initialize Cycle Helpers ...
|
// Initialize Cycle Helpers ...
|
||||||
|
|||||||
Reference in New Issue
Block a user