last preparation ...
This commit is contained in:
@@ -49,8 +49,8 @@ input bool eaUseDynamicVolume = false; // Use Dynamic Volume
|
|||||||
input double eaDynamicVolumeStep = 0.01; // Increase Volume Step
|
input double eaDynamicVolumeStep = 0.01; // Increase Volume Step
|
||||||
input double eaDynamicVolumeBalanceFactor = 200; // Balance Factor for Generate Dynamic Volume
|
input double eaDynamicVolumeBalanceFactor = 200; // Balance Factor for Generate Dynamic Volume
|
||||||
input double eaVolume = 0.05; // Static Volume
|
input double eaVolume = 0.05; // Static Volume
|
||||||
input bool eaDynamicRiskManagement = true; // Dynamic Risk Management
|
input bool eaDynamicRiskManagement = false; // Dynamic Risk Management
|
||||||
input double eaRiskPercentPerBalance = 0.5; // Risk Percent Per Balance on Each Trade
|
input double eaRiskPercentPerBalance = 0; // Risk Percent Per Balance on Each Trade
|
||||||
|
|
||||||
//
|
//
|
||||||
// Signalling ...
|
// Signalling ...
|
||||||
|
|||||||
@@ -1192,10 +1192,14 @@ void CalculateBuffers(
|
|||||||
);
|
);
|
||||||
|
|
||||||
//
|
//
|
||||||
CalculateValidPeaksAndVales(
|
// if (bar_index <= barsLimit + 576)
|
||||||
bar_index,
|
// {
|
||||||
prevCalculated //
|
// //
|
||||||
);
|
// CalculateValidPeaksAndVales(
|
||||||
|
// bar_index,
|
||||||
|
// prevCalculated //
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
|
||||||
//
|
//
|
||||||
CalculateFibonacci(
|
CalculateFibonacci(
|
||||||
|
|||||||
@@ -7722,6 +7722,27 @@ double GetEntry(
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
double GetEntry(
|
||||||
|
string mSymbol = NULL, // Trading Symbol
|
||||||
|
ENUM_X_DIRECTION type = X_DIRECTION_BULLISH // Get entry price for Which direction trade ...
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
double result = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
mSymbol = NormalizeSymbol(mSymbol);
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
IsBullish(type)
|
||||||
|
? GetAsk(mSymbol)
|
||||||
|
: GetBid(mSymbol);
|
||||||
|
result = NormalizePrice(result, mSymbol);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Retrieve Exit Price ...
|
// Retrieve Exit Price ...
|
||||||
@@ -7746,6 +7767,27 @@ double GetExit(
|
|||||||
//
|
//
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
double GetExit(
|
||||||
|
string mSymbol = NULL, // Trading Symbol
|
||||||
|
ENUM_X_DIRECTION type = X_DIRECTION_BULLISH // Get entry price for Which direction trade ...
|
||||||
|
)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
double result = 0;
|
||||||
|
|
||||||
|
//
|
||||||
|
mSymbol = NormalizeSymbol(mSymbol);
|
||||||
|
|
||||||
|
//
|
||||||
|
result =
|
||||||
|
IsBullish(type)
|
||||||
|
? GetBid(mSymbol)
|
||||||
|
: GetAsk(mSymbol);
|
||||||
|
result = NormalizePrice(result, mSymbol);
|
||||||
|
|
||||||
|
//
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Get 1 Pip in Price Value ...
|
// Get 1 Pip in Price Value ...
|
||||||
|
|||||||
@@ -242,12 +242,12 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
result = PrepareSignal(signal);
|
result = PrepareSignal(signal);
|
||||||
if (result)
|
// if (result)
|
||||||
{
|
// {
|
||||||
//
|
// //
|
||||||
// Print("PRV: ", provider);
|
// // Print("PRV: ", provider);
|
||||||
// DrawSignal(signal);
|
// // DrawSignal(signal);
|
||||||
}
|
// }
|
||||||
|
|
||||||
//
|
//
|
||||||
hasLong = false;
|
hasLong = false;
|
||||||
@@ -678,11 +678,56 @@ class XCX121SMCTestStrategy : public XCX121SMCBaseStrategy
|
|||||||
|
|
||||||
//
|
//
|
||||||
// Selectiong SL ...
|
// Selectiong SL ...
|
||||||
selectedSL = SelectSL(
|
double selectedSLRJ = SelectSL(
|
||||||
|
conditions,
|
||||||
|
conditions.signalDir,
|
||||||
|
X_121_SMC_SL_TYPE_REJECTION //
|
||||||
|
);
|
||||||
|
double selectedSLMN = SelectSL(
|
||||||
|
conditions,
|
||||||
|
conditions.signalDir,
|
||||||
|
X_121_SMC_SL_TYPE_MOMENTUM //
|
||||||
|
);
|
||||||
|
double selectedSLSW = SelectSL(
|
||||||
conditions,
|
conditions,
|
||||||
conditions.signalDir,
|
conditions.signalDir,
|
||||||
X_121_SMC_SL_TYPE_SWING //
|
X_121_SMC_SL_TYPE_SWING //
|
||||||
);
|
);
|
||||||
|
double selectedSLSR = SelectSL(
|
||||||
|
conditions,
|
||||||
|
conditions.signalDir,
|
||||||
|
X_121_SMC_SL_TYPE_CURRENT_SAR //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
double slCandidates[4] = {
|
||||||
|
selectedSLRJ,
|
||||||
|
selectedSLMN,
|
||||||
|
selectedSLSW,
|
||||||
|
selectedSLSR //
|
||||||
|
};
|
||||||
|
selectedSL = isBullish
|
||||||
|
? GetMin(slCandidates)
|
||||||
|
: GetMax(slCandidates);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Normalizing SL ...
|
||||||
|
double entry = GetEntry(
|
||||||
|
symbol,
|
||||||
|
conditions.signalDir //
|
||||||
|
);
|
||||||
|
double spread = GetSpread(symbol);
|
||||||
|
double pip = GetPipPrice(symbol);
|
||||||
|
|
||||||
|
//
|
||||||
|
if (isBullish && selectedSL <= entry)
|
||||||
|
{
|
||||||
|
selectedSL -= (pip * 3) - spread;
|
||||||
|
}
|
||||||
|
else if (isBearish && selectedSL >= entry)
|
||||||
|
{
|
||||||
|
selectedSL += pip * 3 + spread;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Detect SL and TP ...
|
// Detect SL and TP ...
|
||||||
|
|||||||
Reference in New Issue
Block a user