Complete Position Drawer and Well Test it ...

This commit is contained in:
2025-10-06 23:44:20 +03:30
parent b9a53670ee
commit 1a7cfc424a
3 changed files with 110 additions and 24 deletions
+51 -19
View File
@@ -523,7 +523,7 @@ bool XUpdatePosition(
// Global Chart Objects ...
/**
* Base Chart Object ...
* Base Chart Object ...
**/
class XCBaseObject : public CChartObject
{
@@ -1151,7 +1151,7 @@ class XCSignalObject : public XCBaseObject
};
/**
* XRR Object ...
* XRR Object ...
**/
class XCRRObject : public XCSignalObject
{
@@ -2115,28 +2115,20 @@ class XCPositionObject : public XCBaseObject
void ApplyStyle()
{
//
// Validate ...
bool has = HasPosition();
if (!has)
{
return;
}
//
// Risk Style ...
mRiskBoxObj.BoxColor(riskStyle.clr);
mRiskBoxObj.BoxFill(riskStyle.fill);
mRiskBoxObj.BoxStyle(riskStyle.style);
mRiskBoxObj.BoxWidth(riskStyle.width);
//
// Reward Style ...
mRewardBoxObj.BoxColor(rewardStyle.clr);
mRewardBoxObj.BoxFill(rewardStyle.fill);
mRewardBoxObj.BoxStyle(rewardStyle.style);
mRewardBoxObj.BoxWidth(rewardStyle.width);
//
// Check Position in Profit ...
bool isLong = IsLong(mPosition.type);
bool isRiskFreed =
isLong
? mPosition.sl > mPosition.entry
: mPosition.sl < mPosition.entry;
bool isInProfit = mPosition.profit > 0;
XPOIStyle _priceStyle;
if (isInProfit)
@@ -2157,6 +2149,28 @@ class XCPositionObject : public XCBaseObject
_priceStyle.fill = true;
_priceStyle.style = priceStyle;
//
// Change Risk Style if Risk Freed Position ...
if (isRiskFreed) {
//
riskStyle.fill = true;
riskStyle.clr = rewardStyle.clr;
}
//
// Risk Style ...
mRiskBoxObj.BoxColor(riskStyle.clr);
mRiskBoxObj.BoxFill(riskStyle.fill);
mRiskBoxObj.BoxStyle(riskStyle.style);
mRiskBoxObj.BoxWidth(riskStyle.width);
//
// Reward Style ...
mRewardBoxObj.BoxColor(rewardStyle.clr);
mRewardBoxObj.BoxFill(rewardStyle.fill);
mRewardBoxObj.BoxStyle(rewardStyle.style);
mRewardBoxObj.BoxWidth(rewardStyle.width);
//
// Price Style ..
mPriceBoxObj.BoxColor(_priceStyle.clr);
@@ -2323,6 +2337,10 @@ class XCPositionObject : public XCBaseObject
//
bool isInProfit = mPosition.profit > 0;
bool isRiskFreed =
isLong
? mPosition.sl > mPosition.entry
: mPosition.sl < mPosition.entry;
ENUM_X_DIRECTION iPriceDir = isInProfit
? X_DIRECTION_BULLISH
: X_DIRECTION_BEARISH;
@@ -2342,17 +2360,27 @@ class XCPositionObject : public XCBaseObject
mRiskBox.at = iAt;
mRiskBox.lower =
isLong
? isRiskFreed
? iEntry
: iSL
: isRiskFreed
? iSL
: iEntry;
mRiskBox.upper =
isLong
? isRiskFreed
? iSL
: iEntry
: isRiskFreed
? iEntry
: iSL;
mRiskBox.from = iFrom;
mRiskBox.symbol = iSymbol;
mRiskBox.period = iPeriod;
mRiskBox.type = iRiskName;
mRiskBox.dir = X_DIRECTION_BEARISH;
mRiskBox.dir = isRiskFreed
? X_DIRECTION_BEARISH
: X_DIRECTION_BULLISH;
//
// Reward Box ...
@@ -2379,10 +2407,14 @@ class XCPositionObject : public XCBaseObject
mPriceBox.lower =
isLong
? isInProfit
? iEntry
? isRiskFreed
? iSL
: iEntry
: iPrice
: isInProfit
? iPrice
? isRiskFreed
? iSL
: iPrice
: iEntry;
mPriceBox.upper =
isLong