last works on implementing Candlestick Patterns on Bar Analyser Class ...

This commit is contained in:
2025-03-15 04:13:08 +03:30
parent a05b8f464d
commit 3b31c36541
4 changed files with 979 additions and 86 deletions
@@ -3425,6 +3425,183 @@ int GetCycleLengthOn(
return result;
}
/**
* Retrieve Sharp Change Info for Specified Period ...
*
* @param priceChange: double, required Price Change ...
* @param mPeriod: ENUM_TIMEFRAMES member, Specified Period ...
*
* @return ( int )
*/
int GetPeriodSharpData(
double &priceChange,
ENUM_TIMEFRAMES mPeriod = NULL //
)
{
//
int result = 0;
//
priceChange = 0.0;
//
mPeriod = NormalizePeriod(mPeriod);
//
switch (mPeriod)
{
//
case PERIOD_M1:
//
priceChange = 0.000008;
result = 14;
break;
//
case PERIOD_M2:
//
priceChange = 0.000008;
result = 14;
break;
//
case PERIOD_M3:
//
priceChange = 0.00001;
result = 14;
break;
//
case PERIOD_M4:
//
priceChange = 0.000011;
result = 14;
break;
//
case PERIOD_M5:
//
priceChange = 0.000015;
result = 14;
break;
//
case PERIOD_M6:
//
priceChange = 0.000015;
result = 14;
break;
//
case PERIOD_M10:
//
priceChange = 0.000015;
result = 12;
break;
//
case PERIOD_M12:
//
priceChange = 0.000015;
result = 11;
break;
//
case PERIOD_M15:
//
priceChange = 0.000015;
result = 9;
break;
//
case PERIOD_M20:
//
priceChange = 0.000015;
result = 9;
break;
//
case PERIOD_M30:
//
priceChange = 0.000017;
result = 7;
break;
//
case PERIOD_H1:
//
priceChange = 0.000019;
result = 5;
break;
//
case PERIOD_H2:
//
priceChange = 0.000019;
result = 5;
break;
//
case PERIOD_H3:
//
priceChange = 0.000019;
result = 5;
break;
//
case PERIOD_H4:
//
priceChange = 0.000022;
result = 5;
break;
//
case PERIOD_H6:
//
priceChange = 0.000022;
result = 5;
break;
//
case PERIOD_H8:
//
priceChange = 0.000025;
result = 5;
break;
//
case PERIOD_H12:
//
priceChange = 0.000027;
result = 5;
break;
//
case PERIOD_D1:
//
priceChange = 0.000027;
result = 3;
break;
//
case PERIOD_W1:
//
priceChange = 0.00003;
result = 3;
break;
//
case PERIOD_MN1:
//
priceChange = 0.00003;
result = 3;
break;
}
//
return result;
}
//
// END Cycles ...
//
@@ -5873,6 +6050,137 @@ double GetAppliedPrice(
return result;
}
/**
* Calculate Applied Price ...
*
* @param mSymbol: string, Specified Symbol ...
* @param mPeriod: ENUM_TIMEFRAMES member, Specified PEriod ...
* @param barIndex: int, Specified Bar Index ...
* @param mType: ENUM_X_PRICE member, Specified Price Type ...
*
* @return ( double )
*/
double GetAppliedPrice(
string mSymbol = NULL, // Symbol
ENUM_TIMEFRAMES mPeriod = NULL, // Period
int barIndex = 0, // Bar Index
ENUM_X_PRICE mType = X_PRICE_CLOSE // Type of Price Selection,
)
{
//
double result = 0;
//
mSymbol = NormalizeSymbol(mSymbol);
mPeriod = NormalizePeriod(mPeriod);
barIndex = NormalizeInt(barIndex, 0);
//
bool has = IsValid(mType);
if (!has)
{
return result;
}
//
double open = iOpen(
mSymbol,
mPeriod,
barIndex //
);
//
double high = iHigh(
mSymbol,
mPeriod,
barIndex //
);
//
double low = iLow(
mSymbol,
mPeriod,
barIndex //
);
//
double close = iClose(
mSymbol,
mPeriod,
barIndex //
);
//
// Retrieve Applied Price ...
result = GetAppliedPrice(
mType,
open,
high,
low,
close //
);
//
return result;
}
/**
* Calculate Applied Price ...
*
* @param mSymbol: string, Specified Symbol ...
* @param mPeriod: ENUM_TIMEFRAMES member, Specified PEriod ...
* @param time: int, Specified Bar Time ...
* @param mType: ENUM_X_PRICE member, Specified Price Type ...
*
* @return ( double )
*/
double GetAppliedPrice(
string mSymbol = NULL, // Symbol
ENUM_TIMEFRAMES mPeriod = NULL, // Period
datetime mTime = NULL, // Bar Time
ENUM_X_PRICE mType = X_PRICE_CLOSE // Type of Price Selection,
)
{
//
double result = 0;
//
mTime = NormalizeTime(mTime);
mSymbol = NormalizeSymbol(mSymbol);
mPeriod = NormalizePeriod(mPeriod);
//
bool has = IsValid(mType);
if (!has)
{
return result;
}
//
int barIndex = GetBarIndex(
mSymbol,
mPeriod,
mTime //
);
has = IsValidIndex(barIndex);
if (!has)
{
return result;
}
//
// Retrieve Applied Price ...
result = GetAppliedPrice(
mSymbol,
mPeriod,
barIndex,
mType //
);
//
return result;
}
//
// END Price ...
//