last works on create X121Setup ...
This commit is contained in:
@@ -129,6 +129,194 @@ struct XHKInputs
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Define Conditions ...
|
||||
struct XHKConditions
|
||||
{
|
||||
//
|
||||
// Common ...
|
||||
string symbol;
|
||||
ENUM_TIMEFRAMES period;
|
||||
datetime time;
|
||||
|
||||
//
|
||||
// Buffers ...
|
||||
XOHCL hkBar[];
|
||||
XOHCL smHKBar[];
|
||||
|
||||
//
|
||||
// Conditions ...
|
||||
|
||||
//
|
||||
bool isHKBullish;
|
||||
bool isHKBearish;
|
||||
bool isHKSwitchedToBullish;
|
||||
bool isHKSwitchedToBearish;
|
||||
|
||||
//
|
||||
bool isSMHKBullish;
|
||||
bool isSMHKBearish;
|
||||
bool isSMHKSwitchedToBullish;
|
||||
bool isSMHKSwitchedToBearish;
|
||||
|
||||
//
|
||||
void Clean()
|
||||
{
|
||||
//
|
||||
Clean(hkBar);
|
||||
Clean(smHKBar);
|
||||
|
||||
//
|
||||
ArraySetAsSeries(hkBar, true);
|
||||
ArraySetAsSeries(smHKBar, true);
|
||||
|
||||
//
|
||||
isHKBullish = false;
|
||||
isHKBearish = false;
|
||||
isHKSwitchedToBullish = false;
|
||||
isHKSwitchedToBearish = false;
|
||||
|
||||
//
|
||||
isSMHKBullish = false;
|
||||
isSMHKBearish = false;
|
||||
isSMHKSwitchedToBullish = false;
|
||||
isSMHKSwitchedToBearish = false;
|
||||
}
|
||||
|
||||
//
|
||||
void GenerateScore(
|
||||
double &bullishScore,
|
||||
double &bearishScore //
|
||||
)
|
||||
{
|
||||
//
|
||||
bullishScore = 0;
|
||||
bearishScore = 0;
|
||||
|
||||
//
|
||||
if (isHKBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isHKSwitchedToBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isHKBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isHKSwitchedToBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isSMHKBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
if (isSMHKSwitchedToBullish)
|
||||
{
|
||||
bullishScore++;
|
||||
}
|
||||
|
||||
//
|
||||
if (isSMHKBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
if (isSMHKSwitchedToBearish)
|
||||
{
|
||||
bearishScore++;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
string GenerateSummary(
|
||||
bool onlyCommons = false,
|
||||
bool onlyConditions = false,
|
||||
bool includeScores = true,
|
||||
bool ignoreFalseConditions = true,
|
||||
string separator = "\n" //
|
||||
)
|
||||
{
|
||||
//
|
||||
string result = NULL;
|
||||
|
||||
//
|
||||
double bullishScore = 0;
|
||||
double bearishScore = 0;
|
||||
GenerateScore(
|
||||
bullishScore,
|
||||
bearishScore //
|
||||
);
|
||||
|
||||
//
|
||||
string scoresStr =
|
||||
//
|
||||
"Scores: " + separator +
|
||||
"---------------" + separator +
|
||||
"Bullish: " + ToString(bullishScore) + separator +
|
||||
"Bearish: " + ToString(bearishScore) + separator +
|
||||
""
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
string commonStr = GenerateSpecifiedCommonSummary(
|
||||
this,
|
||||
separator,
|
||||
includeScores //
|
||||
);
|
||||
|
||||
//
|
||||
string conditionsStr =
|
||||
//
|
||||
ToString("isHKBullish", isHKBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isHKSwitchedToBullish", isHKSwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isHKBearish", isHKBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isHKSwitchedToBearish", isHKSwitchedToBearish, ignoreFalseConditions, separator) +
|
||||
//
|
||||
ToString("isSMHKBullish", isSMHKBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isSMHKSwitchedToBullish", isSMHKSwitchedToBullish, ignoreFalseConditions, separator) +
|
||||
ToString("isSMHKBearish", isSMHKBearish, ignoreFalseConditions, separator) +
|
||||
ToString("isSMHKSwitchedToBearish", isSMHKSwitchedToBearish, ignoreFalseConditions, separator) +
|
||||
""
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
"[" + GetTag() + "]" + separator +
|
||||
(onlyConditions
|
||||
? ""
|
||||
: commonStr) +
|
||||
(!includeScores
|
||||
? ""
|
||||
: scoresStr) +
|
||||
" " + separator +
|
||||
(onlyCommons
|
||||
? ""
|
||||
: conditionsStr) +
|
||||
""
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
string GetTag()
|
||||
{
|
||||
return "XHK";
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
// Class ...
|
||||
class XSCXHKHelper : public XSCBaseHelper
|
||||
@@ -886,6 +1074,97 @@ public:
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
bool GetConditions(
|
||||
XHKConditions &conditions, //
|
||||
int barIndex = 0, //
|
||||
int loopback = 3 //
|
||||
)
|
||||
{
|
||||
//
|
||||
bool result = true;
|
||||
|
||||
//
|
||||
if (loopback < 3)
|
||||
{
|
||||
loopback = 3;
|
||||
}
|
||||
|
||||
//
|
||||
conditions.Clean();
|
||||
|
||||
//
|
||||
conditions.symbol = mSymbol;
|
||||
conditions.period = mPeriod;
|
||||
conditions.time = TimeCurrent();
|
||||
|
||||
//
|
||||
int zIndex = barIndex;
|
||||
int cIndex = zIndex + 1;
|
||||
int pIndex = cIndex + 1;
|
||||
int ppIndex = pIndex + 1;
|
||||
|
||||
//
|
||||
CopyAsOHCL(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.hkBar //
|
||||
);
|
||||
CopySMAsOHCL(
|
||||
zIndex,
|
||||
loopback,
|
||||
conditions.smHKBar //
|
||||
);
|
||||
|
||||
//
|
||||
// Calculate Conditions ...
|
||||
|
||||
//
|
||||
bool isHKBullish = conditions.hkBar[cIndex].IsBullish();
|
||||
bool isHKBullishPrev = conditions.hkBar[pIndex].IsBullish();
|
||||
|
||||
//
|
||||
bool isHKSwitchedToBullish = isHKBullish &&
|
||||
!isHKBullishPrev;
|
||||
|
||||
//
|
||||
bool isHKBearish = conditions.hkBar[cIndex].IsBearish();
|
||||
bool isHKBearishPrev = conditions.hkBar[pIndex].IsBearish();
|
||||
|
||||
//
|
||||
bool isHKSwitchedToBearish = isHKBearish &&
|
||||
!isHKBearishPrev;
|
||||
|
||||
//
|
||||
bool isSMHKBullish = conditions.smHKBar[cIndex].IsBullish();
|
||||
bool isSMHKBullishPrev = conditions.smHKBar[pIndex].IsBullish();
|
||||
|
||||
//
|
||||
bool isSMHKSwitchedToBullish = isSMHKBullish &&
|
||||
!isSMHKBullishPrev;
|
||||
|
||||
//
|
||||
bool isSMHKBearish = conditions.smHKBar[cIndex].IsBearish();
|
||||
bool isSMHKBearishPrev = conditions.smHKBar[pIndex].IsBearish();
|
||||
|
||||
//
|
||||
bool isSMHKSwitchedToBearish = isSMHKBearish &&
|
||||
!isSMHKBearishPrev;
|
||||
|
||||
//
|
||||
conditions.isHKBullish = isHKBullish;
|
||||
conditions.isHKSwitchedToBullish = isHKSwitchedToBullish;
|
||||
conditions.isHKBearish = isHKBearish;
|
||||
conditions.isHKSwitchedToBearish = isHKSwitchedToBearish;
|
||||
conditions.isSMHKBullish = isSMHKBullish;
|
||||
conditions.isSMHKSwitchedToBullish = isSMHKSwitchedToBullish;
|
||||
conditions.isSMHKBearish = isSMHKBearish;
|
||||
conditions.isSMHKSwitchedToBearish = isSMHKSwitchedToBearish;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Protected ...
|
||||
protected:
|
||||
|
||||
Reference in New Issue
Block a user