complete 121 market cycles generating in conditions ...
This commit is contained in:
@@ -523,6 +523,42 @@ public:
|
||||
ENUM_TIMEFRAMES period; // Period
|
||||
datetime time; // Time
|
||||
|
||||
//
|
||||
// XZG ...
|
||||
double zigzags[];
|
||||
double zigzagPVs[];
|
||||
|
||||
//
|
||||
// XDON ...
|
||||
double donUpperOs[];
|
||||
double donLowerOs[];
|
||||
double donUpperCs[];
|
||||
double donLowerCs[];
|
||||
double donUpperHs[];
|
||||
double donLowerHs[];
|
||||
double donUpperLs[];
|
||||
double donLowerLs[];
|
||||
|
||||
//
|
||||
// XPV ...
|
||||
double pvPeaks[];
|
||||
double pvVales[];
|
||||
double pvResistances[];
|
||||
double pvSupports[];
|
||||
double pvFib1s[];
|
||||
double pvFib2s[];
|
||||
double pvFib3s[];
|
||||
double pvFib4s[];
|
||||
double pvFib5s[];
|
||||
double pvSCHHs[];
|
||||
double pvSCLLs[];
|
||||
double pvMCHHs[];
|
||||
double pvMCLLs[];
|
||||
double pvLCHHs[];
|
||||
double pvLCLLs[];
|
||||
double pvHCHHs[];
|
||||
double pvHCLLs[];
|
||||
|
||||
//
|
||||
X121MCycleConditions cMarketConditions; // Current Market Conditions
|
||||
X121MCycleConditions sMarketConditions; // Short Market Conditions
|
||||
@@ -705,6 +741,29 @@ public:
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// For Data Collector ...
|
||||
string GetToken()
|
||||
{
|
||||
return GetSpecificToken(this);
|
||||
}
|
||||
bool IsModelValid()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
string ToModelString()
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
bool ParseModel(string content)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
int FindIndex(X121MarketConditions &items[])
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
};
|
||||
|
||||
//
|
||||
@@ -1099,8 +1158,8 @@ public:
|
||||
//
|
||||
// Reading Market Conditions ...
|
||||
GetMarketConditions(mConditions, barIndex);
|
||||
// string mConditionsStr = mConditions.GenerateSummary();
|
||||
// Print(mConditionsStr);
|
||||
string mConditionsStr = mConditions.GenerateSummary();
|
||||
Print(mConditionsStr);
|
||||
|
||||
//
|
||||
int signalPusher = 0;
|
||||
@@ -1695,13 +1754,51 @@ private:
|
||||
void CalculateConditions(
|
||||
X121MarketConditions &mConditions, // Market Conditions Result
|
||||
int barIndex = 0 // Specified Bar Index
|
||||
) {
|
||||
)
|
||||
{
|
||||
//
|
||||
// cMarket
|
||||
// sMarket
|
||||
// mMarket
|
||||
// lMarket
|
||||
// hMarket
|
||||
mConditions.symbol = GetSymbol();
|
||||
mConditions.period = GetPeriod();
|
||||
mConditions.time = iTime(
|
||||
mConditions.symbol,
|
||||
mConditions.period,
|
||||
barIndex //
|
||||
);
|
||||
|
||||
//
|
||||
cMarket.GetMarketConditions(
|
||||
mConditions.cMarketConditions,
|
||||
0,
|
||||
mNumberOfItems //
|
||||
);
|
||||
|
||||
//
|
||||
sMarket.GetMarketConditions(
|
||||
mConditions.sMarketConditions,
|
||||
0,
|
||||
mNumberOfItems //
|
||||
);
|
||||
|
||||
//
|
||||
mMarket.GetMarketConditions(
|
||||
mConditions.mMarketConditions,
|
||||
0,
|
||||
mNumberOfItems //
|
||||
);
|
||||
|
||||
//
|
||||
lMarket.GetMarketConditions(
|
||||
mConditions.lMarketConditions,
|
||||
0,
|
||||
mNumberOfItems //
|
||||
);
|
||||
|
||||
//
|
||||
hMarket.GetMarketConditions(
|
||||
mConditions.hMarketConditions,
|
||||
0,
|
||||
mNumberOfItems //
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
|
||||
@@ -458,6 +458,8 @@ public:
|
||||
// Tenkan-sen < Kijun-sen --> bearish signal
|
||||
bool isTenkanSenOverKijunSen;
|
||||
bool isTenkanSenUnderKijunSen;
|
||||
bool isTenkanSenCrossedOverKijunSen;
|
||||
bool isTenkanSenCrossedUnderKijunSen;
|
||||
|
||||
//
|
||||
// XMC ...
|
||||
@@ -1074,6 +1076,12 @@ public:
|
||||
{
|
||||
bullScore++;
|
||||
}
|
||||
if (isTenkanSenCrossedOverKijunSen)
|
||||
{
|
||||
//
|
||||
bullScore++;
|
||||
bearScore--;
|
||||
}
|
||||
|
||||
//
|
||||
// BEARISH ...
|
||||
@@ -1101,6 +1109,12 @@ public:
|
||||
{
|
||||
bearScore++;
|
||||
}
|
||||
if (isTenkanSenCrossedUnderKijunSen)
|
||||
{
|
||||
//
|
||||
bullScore--;
|
||||
bearScore++;
|
||||
}
|
||||
|
||||
//
|
||||
// XMC ...
|
||||
@@ -2173,7 +2187,102 @@ public:
|
||||
conditions.isCloseUnderVerifier = isCloseUnderVerifier;
|
||||
|
||||
//
|
||||
// TODO: XICH ...
|
||||
// XICH ...
|
||||
|
||||
//
|
||||
ich.CopyTenkanSen(
|
||||
barIndex,
|
||||
mNumberOfItems,
|
||||
conditions.ichTenkanSens //
|
||||
);
|
||||
ich.CopyKijunSen(
|
||||
barIndex,
|
||||
mNumberOfItems,
|
||||
conditions.ichKijunSens //
|
||||
);
|
||||
ich.CopyChikouSpan(
|
||||
barIndex,
|
||||
mNumberOfItems,
|
||||
conditions.ichChikouSpans //
|
||||
);
|
||||
ich.CopySenkouSpanA(
|
||||
barIndex,
|
||||
mNumberOfItems,
|
||||
conditions.ichSenkouSpanBs //
|
||||
);
|
||||
ich.CopySenkouSpanB(
|
||||
barIndex,
|
||||
mNumberOfItems,
|
||||
conditions.ichSenkouSpanAs //
|
||||
);
|
||||
|
||||
//
|
||||
double tenkanSen = ich.GetTenkanSen(barIndex);
|
||||
double tenkanSenPrev = ich.GetTenkanSen(barIndex + 1);
|
||||
|
||||
//
|
||||
double kijunSen = ich.GetKijunSen(barIndex);
|
||||
double kijunSenPrev = ich.GetKijunSen(barIndex + 1);
|
||||
|
||||
//
|
||||
double senkouSpanA = ich.GetSenkouSpanA(barIndex);
|
||||
double senkouSpanAPrev = ich.GetSenkouSpanA(barIndex + 1);
|
||||
|
||||
//
|
||||
double senkouSpanB = ich.GetSenkouSpanB(barIndex);
|
||||
double senkouSpanBPrev = ich.GetSenkouSpanB(barIndex + 1);
|
||||
|
||||
//
|
||||
double futureSenkouSpanA = ich.GetFutureSenkouSpanA(barIndex);
|
||||
double futureSenkouSpanAPrev = ich.GetFutureSenkouSpanA(barIndex + 1);
|
||||
|
||||
//
|
||||
double futureSenkouSpanB = ich.GetFutureSenkouSpanB(barIndex);
|
||||
double futureSenkouSpanBPrev = ich.GetFutureSenkouSpanB(barIndex + 1);
|
||||
|
||||
//
|
||||
bool isSenkouSpanAOverB = senkouSpanA > senkouSpanB;
|
||||
bool isSenkouSpanAUnderB = senkouSpanA < senkouSpanB;
|
||||
bool isSenkouSpanAOverLast = senkouSpanA > senkouSpanAPrev;
|
||||
bool isSenkouSpanAUnderLast = senkouSpanA < senkouSpanAPrev;
|
||||
bool isFutureSenkouSpanAOverB = futureSenkouSpanA > futureSenkouSpanB;
|
||||
bool isFutureSenkouSpanAUnderB = futureSenkouSpanA < futureSenkouSpanB;
|
||||
bool isFutureSenkouSpanAOverLast = futureSenkouSpanA > futureSenkouSpanAPrev;
|
||||
bool isFutureSenkouSpanAUnderLast = futureSenkouSpanA < futureSenkouSpanAPrev;
|
||||
bool isCloseOverKijunSen = pBar.close > kijunSenPrev;
|
||||
bool isCloseUnderKijunSen = pBar.close < kijunSenPrev;
|
||||
bool isTenkanSenOverKijunSen = tenkanSen > kijunSen;
|
||||
bool isTenkanSenUnderKijunSen = tenkanSen < kijunSen;
|
||||
bool isTenkanSenPrevOverKijunSen = tenkanSenPrev > kijunSenPrev;
|
||||
bool isTenkanSenPrevUnderKijunSen = tenkanSenPrev < kijunSenPrev;
|
||||
bool isTenkanSenCrossedOverKijunSen =
|
||||
//
|
||||
isTenkanSenOverKijunSen &&
|
||||
!isTenkanSenPrevOverKijunSen
|
||||
//
|
||||
;
|
||||
bool isTenkanSenCrossedUnderKijunSen =
|
||||
//
|
||||
isTenkanSenUnderKijunSen &&
|
||||
!isTenkanSenPrevUnderKijunSen
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
conditions.isSenkouSpanAOverB = isSenkouSpanAOverB;
|
||||
conditions.isSenkouSpanAUnderB = isSenkouSpanAUnderB;
|
||||
conditions.isSenkouSpanAOverLast = isSenkouSpanAOverLast;
|
||||
conditions.isSenkouSpanAUnderLast = isSenkouSpanAUnderLast;
|
||||
conditions.isFutureSenkouSpanAOverB = isFutureSenkouSpanAOverB;
|
||||
conditions.isFutureSenkouSpanAUnderB = isFutureSenkouSpanAUnderB;
|
||||
conditions.isFutureSenkouSpanAOverLast = isFutureSenkouSpanAOverLast;
|
||||
conditions.isFutureSenkouSpanAUnderLast = isFutureSenkouSpanAUnderLast;
|
||||
conditions.isCloseOverKijunSen = isCloseOverKijunSen;
|
||||
conditions.isCloseUnderKijunSen = isCloseUnderKijunSen;
|
||||
conditions.isTenkanSenOverKijunSen = isTenkanSenOverKijunSen;
|
||||
conditions.isTenkanSenUnderKijunSen = isTenkanSenUnderKijunSen;
|
||||
conditions.isTenkanSenCrossedOverKijunSen = isTenkanSenCrossedOverKijunSen;
|
||||
conditions.isTenkanSenCrossedUnderKijunSen = isTenkanSenCrossedUnderKijunSen;
|
||||
|
||||
//
|
||||
// XOSC ...
|
||||
|
||||
Reference in New Issue
Block a user