From 46a2c4902560205cf6abcdfbd4c62cd1c04caf16 Mon Sep 17 00:00:00 2001 From: Nkondog Anselme Date: Wed, 17 Nov 2021 15:41:12 +0100 Subject: [PATCH] Done with some important functions --- Experts/Nkanven/GDeaLite.ex5 | Bin 15468 -> 38192 bytes Experts/Nkanven/GDeaLite.mq5 | 49 ++++++++++------ Include/Nkanven/GDea/Parameters.mqh | 60 ++++++++++++++------ Include/Nkanven/GDea/Prechecks.mqh | 75 ++++++++++++++++++------- Include/Nkanven/GDea/ScanPositions.mqh | 62 +++++++++++++------- Include/Nkanven/GDea/TradingHour.mqh | 56 +++++++++++------- 6 files changed, 208 insertions(+), 94 deletions(-) diff --git a/Experts/Nkanven/GDeaLite.ex5 b/Experts/Nkanven/GDeaLite.ex5 index 863557ea9bfc35185cdd3dd914ff3280deff8ca5..c9fd3586137276389f6c85fc8ca942f780b62e18 100644 GIT binary patch literal 38192 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 literal 15468 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 Di+Q_F diff --git a/Experts/Nkanven/GDeaLite.mq5 b/Experts/Nkanven/GDeaLite.mq5 index 4cdf40f..1346f33 100644 --- a/Experts/Nkanven/GDeaLite.mq5 +++ b/Experts/Nkanven/GDeaLite.mq5 @@ -7,6 +7,14 @@ #property link "https://www.mql5.com" #property version "1.00" +#include +#include + +CiMA* fsma; +CiMA* ssma; + +CiATR* atr; + #include // Description of variables #include // Error library #include // Prechecks @@ -24,7 +32,14 @@ int OnInit() { //--- - + fsma = new CiMA(); + ssma = new CiMA(); + + fsma.Create(gSymbol, PERIOD_CURRENT, InpFastPeriods, InpFastAppliedPrice, InpFastMethod, PRICE_CLOSE); + ssma.Create(gSymbol, PERIOD_CURRENT, InpSlowPeriods, InpFastAppliedPrice, InpSlowMethod, PRICE_CLOSE); + + atr = new CiATR(); + atr.Create(gSymbol, PERIOD_CURRENT, InpAtrPeriod); //--- return(INIT_SUCCEEDED); } @@ -34,7 +49,7 @@ int OnInit() void OnDeinit(const int reason) { //--- - + } //+------------------------------------------------------------------+ //| Expert tick function | @@ -42,26 +57,26 @@ void OnDeinit(const int reason) void OnTick() { //--- - + } //+------------------------------------------------------------------+ //Initialize variables void InitializeVariables() { - IsNewCandle=false; - IsTradedThisBar=false; - IsOperatingHours=false; - IsSpreadOK=false; + gIsNewCandle=false; + gIsTradedThisBar=false; + gIsOperatingHours=false; + gIsSpreadOK=false; - LotSize=DefaultLotSize; - TickValue=0; + gLotSize=InpDefaultLotSize; + gTickValue=0; - TotalOpenBuy=0; - TotalOpenSell=0; + gTotalOpenBuy=0; + gTotalOpenSell=0; - SignalEntry=SIGNAL_ENTRY_NEUTRAL; - SignalExit=SIGNAL_EXIT_NEUTRAL; + gSignalEntry=SIGNAL_ENTRY_NEUTRAL; + gSignalExit=SIGNAL_EXIT_NEUTRAL; Print("Variables intialized"); } @@ -69,15 +84,15 @@ void InitializeVariables() void CheckSpread() { //Get the current spread in points, the (int) transforms the double coming from MarketInfo into an integer to avoid a warning when compiling - double SpreadCurr=SymbolInfoInteger(mSymbol, SYMBOL_SPREAD); + long SpreadCurr=SymbolInfoInteger(gSymbol, SYMBOL_SPREAD); Print("Spread ", SpreadCurr); - if(SpreadCurr<=MaxSpread) + if(SpreadCurr<=InpMaxSpread) { - IsSpreadOK=true; + gIsSpreadOK=true; } else { - IsSpreadOK=false; + gIsSpreadOK=false; } } //+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/Parameters.mqh b/Include/Nkanven/GDea/Parameters.mqh index d2b8ef1..c0d3ccc 100644 --- a/Include/Nkanven/GDea/Parameters.mqh +++ b/Include/Nkanven/GDea/Parameters.mqh @@ -103,19 +103,31 @@ input int InpSlowPeriods = 20; // Slow periods input ENUM_MA_METHOD InpSlowMethod = MODE_SMA; // Slow method input ENUM_APPLIED_PRICE InpSlowAppliedPrice = PRICE_CLOSE; // Slow price +input int InpAtrPeriod = 14; // ATR period // Bar numbers for comparison //input int InpBar2 = 2; // Base bar number //input int InpBar1 = 1; // Crossover bar number input string Comment_0="=========="; //Risk Management Settings -input ENUM_RISK_DEFAULT_SIZE RiskDefaultSize=RISK_DEFAULT_AUTO; //Position Size Mode -input double DefaultLotSize=1; //Position Size (if fixed or if no stop loss defined) -input ENUM_RISK_BASE RiskBase=RISK_BASE_BALANCE; //Risk Base -input double MaxRiskPerTrade=0.5; //Percentage To Risk Each Trade -input double MinLotSize=0.01; //Minimum Position Size Allowed -input double MaxLotSize=100; //Maximum Position Size Allowed -input double MaxSpread=10.0; //Maximum Spread Allowed -input int Slippage=5; //Maximum Slippage Allowed in points +input ENUM_RISK_DEFAULT_SIZE InpRiskDefaultSize=RISK_DEFAULT_AUTO; //Position Size Mode +input double InpDefaultLotSize=1; //Position Size (if fixed or if no stop loss defined) +input ENUM_RISK_BASE InpRiskBase=RISK_BASE_BALANCE; //Risk Base +input double InpMaxRiskPerTrade=0.5; //Percentage To Risk Each Trade +input double InpMinLotSize=0.01; //Minimum Position Size Allowed +input double InpMaxLotSize=100; //Maximum Position Size Allowed +input double InpMaxSpread=10.0; //Maximum Spread Allowed +input int InpSlippage=5; //Maximum Slippage Allowed in points +input ENUM_MODE_SL InpStopLossMode=SL_AUTO; //Stop Loss Mode +input int InpDefaultStopLoss=0; //Default Stop Loss In Points (0=No Stop Loss) +input int InpMinStopLoss=0; //Minimum Allowed Stop Loss In Points +input int InpMaxStopLoss=5000; //Maximum Allowed Stop Loss In Points +input bool InpAtrStopLoss=false; //Set Stop loss based on ATR +input int InpAtrStopLossFactor=3; //Multiplicator for ATR stop loss +input ENUM_MODE_TP InpTakeProfitMode=TP_AUTO; //Take Profit Mode +input int InpDefaultTakeProfit=0; //Default Take Profit In Points (0=No Take Profit) +input int InpMinTakeProfit=0; //Minimum Allowed Take Profit In Points +input int InpMaxTakeProfit=5000; //Maximum Allowed Take Profit In Points +input double InpTakeProfitPercent=1.0; //Take Profit percent on risk base // Trading time input int InStartHour = 12; // Trading starting hour @@ -131,20 +143,32 @@ input double InpVolume = 0.01; // Default order size input string InpComment = __FILE__; // Default trade comment input int InpMagicNumber = 198901; // Magic Number +input string Comment_1="=========="; //Trading Hours Settings +input bool InpUseTradingHours=false; //Limit Trading Hours +input string InpTradingHourStart="01"; //Trading Start Hour (Broker Server Hour) +input string InpTradingHourEnd="23"; //Trading End Hour (Broker Server Hour) +input string InpTradingStartMin="30"; //Trading Start minute (Broker Server Hour) +input string InpTradingEndMin="00"; //Trading End minute -bool IsNewCandle=false; -bool IsTradedThisBar=false; bool IsOperatingHours=false; -bool IsSpreadOK=false; +bool gIsNewCandle=false; +bool gIsTradedThisBar=false; +bool gIsOperatingHours=false; +bool gIsPreChecksOk=false; //Indicates if the pre checks are satisfied +bool gIsSpreadOK=false; //Indicates if the spread is low enough to trade -double LotSize=DefaultLotSize; -int TickValue=0; +double gLotSize=InpDefaultLotSize; +int gTickValue=0; -int TotalOpenBuy=0; -int TotalOpenSell=0; -string mSymbol = Symbol(); +int gTotalOpenBuy=0; +int gTotalOpenSell=0; +int gTotalOpenOrders=0; +string gSymbol = Symbol(); + +datetime gLastBarTraded=NULL; MqlTick last_tick; +MqlDateTime dt; -ENUM_SIGNAL_ENTRY SignalEntry=SIGNAL_ENTRY_NEUTRAL; //Entry signal variable -ENUM_SIGNAL_EXIT SignalExit=SIGNAL_EXIT_NEUTRAL; \ No newline at end of file +ENUM_SIGNAL_ENTRY gSignalEntry=SIGNAL_ENTRY_NEUTRAL; //Entry signal variable +ENUM_SIGNAL_EXIT gSignalExit=SIGNAL_EXIT_NEUTRAL; \ No newline at end of file diff --git a/Include/Nkanven/GDea/Prechecks.mqh b/Include/Nkanven/GDea/Prechecks.mqh index aedb074..abe6850 100644 --- a/Include/Nkanven/GDea/Prechecks.mqh +++ b/Include/Nkanven/GDea/Prechecks.mqh @@ -5,23 +5,58 @@ //+------------------------------------------------------------------+ #property copyright "Copyright 2021, Nkondog Anselme Venceslas" #property link "https://www.mql5.com" -//+------------------------------------------------------------------+ -//| defines | -//+------------------------------------------------------------------+ -// #define MacrosHello "Hello, world!" -// #define MacrosYear 2010 -//+------------------------------------------------------------------+ -//| DLL imports | -//+------------------------------------------------------------------+ -// #import "user32.dll" -// int SendMessageA(int hWnd,int Msg,int wParam,int lParam); -// #import "my_expert.dll" -// int ExpertRecalculate(int wParam,int lParam); -// #import -//+------------------------------------------------------------------+ -//| EX5 imports | -//+------------------------------------------------------------------+ -// #import "stdlib.ex5" -// string ErrorDescription(int error_code); -// #import -//+------------------------------------------------------------------+ + +//Perform integrity checks when the EA is loaded +void CheckPreChecks() + { + gIsPreChecksOk=true; +//Check if Live Trading is enabled in MT4 + if(!MQLInfoInteger(MQL_TRADE_ALLOWED)) + { + gIsPreChecksOk=false; + Print("Live Trading is not enabled, please enable it in MT4 and chart settings"); + return; + } +//Check if the default stop loss you are setting in above the minimum and below the maximum + if(InpDefaultStopLossInpMaxStopLoss) + { + gIsPreChecksOk=false; + Print("Default Stop Loss must be between Minimum and Maximum Stop Loss Allowed"); + return; + } +//Check if the default take profit you are setting in above the minimum and below the maximum + if(InpDefaultTakeProfitInpMaxTakeProfit) + { + gIsPreChecksOk=false; + Print("Default Take Profit must be between Minimum and Maximum Take Profit Allowed"); + return; + } +//Check if the Lot Size is between the minimum and maximum + if(InpDefaultLotSizeInpMaxLotSize) + { + gIsPreChecksOk=false; + Print("Default Lot Size must be between Minimum and Maximum Lot Size Allowed"); + return; + } +//Slippage must be >= 0 + if(InpSlippage<0) + { + gIsPreChecksOk=false; + Print("Slippage must be a positive value"); + return; + } +//MaxSpread must be >= 0 + if(InpMaxSpread<0) + { + gIsPreChecksOk=false; + Print("Maximum Spread must be a positive value"); + return; + } +//MaxRiskPerTrade is a % between 0 and 100 + if(InpMaxRiskPerTrade<0 || InpMaxRiskPerTrade>100) + { + gIsPreChecksOk=false; + Print("Maximum Risk Per Trade must be a percentage between 0 and 100"); + return; + } + } diff --git a/Include/Nkanven/GDea/ScanPositions.mqh b/Include/Nkanven/GDea/ScanPositions.mqh index 061ea76..7adfdb0 100644 --- a/Include/Nkanven/GDea/ScanPositions.mqh +++ b/Include/Nkanven/GDea/ScanPositions.mqh @@ -5,23 +5,45 @@ //+------------------------------------------------------------------+ #property copyright "Copyright 2021, Nkondog Anselme Venceslas" #property link "https://www.mql5.com" -//+------------------------------------------------------------------+ -//| defines | -//+------------------------------------------------------------------+ -// #define MacrosHello "Hello, world!" -// #define MacrosYear 2010 -//+------------------------------------------------------------------+ -//| DLL imports | -//+------------------------------------------------------------------+ -// #import "user32.dll" -// int SendMessageA(int hWnd,int Msg,int wParam,int lParam); -// #import "my_expert.dll" -// int ExpertRecalculate(int wParam,int lParam); -// #import -//+------------------------------------------------------------------+ -//| EX5 imports | -//+------------------------------------------------------------------+ -// #import "stdlib.ex5" -// string ErrorDescription(int error_code); -// #import -//+------------------------------------------------------------------+ + +//Scan all positions to find the ones submitted by the EA +//NOTE This function is defined as bool because we want to return true if it is successful and false if it fails +bool ScanPositions() + { + +//Scan all the orders, retrieving some of the details + gTotalOpenOrders = 0; + gTotalOpenBuy = 0; + gTotalOpenSell = 0; + for(int i=0; igLastBarTraded || gLastBarTraded==NULL) + gLastBarTraded=(datetime)PositionGetInteger(POSITION_TIME); + } + Print("Total positions ", gTotalOpenOrders, " - Total buys ", gTotalOpenBuy, " - Total sells ", gTotalOpenSell); + return true; + } \ No newline at end of file diff --git a/Include/Nkanven/GDea/TradingHour.mqh b/Include/Nkanven/GDea/TradingHour.mqh index db311c7..7933ad8 100644 --- a/Include/Nkanven/GDea/TradingHour.mqh +++ b/Include/Nkanven/GDea/TradingHour.mqh @@ -5,23 +5,41 @@ //+------------------------------------------------------------------+ #property copyright "Copyright 2021, Nkondog Anselme Venceslas" #property link "https://www.mql5.com" -//+------------------------------------------------------------------+ -//| defines | -//+------------------------------------------------------------------+ -// #define MacrosHello "Hello, world!" -// #define MacrosYear 2010 -//+------------------------------------------------------------------+ -//| DLL imports | -//+------------------------------------------------------------------+ -// #import "user32.dll" -// int SendMessageA(int hWnd,int Msg,int wParam,int lParam); -// #import "my_expert.dll" -// int ExpertRecalculate(int wParam,int lParam); -// #import -//+------------------------------------------------------------------+ -//| EX5 imports | -//+------------------------------------------------------------------+ -// #import "stdlib.ex5" -// string ErrorDescription(int error_code); -// #import + +//Check and return if it is operation hours or not +void CheckOperationHours() + { +//If we are not using operating hours then IsOperatingHours is true and I skip the other checks + if(!InpUseTradingHours) + { + gIsOperatingHours=true; + return; + } +//Check if the current hour is between the allowed hours of operations, if so IsOperatingHours is set true + Print("1 this is ", (InpTradingHourStart==InpTradingHourEnd && dt.hour==InpTradingHourStart)); + + if(InpTradingHourStart==InpTradingHourEnd && dt.hour==InpTradingHourStart) + { + gIsOperatingHours=true; + return; + } + + if(InpTradingHourStart= InpTradingStartMin) + { + gIsOperatingHours=true; + return; + } + if(dt.hour > InpTradingHourStart) + { + gIsOperatingHours=true; + } + } + + if(InpTradingHourStart>InpTradingHourEnd && ((dt.hour>=InpTradingHourStart && dt.hour<=23) || (dt.hour<=InpTradingHourEnd && dt.hour>=0))) + { + gIsOperatingHours=true; + } + } //+------------------------------------------------------------------+