last works on Detecting Pivots ...
- Pivots Detection works Fine; - Analyse Pivots Has some issues and i have to Fix them ...
This commit is contained in:
@@ -1458,13 +1458,21 @@ class XCPivotAnalysisObject : public XCBaseObject
|
||||
* @param chart_id: Long, Specified Chart ID ...
|
||||
* @param window: Integer, Specified Chart Window ID ...
|
||||
* @param model: XPivotAnalysis, reference model ...
|
||||
* @param drawPivots: Specified to Draw Pivots or not ...
|
||||
* @param peakArrow: int, Specified Arrow Code for Peak Pivots ...
|
||||
* @param valeArrow: int, Specified Arrow Code for Vale Pivots ...
|
||||
* @param threshold: int, distance between price and arrow in Point ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool Create(
|
||||
long chart_id,
|
||||
int window,
|
||||
XPivotAnalysis &model //
|
||||
XPivotAnalysis &model,
|
||||
bool drawPivots = true,
|
||||
int peakArrow = 159,
|
||||
int valeArrow = 159,
|
||||
int threshold = 5 //
|
||||
)
|
||||
{
|
||||
//
|
||||
@@ -1562,6 +1570,70 @@ class XCPivotAnalysisObject : public XCBaseObject
|
||||
);
|
||||
}
|
||||
|
||||
//
|
||||
// Draw Pivots ...
|
||||
if (drawPivots &&
|
||||
model.HasPivots())
|
||||
{
|
||||
//
|
||||
XOHCL iBar;
|
||||
int arrow = 0;
|
||||
bool has = false;
|
||||
string name = NULL;
|
||||
XCBarArrowObject *iObj;
|
||||
ENUM_X_PRICE type = X_PRICE_NONE;
|
||||
int pivotsCount = ArraySize(model.pivots);
|
||||
for (int i = 0; i < pivotsCount; i++)
|
||||
{
|
||||
//
|
||||
has = model.pivots[i].GetBar(iBar);
|
||||
if (!has)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
//
|
||||
arrow = model.pivots[i].IsPeak()
|
||||
? peakArrow
|
||||
: valeArrow;
|
||||
name = model.pivots[i].GetObjectID();
|
||||
type = model.pivots[i].IsPeak()
|
||||
? X_PRICE_HIGH
|
||||
: X_PRICE_LOW;
|
||||
iObj = new XCBarArrowObject();
|
||||
has = iObj.CreateByBar(
|
||||
chart_id,
|
||||
name,
|
||||
window,
|
||||
arrow,
|
||||
iBar,
|
||||
type,
|
||||
threshold //
|
||||
);
|
||||
if (has)
|
||||
{
|
||||
//
|
||||
if (model.pivots[i].IsPeak())
|
||||
{
|
||||
mPeaks.Add(iObj);
|
||||
}
|
||||
else
|
||||
{
|
||||
mVales.Add(iObj);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
iBar.Clean();
|
||||
ZeroMemory(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
// Cleanup Resources ...
|
||||
iBar.Clean();
|
||||
ZeroMemory(iObj);
|
||||
}
|
||||
|
||||
//
|
||||
// Setting Object Name ...
|
||||
if (result)
|
||||
@@ -1821,9 +1893,181 @@ class XCPivotAnalysisObject : public XCBaseObject
|
||||
mResistanceBox.Style(value);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Width ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void PeaksWidth(int value)
|
||||
{
|
||||
//
|
||||
// Normalize ...
|
||||
value = NormalizeInt(value, 1);
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
int count = mPeaks.Total();
|
||||
bool has = IsValidSize(count);
|
||||
if (!has)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XCBarArrowObject *iPeak;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
iPeak = (XCBarArrowObject *)mPeaks.At(i);
|
||||
iPeak.ArrowWidth(value);
|
||||
ZeroMemory(iPeak);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Color ...
|
||||
*
|
||||
* @param value: Color ...
|
||||
*/
|
||||
void PeaksColor(color value)
|
||||
{
|
||||
//
|
||||
// Validate ...
|
||||
int count = mPeaks.Total();
|
||||
bool has = IsValidSize(count);
|
||||
if (!has)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XCBarArrowObject *iPeak;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
iPeak = (XCBarArrowObject *)mPeaks.At(i);
|
||||
iPeak.ArrowColor(value);
|
||||
ZeroMemory(iPeak);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Arrow Anchor ...
|
||||
*
|
||||
* @param value: ENUM_ARROW_ANCHOR member ...
|
||||
*/
|
||||
void PeaksAnchor(ENUM_ARROW_ANCHOR value)
|
||||
{
|
||||
//
|
||||
// Validate ...
|
||||
int count = mPeaks.Total();
|
||||
bool has = IsValidSize(count);
|
||||
if (!has)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XCBarArrowObject *iPeak;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
iPeak = (XCBarArrowObject *)mPeaks.At(i);
|
||||
iPeak.ArrowAnchor(value);
|
||||
ZeroMemory(iPeak);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Width ...
|
||||
*
|
||||
* @param value: Integer ...
|
||||
*/
|
||||
void ValesWidth(int value)
|
||||
{
|
||||
//
|
||||
// Normalize ...
|
||||
value = NormalizeInt(value, 1);
|
||||
|
||||
//
|
||||
// Validate ...
|
||||
int count = mVales.Total();
|
||||
bool has = IsValidSize(count);
|
||||
if (!has)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XCBarArrowObject *iVale;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
iVale = (XCBarArrowObject *)mVales.At(i);
|
||||
iVale.ArrowWidth(value);
|
||||
ZeroMemory(iVale);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Color ...
|
||||
*
|
||||
* @param value: Color ...
|
||||
*/
|
||||
void ValesColor(color value)
|
||||
{
|
||||
//
|
||||
// Validate ...
|
||||
int count = mVales.Total();
|
||||
bool has = IsValidSize(count);
|
||||
if (!has)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XCBarArrowObject *iVale;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
iVale = (XCBarArrowObject *)mVales.At(i);
|
||||
iVale.ArrowColor(value);
|
||||
ZeroMemory(iVale);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set Arrow Anchor ...
|
||||
*
|
||||
* @param value: ENUM_ARROW_ANCHOR member ...
|
||||
*/
|
||||
void ValesAnchor(ENUM_ARROW_ANCHOR value)
|
||||
{
|
||||
//
|
||||
// Validate ...
|
||||
int count = mVales.Total();
|
||||
bool has = IsValidSize(count);
|
||||
if (!has)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
//
|
||||
XCBarArrowObject *iVale;
|
||||
for (int i = 0; i < count; i++)
|
||||
{
|
||||
//
|
||||
iVale = (XCBarArrowObject *)mVales.At(i);
|
||||
iVale.ArrowAnchor(value);
|
||||
ZeroMemory(iVale);
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
private:
|
||||
//
|
||||
CArrayObj mPeaks;
|
||||
CArrayObj mVales;
|
||||
CChartObjectTrend mUpper;
|
||||
CChartObjectTrend mLower;
|
||||
XCBoxObject *mSupportBox;
|
||||
|
||||
Reference in New Issue
Block a user