complete break even risk free ...
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -2006,112 +2006,4 @@ ENUM_X_121_SMC_PROVIDERS ParseProvider(string value)
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Custom Providers Conditions ...
|
||||
struct XSMCStrategySetupConditions
|
||||
{
|
||||
//
|
||||
// Props ...
|
||||
|
||||
//
|
||||
string symbol;
|
||||
ENUM_TIMEFRAMES period;
|
||||
|
||||
//
|
||||
double sl;
|
||||
ENUM_X_DIRECTION dir;
|
||||
ENUM_X_POSITION_TYPES type;
|
||||
|
||||
//
|
||||
// Setup Props ...
|
||||
|
||||
//
|
||||
datetime setupTime;
|
||||
datetime triggerTime;
|
||||
|
||||
//
|
||||
// Trigger Props ...
|
||||
|
||||
//
|
||||
// Constructor ...
|
||||
XSMCStrategySetupConditions()
|
||||
{
|
||||
Clean();
|
||||
}
|
||||
|
||||
//
|
||||
// Tools ...
|
||||
|
||||
/**
|
||||
* Cleaning Up ...
|
||||
*/
|
||||
void Clean()
|
||||
{
|
||||
//
|
||||
sl = 0;
|
||||
|
||||
//
|
||||
dir = X_DIRECTION_NONE;
|
||||
type = X_POSITION_TYPE_NONE;
|
||||
|
||||
//
|
||||
symbol = NULL;
|
||||
period = NULL;
|
||||
setupTime = NULL;
|
||||
triggerTime = NULL;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check Condition is Setting Up ...
|
||||
*
|
||||
* @param dir: ENUM_X_DIRECTION member, Setting Up Direction ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool IsSetuped()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result = IsValid(setupTime) &&
|
||||
HasDirection(dir);
|
||||
if (!result)
|
||||
{
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Detect How we Can Trigger Signal ...
|
||||
*
|
||||
* @return ( bool )
|
||||
*/
|
||||
bool CanTrigger()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
result =
|
||||
//
|
||||
sl > 0 &&
|
||||
IsValid(symbol) &&
|
||||
IsValid(period) &&
|
||||
IsValid(triggerTime) &&
|
||||
type != X_POSITION_TYPE_ALL &&
|
||||
type != X_POSITION_TYPE_NONE
|
||||
//
|
||||
;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
};
|
||||
|
||||
//
|
||||
@@ -1591,9 +1591,10 @@ bool DetectX121SMCTestSiganlTrigger(
|
||||
//
|
||||
// !isTriggerMarketBearish &&
|
||||
// !isDecisionMarketBearish &&
|
||||
!isAnalyseMarketBearish &&
|
||||
// !isAnalyseMarketBearish &&
|
||||
isTriggerMarketBullish &&
|
||||
!isVerificationMarketBearish &&
|
||||
!isConsolidationMarketBearish
|
||||
!isConsolidationMarketBearish
|
||||
//
|
||||
;
|
||||
|
||||
@@ -1602,9 +1603,10 @@ bool DetectX121SMCTestSiganlTrigger(
|
||||
//
|
||||
// !isTriggerMarketBullish &&
|
||||
// !isDecisionMarketBullish &&
|
||||
!isAnalyseMarketBullish &&
|
||||
// !isAnalyseMarketBullish &&
|
||||
isTriggerMarketBearish &&
|
||||
!isVerificationMarketBullish &&
|
||||
!isConsolidationMarketBullish
|
||||
!isConsolidationMarketBullish
|
||||
//
|
||||
;
|
||||
|
||||
@@ -1616,7 +1618,7 @@ bool DetectX121SMCTestSiganlTrigger(
|
||||
// isSameVale &&
|
||||
lookupLong &&
|
||||
isValesInsideFVG &&
|
||||
isMarketReadyForLong &&
|
||||
// isMarketReadyForLong &&
|
||||
isSarSwitchedToBullish &&
|
||||
triggerVale <= iFVG.Upper() &&
|
||||
triggerVale >= iFVG.Lower();
|
||||
@@ -1626,7 +1628,7 @@ bool DetectX121SMCTestSiganlTrigger(
|
||||
// isSamePeak &&
|
||||
lookupShort &&
|
||||
isPeaksInsideFVG &&
|
||||
isMarketReadyForShort &&
|
||||
// isMarketReadyForShort &&
|
||||
isSarSwitchedToBearish &&
|
||||
triggerPeak <= iFVG.Upper() &&
|
||||
triggerPeak >= iFVG.Lower();
|
||||
|
||||
@@ -277,6 +277,26 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
signal.provider = provider;
|
||||
signal.time = TimeCurrent();
|
||||
|
||||
//
|
||||
if (hasTestSignal)
|
||||
{
|
||||
//
|
||||
// Add Aditionsal Info ...
|
||||
|
||||
//
|
||||
signal.fullTPLevel = r2r;
|
||||
signal.partialCloseOnTPLevel = 2;
|
||||
signal.partialCloseMultiplier = 0.5;
|
||||
|
||||
//
|
||||
signal.riskFreeOnBreakEven = true;
|
||||
signal.tpLevelForBreakEven = 1;
|
||||
|
||||
//
|
||||
signal.trailSL = true;
|
||||
signal.trailSLStartOnReachTPLevel = 3;
|
||||
}
|
||||
|
||||
//
|
||||
result = PrepareSignal(signal);
|
||||
if (result)
|
||||
@@ -487,23 +507,6 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
||||
}
|
||||
conditions.visionConditions.state = mVisionState;
|
||||
|
||||
// //
|
||||
// XPVPivot triggerPivot;
|
||||
// mTriggerCycleHelper.GetActivePivot(triggerPivot);
|
||||
// result = triggerPivot.IsValid();
|
||||
// if (!result)
|
||||
// {
|
||||
// return result;
|
||||
// }
|
||||
|
||||
// //
|
||||
// ClearDraws();
|
||||
// DrawPivot(
|
||||
// triggerPivot,
|
||||
// true, // Draw State ...
|
||||
// true // Filter By Price ...
|
||||
// );
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user