complete break even risk free ...

This commit is contained in:
2024-12-24 16:29:31 +03:30
parent 7c4cfd4321
commit 8d6c48ede5
9 changed files with 2306 additions and 2795 deletions
+49 -70
View File
@@ -47,6 +47,11 @@ class XC121SMCExpert : public XCBaseExpert
TOnModify OnPositionModifiedEventListener;
TOnForceClose OnPositionForceCloseEventListener;
//
TOnDealsChanged OnDealsChangedEventListener;
TOnOrdersChanged OnOrdersChangedEventListener;
TOnPositionsChanged OnPositionsChangedEventListener;
//
TOnX121SMCSignal OnSignalEventListener;
@@ -293,7 +298,7 @@ class XC121SMCExpert : public XCBaseExpert
if (isFiltered)
{
//
mTradeHandler.RemoveSignal(signal);
mTradeHandler.Remove(signal);
return;
}
@@ -313,34 +318,14 @@ class XC121SMCExpert : public XCBaseExpert
//
datetime currentTime = TimeCurrent();
//
// Check Signal Protections ...
bool canTrail = false;
ENUM_X_121_SMC_PROVIDERS signalProvider = ParseProvider(signal.provider);
if (IsValid(signalProvider))
{
//
// Complete this in Force States ...
// canTrail = true;
}
//
// Execute Signal Using Trade Handler ...
ENUM_X_SIGNAL_EXECUTION_RESULT state;
bool isExecuted = mTradeHandler.ExecuteSignal(
signal,
state,
false, // ignore Policies ...
//
// Force Protections ...
canTrail //
false // ignore Policies ...
);
//
if (isExecuted)
{
mLastSignalOn = currentTime;
}
}
//
@@ -541,7 +526,10 @@ class XC121SMCExpert : public XCBaseExpert
);
mTrader.AddOnStopLossEventHandler(OnPositionSLEventListener);
mTrader.AddOnTakeProfitEventHandler(OnPositionTPEventListener);
mTrader.AddOnDealsChangedEventHandler(OnDealsChangedEventListener);
mTrader.AddOnOrdersChangedEventHandler(OnOrdersChangedEventListener);
mTrader.AddOnModifyPositionEventHandler(OnPositionModifiedEventListener);
mTrader.AddOnPositionsChangedEventHandler(OnPositionsChangedEventListener);
mTrader.AddOnForceClosePositionEventHandler(OnPositionForceCloseEventListener);
mTrader.AddOnPartialClosePositionEventHandler(OnPositionPartialCloseEventListener);
@@ -578,51 +566,12 @@ class XC121SMCExpert : public XCBaseExpert
//
// Configure Position Protector ...
//
mTradeHandler.UseForceMomentumsInProtection(true);
//
// Configure Hedging ...
mTradeHandler.AllowHedge(false);
mTradeHandler.HedgeMinVolumeStep(0.01);
mTradeHandler.MinimumOpenPositionsForHEHedge(2);
mTradeHandler.HedgeHEMinProfitPerVolumeStep(0.2);
mTradeHandler.HedgeBEMinProfitPerVolumeStep(0.06);
//
// In Profit Position Protecting ...
//
// Trail ...
mTradeHandler.AllowTrail(false);
mTradeHandler.TrailStep(15);
mTradeHandler.TrailStartDistance(30);
mTradeHandler.OnlyTrailUnprotected(true);
mTradeHandler.RemoveTPAfterTrailedLevel(3);
//
// Partial Close (In Profit) ...
mTradeHandler.PartialCloseInProfitDistance(0);
mTradeHandler.PartialCloseInProfitVolume(0);
//
// In Drawdown Positions Protecting ...
//
// Protect ...
mTradeHandler.AllowProtect(false);
mTradeHandler.ProtectionDelay(20);
mTradeHandler.MaxAllowedProtection(0);
mTradeHandler.UseEntryAsProtectionSL(true);
mTradeHandler.ProtectOnConditions(true);
mTradeHandler.AllowDirectionProtct(false);
mTradeHandler.ProtectionStartDistance(50);
mTradeHandler.ProtectionVolumeMultiplier(2);
//
// Partial Close (In Profit) ...
mTradeHandler.PartialCloseInDrawdownDistance(0);
mTradeHandler.PartialCloseInDrawdownVolume(0);
mTradeHandler.MinimumOpenPositionsForHedge(2);
mTradeHandler.HedgeMinProfitPerVolumeStep(0.2);
//
// Parsers ...
@@ -743,7 +692,11 @@ class XC121SMCExpert : public XCBaseExpert
void HandleStrategiesOnTick() override
{
//
// Calling Protection Handler of TradeHandler ...
// Update Positions Data ...
mTradeHandler.UpdateData();
//
// Protect Positions ...
mTradeHandler.HandleProtection();
//
@@ -765,6 +718,38 @@ class XC121SMCExpert : public XCBaseExpert
//
// Event Handlers ...
/**
* Calls When a Deals Changed Triggered ...
*
* @param count: Integer, Number of Changes ...
*/
void HandleOnDealsChanged(int count) override
{
}
/**
* Calls When a Order Changed Triggered ...
*
* @param count: Integer, Number of Changes ...
*/
void HandleOnOrdersChanged(int count) override
{
}
/**
* Calls When a Positions Changed Triggered ...
*
* @param count: Integer, Number of Changes ...
*/
void HandleOnPositionsChanged(int count) override
{
//
if (IsValidSize(count))
{
mTradeHandler.HandleNewPosition();
}
}
/**
* Calls When a Position's SL Triggered ...
*
@@ -871,9 +856,6 @@ class XC121SMCExpert : public XCBaseExpert
//
// Props ...
//
datetime mLastSignalOn;
//
XC121SMCTradeHandler *mTradeHandler; // Trade Handler ...
XCX121SMCBaseStrategy *mStrategies[]; // Registere Strategies in EA ...
@@ -963,9 +945,6 @@ class XC121SMCExpert : public XCBaseExpert
{
signal.volume = Volume();
}
//
mTradeHandler.UpdateSignal(signal);
}
/**