prepare workspace by eu5, add some scripts and node modules on Documents folder, extends compile script and also node module to automate usefull most commonly used compilation tasks and also create required npm scripts and vscode debug lunch tasks based on them ...
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,280 @@
|
||||
///////////////////////////////////////////////////////////////
|
||||
//
|
||||
// SaherElm IT Center MQL5 XEU5 Signal Provider Library Inputs
|
||||
// -----------------------------------------------------------
|
||||
//
|
||||
// Maintainer:
|
||||
// ------------
|
||||
// Hadi Khazaee Asl (hadi_khazaee_asl@yahoo.com)
|
||||
//
|
||||
//////////////////////////////////////////////////////
|
||||
//
|
||||
// Global Properties ...
|
||||
#property library
|
||||
#property copyright "Copyright 2023, SaherElm IT Center"
|
||||
#property link "https://www.saherelm.ir"
|
||||
#property version "1.00"
|
||||
#property strict
|
||||
|
||||
//
|
||||
// Include Logger ...
|
||||
#include "../Libraries/x-saherelm.log.lib.mq5"
|
||||
|
||||
//
|
||||
// Include Classes ...
|
||||
#include "../Classes/x-saherelm.class.lib.mq5"
|
||||
|
||||
//
|
||||
input group "XEU5 Provider";
|
||||
|
||||
//
|
||||
// Commonly Used Configurations ...
|
||||
input group "XEU5 Common";
|
||||
//
|
||||
// Provider ...
|
||||
input bool xEU5EnableProvider = true; // Enable Provider
|
||||
input int xEU5NumberOfItemsPerTick = 30; // Number Of items Readed In Each Tick
|
||||
//
|
||||
// Alerts ...
|
||||
input bool xEU5EnableAlerts = true; // Enable Events Alert
|
||||
input bool xEU5EnableHourlyAlerts = false; // Send Alert on each new Hour
|
||||
input bool xEU5EnableDailyAlerts = false; // Send Alert on each new Day
|
||||
input bool xEU5EnableWeeklyAlerts = false; // Send Alert on each new Week
|
||||
input bool xEU5EnableMonthlyAlerts = true; // Send Alert on each new Month
|
||||
//
|
||||
// Reports ...
|
||||
input bool xEU5EnableDailyReports = false; // Send Report on each new Day
|
||||
input bool xEU5EnableWeeklyReports = false; // Send Report on each new Week
|
||||
input bool xEU5EnableMonthlyReports = true; // Send Report on each new Month
|
||||
|
||||
//
|
||||
// Trader and Expert Specific Configurations ...
|
||||
input group "XEU5 Trader";
|
||||
input int xEU5MagicNumber = 16940560; // Trader MagicNumber
|
||||
input int xEU5Slippage = 10; // Trader Slippage
|
||||
|
||||
//
|
||||
// Trades Management Configurations ...
|
||||
input group "XEU5 Trade Management";
|
||||
input bool xEU5AllowLongTrades = true; // Allow Long Trades
|
||||
input bool xEU5AllowShortTrades = true; // Allow Short Trades
|
||||
|
||||
//
|
||||
// Risk Management Configurations ...
|
||||
input group "XEU5 Risk Management";
|
||||
//
|
||||
input bool xEU5UseVirtualTPSl = false; // Use Virtual TP SL
|
||||
//
|
||||
// Trade Count ...
|
||||
input int xEU5MaxAllowedTrades = 10; // Max Allowed Trades at Same Time
|
||||
input ENUM_X_CROSS_SIGNAL_METHOD xEU5CrossSignalsMethod = X_CROSS_SIGNAL_REGULAR; // Handle Cross Signals Method
|
||||
//
|
||||
// Max Allowed Trade Age ...
|
||||
input int xEU5MaxAllowedTradeAge = 1500; // Detect Long Time Trades
|
||||
input ENUM_X_GUARD_ACTIONS xEU5OldTradesAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_1; // What to do with Old Trades
|
||||
//
|
||||
// Trade Volume Specific Configurations ...
|
||||
input double xEU5StaticVolumeFactor = 0.0002; // Static Volume baesd on Balance
|
||||
input ENUM_STATIC_VOLUME_METHODS xEU5StaticVolumeMethod = X_STATIC_VOLUME_BASED_ON_BALANCE; // How to Calculate Static Volume
|
||||
input double xEU5VolumeMultiplier = 0; // Volume Increase Multiplier
|
||||
input double xEU5ApplyVolumeMultiplierFactor = 0; // Apply Volume Multiplier Rate based on Balance
|
||||
input double xEU5MaxSupportedVolumePerTradeFactor = 0; // Max Supported Volume Per Trade Factor based on Balance
|
||||
input double xEU5IncreasedMaxSupportedVolumeRate = 0; // Increase Max Supported Volume based on Balance
|
||||
//
|
||||
// Trade Profits ...
|
||||
input double xEU5MinRewardInPips = 15; // Minimum Reward Per Trade in Pips
|
||||
input double xEU5RiskFreeStepInPips = 6; // Make Trades Risk Free Steps in Pips
|
||||
input double xEU5RiskFreeRate = 0.6; // Volume Multiplier for Risk Free Trades
|
||||
//
|
||||
// Guard Riskable Money and Profits ...
|
||||
input double xEU5CriticalDrawDownFactor = 0.40; // Critical Allowed Drawdown Factor based on Balance
|
||||
input ENUM_X_GUARD_ACTIONS xEU5CriticalGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_5; // Specify Guard Action on Critical Drawdown
|
||||
input double xEU5MaxAllowedDrawDownFactor = 0.45; // Max Allowed Drawdown Factor based on Balance
|
||||
input ENUM_X_GUARD_ACTIONS xEU5MaxAllowedGuardAction = X_GUARD_PARTIAL_CLOSE_MAX_IN_DD_10; // Specify Guard Action on Max Allowed Drawdown
|
||||
input int xEU5GuardStopoutFiredAfterTouches = 5; // Guard Stopout all Trades if Max Allowed Drawdown touched
|
||||
|
||||
//
|
||||
// Account Conditions for Trading ...
|
||||
input double xEU5BalanceFactorForOpenTrades = 0.5; // Minimum Balance for Open Trades
|
||||
input double xEU5FreeMarginFactorForOpenTrades = 0.8; // Minimum Free Margin for Open Trades
|
||||
|
||||
//
|
||||
// Validate Inputs before Initialization ...
|
||||
bool XEU5ValidateInputs()
|
||||
{
|
||||
//
|
||||
bool result = false;
|
||||
|
||||
//
|
||||
// Implement Other Verifications ...
|
||||
|
||||
//
|
||||
// Check Trading Availability ...
|
||||
bool isTradeAvailable = xEU5AllowLongTrades || xEU5AllowShortTrades;
|
||||
if (!isTradeAvailable)
|
||||
{
|
||||
LogMessage("XEU5 => Warning: Trading disabled ...");
|
||||
}
|
||||
|
||||
//
|
||||
// Chekc Number of reading items per tick ...
|
||||
result = xEU5NumberOfItemsPerTick >= 5;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 invalid Number of items Reading Per Tick ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Max Allowed Trades Count ...
|
||||
result = isTradeAvailable && xEU5MaxAllowedTrades >= 1;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Number of Trades not valid ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Free Margin ...
|
||||
result =
|
||||
isTradeAvailable &&
|
||||
xEU5FreeMarginFactorForOpenTrades > 0 &&
|
||||
xEU5FreeMarginFactorForOpenTrades < 1;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Free Margin ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check min Balance for Open Trades ...
|
||||
result =
|
||||
isTradeAvailable &&
|
||||
xEU5BalanceFactorForOpenTrades > 0 &&
|
||||
xEU5BalanceFactorForOpenTrades < 1;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Min Balance for Open Trades ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Min Reward Per Trade ...
|
||||
result = xEU5MinRewardInPips > 0;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Min Reward Per Trade ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Trades Volume ...
|
||||
result = xEU5StaticVolumeFactor > 0;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Static Volume ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Volume Multiplier ...
|
||||
result = xEU5VolumeMultiplier >= 0;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Volume Multiplier ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
xEU5CriticalDrawDownFactor == 0 || (xEU5CriticalDrawDownFactor > 0 &&
|
||||
xEU5CriticalDrawDownFactor < 1);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Critical DrawDown Factor ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result =
|
||||
xEU5MaxAllowedDrawDownFactor == 0 || (xEU5MaxAllowedDrawDownFactor > 0 &&
|
||||
xEU5MaxAllowedDrawDownFactor < 1);
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Invalid Max Allowed DrawDown Factor ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
// Check Guard Actions ...
|
||||
//
|
||||
result =
|
||||
xEU5CriticalDrawDownFactor > 0 &&
|
||||
xEU5CriticalDrawDownFactor < 1 &&
|
||||
xEU5MaxAllowedDrawDownFactor > 0 &&
|
||||
xEU5MaxAllowedDrawDownFactor < 1;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 For Critical Drawdown, you have to Specify Max Drawdown also ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
result = xEU5CriticalDrawDownFactor > 0 && xEU5CriticalDrawDownFactor < xEU5MaxAllowedDrawDownFactor;
|
||||
if (!result)
|
||||
{
|
||||
//
|
||||
LogMessage("XEU5 Critical Drawdown must Smaller than Max Drawdown ...");
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
|
||||
//
|
||||
if (xEU5CriticalDrawDownFactor > 0 && xEU5CriticalGuardAction == X_GUARD_DO_NOTHING)
|
||||
{
|
||||
LogMessage("XEU5 IMPORTANT you Specified Critical Drawdown, but there is no any Guard Action ...");
|
||||
}
|
||||
|
||||
//
|
||||
if (xEU5MaxAllowedDrawDownFactor > 0 && xEU5MaxAllowedGuardAction == X_GUARD_DO_NOTHING)
|
||||
{
|
||||
LogMessage("XEU5 IMPORTANT you Specified Max Allowed Drawdown, but there is no any Guard Action ...");
|
||||
}
|
||||
|
||||
//
|
||||
result = true;
|
||||
|
||||
//
|
||||
return result;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user