complete 121 market cycles generating in conditions ...
This commit is contained in:
@@ -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 //
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -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 ...
|
||||||
|
|||||||
Reference in New Issue
Block a user