This commit is contained in:
2025-01-04 00:01:22 +03:30
parent 6e03d6d993
commit fbc232a2b7
4 changed files with 331 additions and 42 deletions
+138 -39
View File
@@ -165,28 +165,6 @@ class XC121SMCExpert : public XCBaseExpert
ReConfigure();
}
/**
* Get Allow Open Trade On Signals State ...
*
* @return ( bool )
*/
bool AllowTrade()
{
return mAllowTrade;
}
/**
* Set Allow Open Trade On Signals State ...
*
* @param value: Boolean ...
*/
void AllowTrade(bool value)
{
//
mAllowTrade = value;
ReConfigure();
}
/**
* Get Use Max Allowed Signal Types Per Symbol State ...
*
@@ -329,6 +307,89 @@ class XC121SMCExpert : public XCBaseExpert
ReConfigure();
}
//
// Trade ...
/**
* Get Allow Open Trade On Signals State ...
*
* @return ( bool )
*/
bool AllowTrade()
{
return mAllowTrade;
}
/**
* Set Allow Open Trade On Signals State ...
*
* @param value: Boolean ...
*/
void AllowTrade(bool value)
{
mAllowTrade = value;
}
/**
* Get Enable Trade on Signals on Time ...
*
* @return ( string )
*/
string StartTradeAt()
{
return mStartTradeAt;
}
/**
* Set Enable Trade on Signals on Time ...
*
* @param value: String ...
*/
void StartTradeAt(string value)
{
mStartTradeAt = value;
}
/**
* Get Enable Trade on Signals on Time ...
*
* @return ( string )
*/
string StopTradeAt()
{
return mStopTradeAt;
}
/**
* Set Enable Trade on Signals on Time ...
*
* @param value: String ...
*/
void StopTradeAt(string value)
{
mStopTradeAt = value;
}
/**
* Get Enable Close All Trades on Signals on Time ...
*
* @return ( string )
*/
string CloseAllTradesAt()
{
return mCloseAllTradesAt;
}
/**
* Set Enable Close All Trades on Signals on Time ...
*
* @param value: String ...
*/
void CloseAllTradesAt(string value)
{
mCloseAllTradesAt = value;
}
//
// Risk Management Props ...
@@ -782,7 +843,13 @@ class XC121SMCExpert : public XCBaseExpert
if (mAlertRawSignals)
{
//
string msg = "Raw " + (IsLong(signal.type) ? "Long" : "Short") + " Signal Recieved: (" + signal.provider + "," + signal.symbol + "," + ToString(signal.period) + ") ...";
string msg = "Raw " + (IsLong(signal.type) ? "Long" : "Short") +
" Signal Recieved: (" + signal.provider + "," +
signal.symbol + "," +
ToString(signal.period) +
") ...";
//
Alert(msg);
}
@@ -833,14 +900,27 @@ class XC121SMCExpert : public XCBaseExpert
if (allowTrade)
{
//
// Execute Signal Using Trade Handler ...
ENUM_X_SIGNAL_EXECUTION_RESULT state;
bool isExecuted = mTradeHandler.ExecuteSignal(
signal,
conditions,
state,
false // ignore Policies ...
string startTime = StartTradeAt();
string endTime = StopTradeAt();
bool isTimePassed = IsTimeInRange(
TimeCurrent(),
startTime,
endTime //
);
//
if (isTimePassed)
{
//
// Execute Signal Using Trade Handler ...
ENUM_X_SIGNAL_EXECUTION_RESULT state;
bool isExecuted = mTradeHandler.ExecuteSignal(
signal,
conditions,
state,
false // ignore Policies ...
);
}
}
else
{
@@ -869,14 +949,14 @@ class XC121SMCExpert : public XCBaseExpert
signal,
signalObject //
);
DrawX121SMCStrategyConditions(
conditions,
objects,
eaDrawer,
true, // draw Market Structure ...
true, // Draw Price Zones ...
true // Draw Decision Zones ...
);
// DrawX121SMCStrategyConditions(
// conditions,
// objects,
// eaDrawer,
// true, // draw Market Structure ...
// true, // Draw Price Zones ...
// true // Draw Decision Zones ...
// );
//
Add(
@@ -1243,6 +1323,19 @@ class XC121SMCExpert : public XCBaseExpert
*/
void HandleStrategiesOnTick() override
{
//
// Check Force Close ...
string forceCloseTimeStr = CloseAllTradesAt();
datetime forceCloseTime = ParseDateTimeFromTimeString(forceCloseTimeStr);
bool canForceClose = IsTimeInRange(
TimeCurrent(),
forceCloseTime //
);
if (canForceClose)
{
mTradeHandler.ForceClose();
}
//
// Update Positions Data ...
mTradeHandler.UpdateData();
@@ -1645,7 +1738,6 @@ class XC121SMCExpert : public XCBaseExpert
// Signalling Props ...
bool mAllowLong; // Allow Long Signals ...
bool mAllowShort; // Allow Short Signals ...
bool mAllowTrade; // Allow Open Trade On Signals ...
int mMaxAllowedLongs; // Max Allowed Long Signals ...
int mMaxAllowedShorts; // Max Allowed Short Signals ...
bool mUseMaxAllowedSignalsPerSymbol; // Use Max Allowed Signal Types Per Symbol ...
@@ -1654,6 +1746,13 @@ class XC121SMCExpert : public XCBaseExpert
double mMaxAllowedSpread; // Max Allowed Spread for Signalling ...
int mMinRequiredVerificationForSpreadPass; // Minimum Spread Verification for Signalling ...
//
// Trade ...
bool mAllowTrade; // Allow Open Trade On Signals ...
string mStartTradeAt; // Enable Trade on Signals on Time ...
string mStopTradeAt; // Enable Trade on Signals on Time ...
string mCloseAllTradesAt; // Enable Close All Trades on Signals on Time ...
//
// Risk Management Props ...
double mR2R; // Signallers Risk to Reward Ratio ...