last ...
This commit is contained in:
+311
-186
@@ -35,9 +35,30 @@
|
|||||||
//
|
//
|
||||||
// Common ...
|
// Common ...
|
||||||
input group "Common";
|
input group "Common";
|
||||||
input long eaMagicNumber = 78692110; // Magic Number
|
input long eaMagicNumber = 78692110; // Magic Number
|
||||||
input int eaSlippage = 10; // Slippgae
|
input int eaSlippage = 10; // Slippgae
|
||||||
input string eaLogSuffix = ""; // Log Suffix
|
input string eaLogSuffix = ""; // Log Suffix
|
||||||
|
input ENUM_TIMEFRAMES eaAnalysisPeriod = PERIOD_H1; // Analysis Period
|
||||||
|
|
||||||
|
//
|
||||||
|
// Symbols ...
|
||||||
|
//
|
||||||
|
// -------------------------------------------------------
|
||||||
|
// eaSymbols:
|
||||||
|
// ----------
|
||||||
|
// - if EMPTY use Current Symbol;
|
||||||
|
// - for Multi Symbol use Comma Separated Symbols:
|
||||||
|
// EURUSDb,XAUUSDb
|
||||||
|
//
|
||||||
|
// eaSymbolSessions:
|
||||||
|
// ------------------
|
||||||
|
// - if EMPTY use WHOLE Times;
|
||||||
|
// - for each Symbol use Comma Separated:
|
||||||
|
// (Name,[hh:mm],[hh:mm]),
|
||||||
|
// -------------------------------------------------------
|
||||||
|
input group "Symbols";
|
||||||
|
input string eaSymbols = "EURUSDb,XAUUSDb"; // Symbols Description
|
||||||
|
input string eaSymbolSessions = "()"; // Symbols Sessions
|
||||||
|
|
||||||
//
|
//
|
||||||
// Volume ...
|
// Volume ...
|
||||||
@@ -60,8 +81,6 @@ input ENUM_XCAEA_TRADE_RESTRICTION_PERIOD eaRestrictionsPeriod = XCAEA_TRADE_RES
|
|||||||
input int eaMaxAllowedTPs = 2; // Max Allowed TP(s) per Day
|
input int eaMaxAllowedTPs = 2; // Max Allowed TP(s) per Day
|
||||||
input int eaMaxAllowedSLs = 2; // Max Allowed SL(s) per Day
|
input int eaMaxAllowedSLs = 2; // Max Allowed SL(s) per Day
|
||||||
input int eaMaxAllowedTrades = 3; // Max Allowed Trades per Day
|
input int eaMaxAllowedTrades = 3; // Max Allowed Trades per Day
|
||||||
input string eaSessionStartTime = ""; // Trade Start Time
|
|
||||||
input string eaSessionEndTime = ""; // Trade End Time
|
|
||||||
input int eaMaxAllowedPositions = 5; // Max Allowed Same Time Trades
|
input int eaMaxAllowedPositions = 5; // Max Allowed Same Time Trades
|
||||||
input double eaMaxAllowedSpread = 25; // Max Allowed Spread For Trade
|
input double eaMaxAllowedSpread = 25; // Max Allowed Spread For Trade
|
||||||
input double eaMaxAllowedDrawdownFactor = 0.3; // Max Allowed DrawDown for Trade
|
input double eaMaxAllowedDrawdownFactor = 0.3; // Max Allowed DrawDown for Trade
|
||||||
@@ -97,7 +116,7 @@ XCTrade *eaTrade;
|
|||||||
XSignal eaSignal;
|
XSignal eaSignal;
|
||||||
XCVolume *eaVolume;
|
XCVolume *eaVolume;
|
||||||
XTimeTracker eaTimeTracker;
|
XTimeTracker eaTimeTracker;
|
||||||
XCXCAEASignaller *eaSignaller;
|
XCXCAEASignaller *eaSignallers[];
|
||||||
XCXCAEATradeManager *eaTradeManager;
|
XCXCAEATradeManager *eaTradeManager;
|
||||||
XCAEAStrategyConditions eaConditions;
|
XCAEAStrategyConditions eaConditions;
|
||||||
|
|
||||||
@@ -159,19 +178,27 @@ void OnDeinit(const int reason)
|
|||||||
// REASON_CLOSE 9 Terminal closed
|
// REASON_CLOSE 9 Terminal closed
|
||||||
|
|
||||||
//
|
//
|
||||||
eaSignaller.DeInit();
|
|
||||||
|
|
||||||
//
|
//
|
||||||
ZeroMemory(eaAlert);
|
ZeroMemory(eaAlert);
|
||||||
ZeroMemory(eaTrade);
|
ZeroMemory(eaTrade);
|
||||||
ZeroMemory(eaVolume);
|
ZeroMemory(eaVolume);
|
||||||
ZeroMemory(eaSignaller);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
eaSignal.Clean();
|
eaSignal.Clean();
|
||||||
eaConditions.Clean();
|
eaConditions.Clean();
|
||||||
eaTimeTracker.Clean();
|
eaTimeTracker.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
int count = ArraySize(eaSignallers);
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
eaSignallers[i].DeInit();
|
||||||
|
ZeroMemory(eaSignallers[i]);
|
||||||
|
}
|
||||||
|
Clean(eaSignallers);
|
||||||
|
|
||||||
//
|
//
|
||||||
DestroyTimer();
|
DestroyTimer();
|
||||||
}
|
}
|
||||||
@@ -199,6 +226,7 @@ void OnTick()
|
|||||||
//
|
//
|
||||||
double r2r = 4;
|
double r2r = 4;
|
||||||
string provider = "XCAEA";
|
string provider = "XCAEA";
|
||||||
|
datetime cTime = TimeCurrent();
|
||||||
ENUM_POSITION_TYPE type = POSITION_TYPE_BUY;
|
ENUM_POSITION_TYPE type = POSITION_TYPE_BUY;
|
||||||
ENUM_X_ORDER_MODES mode = X_ORDER_MODE_MARKET;
|
ENUM_X_ORDER_MODES mode = X_ORDER_MODE_MARKET;
|
||||||
|
|
||||||
@@ -207,191 +235,204 @@ void OnTick()
|
|||||||
bool hasShort = false;
|
bool hasShort = false;
|
||||||
|
|
||||||
//
|
//
|
||||||
// Start Calculations ...
|
// Checking Signallers ...
|
||||||
|
has = HasChild(eaSignallers);
|
||||||
//
|
|
||||||
// Retrieve Common Data ...
|
|
||||||
string symbol = eaSignaller.GetSymbol();
|
|
||||||
ENUM_TIMEFRAMES period = eaSignaller.GetPeriod();
|
|
||||||
|
|
||||||
//
|
|
||||||
datetime cTime = TimeCurrent();
|
|
||||||
|
|
||||||
//
|
|
||||||
// Required Value For SL/TP Calculations ...
|
|
||||||
double points = GetPoints(symbol);
|
|
||||||
double pip = GetPipPrice(symbol);
|
|
||||||
double pip2 = 2 * pip;
|
|
||||||
|
|
||||||
//
|
|
||||||
has = eaSignaller.DetectSignalSetup(
|
|
||||||
r2r,
|
|
||||||
300 // Max Allowed SL Distance ...
|
|
||||||
);
|
|
||||||
if (has)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
count = eaSignaller
|
|
||||||
.AddConditionsIfNotExists();
|
|
||||||
|
|
||||||
//
|
|
||||||
eaSignaller.mConditions.Clean();
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Check Setuped Conditions Exists ...
|
|
||||||
count = ArraySize(eaSignaller.mConditionsCollection);
|
|
||||||
has = IsValidSize(count);
|
|
||||||
if (!has)
|
if (!has)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
for (int i = 0; i < count; i++)
|
int signallersCount = ArraySize(eaSignallers);
|
||||||
|
for (int is = 0; is < signallersCount; is++)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
has = eaSignaller
|
// Start Calculations ...
|
||||||
.DetectSignalTrigger(eaSignaller
|
|
||||||
.mConditionsCollection[i]);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// If Triggered ...
|
// Retrieve Common Data ...
|
||||||
|
string symbol = eaSignallers[is].GetSymbol();
|
||||||
|
ENUM_TIMEFRAMES period = eaSignallers[is].GetPeriod();
|
||||||
|
|
||||||
|
//
|
||||||
|
// Required Value For SL/TP Calculations ...
|
||||||
|
double points = GetPoints(symbol);
|
||||||
|
double pip = GetPipPrice(symbol);
|
||||||
|
double pip2 = 2 * pip;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Detect Signal Setups ...
|
||||||
|
has = eaSignallers[is].DetectSignalSetup(
|
||||||
|
r2r,
|
||||||
|
300 // Max Allowed SL Distance ...
|
||||||
|
);
|
||||||
if (has)
|
if (has)
|
||||||
{
|
{
|
||||||
//
|
//
|
||||||
idx = i;
|
count = eaSignallers[is]
|
||||||
eaConditions = eaSignaller.mConditionsCollection[i];
|
.AddConditionsIfNotExists();
|
||||||
break;
|
|
||||||
|
//
|
||||||
|
eaSignallers[is].mConditions.Clean();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Check Condition Validation ...
|
// Check Setuped Conditions Exists ...
|
||||||
has = eaSignaller.mConditionsCollection[i].IsValid() &&
|
count = ArraySize(eaSignallers[is].mConditionsCollection);
|
||||||
eaSignaller.mConditionsCollection[i].IsSetuped();
|
has = IsValidSize(count);
|
||||||
if (!has)
|
if (!has)
|
||||||
{
|
{
|
||||||
idx = i;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Remove Setuped Condition if provided IDX ...
|
|
||||||
has = IsValidIndex(idx);
|
|
||||||
if (has)
|
|
||||||
{
|
|
||||||
//
|
//
|
||||||
ArrayRemove(
|
// Loop through Setuped Conditions for
|
||||||
eaSignaller.mConditionsCollection,
|
// Validating or Looking up Triggers ...
|
||||||
idx,
|
for (int i = 0; i < count; i++)
|
||||||
1 //
|
{
|
||||||
|
//
|
||||||
|
// Check Signal Triggered or not ...
|
||||||
|
has = eaSignallers[is]
|
||||||
|
.DetectSignalTrigger(eaSignallers[is]
|
||||||
|
.mConditionsCollection[i]);
|
||||||
|
|
||||||
|
//
|
||||||
|
// If Triggered ...
|
||||||
|
if (has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
idx = i;
|
||||||
|
eaConditions = eaSignallers[is].mConditionsCollection[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check Condition Validation ...
|
||||||
|
has = eaSignallers[is].mConditionsCollection[i].IsValid() &&
|
||||||
|
eaSignallers[is].mConditionsCollection[i].IsSetuped();
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
idx = i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Remove Setuped Condition if provided IDX ...
|
||||||
|
has = IsValidIndex(idx);
|
||||||
|
if (has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
ArrayRemove(
|
||||||
|
eaSignallers[is].mConditionsCollection,
|
||||||
|
idx,
|
||||||
|
1 //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Check EA Conditions is Valid or not ...
|
||||||
|
has = eaConditions.IsSetuped() &&
|
||||||
|
eaConditions.CanTrigger();
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
eaSignal.Clean();
|
||||||
|
eaConditions.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Setting Time to Conditions ...
|
||||||
|
eaConditions.time = cTime;
|
||||||
|
has = ToPositionType(
|
||||||
|
type,
|
||||||
|
eaConditions.type //
|
||||||
);
|
);
|
||||||
}
|
if (!has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
eaSignal.Clean();
|
||||||
|
eaConditions.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Check EA Conditions is Valid or not ...
|
|
||||||
has = eaConditions.IsSetuped() &&
|
|
||||||
eaConditions.CanTrigger();
|
|
||||||
if (!has)
|
|
||||||
{
|
|
||||||
//
|
//
|
||||||
eaConditions.Clean();
|
// Checking Trigger Direction ...
|
||||||
return;
|
hasLong = eaConditions.HasBullishSignal();
|
||||||
}
|
hasShort = eaConditions.HasBearishSignal();
|
||||||
|
has = hasLong ||
|
||||||
|
hasShort;
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
eaSignal.Clean();
|
||||||
|
eaConditions.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Preparing Signal ...
|
||||||
|
eaSignal.mode = mode;
|
||||||
|
eaSignal.type = type;
|
||||||
|
eaSignal.entry = GetEntry(
|
||||||
|
eaConditions.symbol,
|
||||||
|
eaConditions.dir //
|
||||||
|
);
|
||||||
|
eaSignal.provider = provider;
|
||||||
|
eaSignal.sl = eaConditions.sl;
|
||||||
|
eaSignal.tp = eaConditions.tp;
|
||||||
|
eaSignal.volume = X_MIN_VOLUME;
|
||||||
|
eaSignal.time = eaConditions.time;
|
||||||
|
eaSignal.symbol = eaConditions.symbol;
|
||||||
|
eaSignal.period = eaConditions.period;
|
||||||
|
eaSignal.partialCloseOnTPLevel = eaConditions.partialCloseOnTPLevel;
|
||||||
|
eaSignal.partialCloseMultiplier = eaConditions.partialCloseMultiplier;
|
||||||
|
|
||||||
|
//
|
||||||
|
Copy(
|
||||||
|
eaConditions.targets,
|
||||||
|
eaSignal.targets //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Validate Signal ...
|
||||||
|
has = eaSignal.IsValid();
|
||||||
|
if (!has)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
eaSignal.Clean();
|
||||||
|
eaConditions.Clean();
|
||||||
|
|
||||||
|
//
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Handle Volume Management ...
|
||||||
|
double iVolume = eaVolume.CalculateVolume(eaSignal);
|
||||||
|
if (iVolume > X_MIN_VOLUME &&
|
||||||
|
iVolume != eaSignal.volume)
|
||||||
|
{
|
||||||
|
eaSignal.volume = iVolume;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Execute Signal ...
|
||||||
|
has = eaTradeManager.Execute(
|
||||||
|
eaSignal,
|
||||||
|
eaConditions //
|
||||||
|
);
|
||||||
|
|
||||||
//
|
|
||||||
// Setting Time to Conditions ...
|
|
||||||
eaConditions.time = cTime;
|
|
||||||
has = ToPositionType(
|
|
||||||
type,
|
|
||||||
eaConditions.type //
|
|
||||||
);
|
|
||||||
if (!has)
|
|
||||||
{
|
|
||||||
//
|
//
|
||||||
eaSignal.Clean();
|
eaSignal.Clean();
|
||||||
eaConditions.Clean();
|
eaConditions.Clean();
|
||||||
|
|
||||||
//
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
|
||||||
// Checking Trigger Direction ...
|
|
||||||
hasLong = eaConditions.HasBullishSignal();
|
|
||||||
hasShort = eaConditions.HasBearishSignal();
|
|
||||||
has = hasLong ||
|
|
||||||
hasShort;
|
|
||||||
if (!has)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
eaSignal.Clean();
|
|
||||||
eaConditions.Clean();
|
|
||||||
|
|
||||||
//
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Preparing Signal ...
|
|
||||||
//
|
|
||||||
eaSignal.mode = mode;
|
|
||||||
eaSignal.type = type;
|
|
||||||
eaSignal.entry = GetEntry(
|
|
||||||
eaConditions.symbol,
|
|
||||||
eaConditions.dir //
|
|
||||||
);
|
|
||||||
eaSignal.provider = provider;
|
|
||||||
eaSignal.sl = eaConditions.sl;
|
|
||||||
eaSignal.tp = eaConditions.tp;
|
|
||||||
eaSignal.volume = X_MIN_VOLUME;
|
|
||||||
eaSignal.time = eaConditions.time;
|
|
||||||
eaSignal.symbol = eaConditions.symbol;
|
|
||||||
eaSignal.period = eaConditions.period;
|
|
||||||
eaSignal.partialCloseOnTPLevel = eaConditions.partialCloseOnTPLevel;
|
|
||||||
eaSignal.partialCloseMultiplier = eaConditions.partialCloseMultiplier;
|
|
||||||
|
|
||||||
//
|
|
||||||
Copy(
|
|
||||||
eaConditions.targets,
|
|
||||||
eaSignal.targets //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
has = eaSignal.IsValid();
|
|
||||||
if (!has)
|
|
||||||
{
|
|
||||||
//
|
|
||||||
eaSignal.Clean();
|
|
||||||
eaConditions.Clean();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Handle Volume Management ...
|
|
||||||
double iVolume = eaVolume.CalculateVolume(eaSignal);
|
|
||||||
if (iVolume > X_MIN_VOLUME &&
|
|
||||||
iVolume != eaSignal.volume)
|
|
||||||
{
|
|
||||||
eaSignal.volume = iVolume;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
// Draw Signal ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// Execute Signal ...
|
|
||||||
|
|
||||||
//
|
|
||||||
// eaSignal.sl = 0;
|
|
||||||
has = eaTradeManager.Execute(
|
|
||||||
eaSignal,
|
|
||||||
eaConditions //
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
|
||||||
eaSignal.Clean();
|
|
||||||
eaConditions.Clean();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -673,32 +714,116 @@ void InitRequirements()
|
|||||||
eaMaxAllowedTrades //
|
eaMaxAllowedTrades //
|
||||||
);
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
InitSymbolSessions();
|
||||||
|
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initial Symbols and Active Sessions of EA ...
|
||||||
|
*/
|
||||||
|
void InitSymbolSessions()
|
||||||
|
{
|
||||||
|
//
|
||||||
|
string symbols[];
|
||||||
|
string sessions[];
|
||||||
|
string iSymbol = NULL;
|
||||||
|
XCXCAEASignaller *iSignaller;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Parse Symbols ...
|
||||||
|
int symbolsCount = 0;
|
||||||
|
bool isMultiSymbol = IsValid(eaSymbols);
|
||||||
|
if (isMultiSymbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
symbolsCount = SplitContent(
|
||||||
|
symbols,
|
||||||
|
eaSymbols //
|
||||||
|
);
|
||||||
|
isMultiSymbol = IsValidSize(symbolsCount);
|
||||||
|
}
|
||||||
|
if (!isMultiSymbol)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
_Symbol,
|
||||||
|
symbols //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
symbolsCount = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Parse Sessions ...
|
||||||
|
int sessionsCount = 0;
|
||||||
|
bool hasSession = IsValid(eaSymbolSessions);
|
||||||
|
if (hasSession)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
sessionsCount = SplitContent(
|
||||||
|
sessions,
|
||||||
|
eaSymbolSessions //
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Setting Up Symbols ...
|
||||||
|
|
||||||
|
//
|
||||||
|
for (int i = 0; i < symbolsCount; i++)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
iSymbol = symbols[i];
|
||||||
|
|
||||||
|
//
|
||||||
|
// EA Signaller ...
|
||||||
|
iSignaller = new XCXCAEASignaller(
|
||||||
|
iSymbol,
|
||||||
|
_Period,
|
||||||
|
eaAnalysisPeriod // Analysing Period ...
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
Add(
|
||||||
|
iSignaller,
|
||||||
|
eaSignallers //
|
||||||
|
);
|
||||||
|
|
||||||
|
//
|
||||||
|
ZeroMemory(iSignaller);
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Setting Up Sessions ...
|
||||||
|
if (hasSession)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Setting Sessions ...
|
// Setting Sessions ...
|
||||||
eaTradeManager
|
// eaTradeManager
|
||||||
.SetTradeSession(
|
// .SetTradeSession(
|
||||||
_Symbol,
|
// _Symbol,
|
||||||
"01:30", // Start ...
|
// "01:30", // Start ...
|
||||||
"14:25", // End ...
|
// "14:25", // End ...
|
||||||
"XSaherSession" // Name ...
|
// "XSaherSession" // Name ...
|
||||||
);
|
// );
|
||||||
eaTradeManager
|
// eaTradeManager
|
||||||
.SetTradeSession(
|
// .SetTradeSession(
|
||||||
_Symbol,
|
// _Symbol,
|
||||||
"19:30", // Start ...
|
// "19:30", // Start ...
|
||||||
"11:30", // End ...
|
// "11:30", // End ...
|
||||||
"XSaherSession" // Name ...
|
// "XSaherSession" // Name ...
|
||||||
);
|
// );
|
||||||
|
|
||||||
//
|
|
||||||
// EA Signaller ...
|
|
||||||
eaSignaller = new XCXCAEASignaller(
|
|
||||||
_Symbol,
|
|
||||||
_Period,
|
|
||||||
PERIOD_H1 // Analysing Period ...
|
|
||||||
);
|
|
||||||
|
|
||||||
//
|
//
|
||||||
|
Clean(symbols);
|
||||||
|
Clean(sessions);
|
||||||
|
ZeroMemory(iSignaller);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user