complete 121 market cycles generating in conditions ...

This commit is contained in:
2024-05-23 02:34:23 +03:30
parent 4a69e7edf8
commit 5142f47de3
2 changed files with 215 additions and 9 deletions
+105 -8
View File
@@ -523,6 +523,42 @@ public:
ENUM_TIMEFRAMES period; // Period ENUM_TIMEFRAMES period; // Period
datetime time; // Time 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 cMarketConditions; // Current Market Conditions
X121MCycleConditions sMarketConditions; // Short Market Conditions X121MCycleConditions sMarketConditions; // Short Market Conditions
@@ -705,6 +741,29 @@ public:
// //
return result; 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 ... // Reading Market Conditions ...
GetMarketConditions(mConditions, barIndex); GetMarketConditions(mConditions, barIndex);
// string mConditionsStr = mConditions.GenerateSummary(); string mConditionsStr = mConditions.GenerateSummary();
// Print(mConditionsStr); Print(mConditionsStr);
// //
int signalPusher = 0; int signalPusher = 0;
@@ -1695,13 +1754,51 @@ private:
void CalculateConditions( void CalculateConditions(
X121MarketConditions &mConditions, // Market Conditions Result X121MarketConditions &mConditions, // Market Conditions Result
int barIndex = 0 // Specified Bar Index int barIndex = 0 // Specified Bar Index
) { )
{
// //
// cMarket mConditions.symbol = GetSymbol();
// sMarket mConditions.period = GetPeriod();
// mMarket mConditions.time = iTime(
// lMarket mConditions.symbol,
// hMarket 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 //
);
} }
// //
+110 -1
View File
@@ -458,6 +458,8 @@ public:
// Tenkan-sen < Kijun-sen --> bearish signal // Tenkan-sen < Kijun-sen --> bearish signal
bool isTenkanSenOverKijunSen; bool isTenkanSenOverKijunSen;
bool isTenkanSenUnderKijunSen; bool isTenkanSenUnderKijunSen;
bool isTenkanSenCrossedOverKijunSen;
bool isTenkanSenCrossedUnderKijunSen;
// //
// XMC ... // XMC ...
@@ -1074,6 +1076,12 @@ public:
{ {
bullScore++; bullScore++;
} }
if (isTenkanSenCrossedOverKijunSen)
{
//
bullScore++;
bearScore--;
}
// //
// BEARISH ... // BEARISH ...
@@ -1101,6 +1109,12 @@ public:
{ {
bearScore++; bearScore++;
} }
if (isTenkanSenCrossedUnderKijunSen)
{
//
bullScore--;
bearScore++;
}
// //
// XMC ... // XMC ...
@@ -2173,7 +2187,102 @@ public:
conditions.isCloseUnderVerifier = isCloseUnderVerifier; 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 ... // XOSC ...