From 3165cd3c21ba5a1caf6475ae7cd9ffad98378d8d Mon Sep 17 00:00:00 2001 From: Nkondog Anselme Date: Wed, 17 Nov 2021 05:42:15 +0100 Subject: [PATCH] Add GDea files --- .../Framework EA/GoldenDeparture/GDea.mq4 | 153 +++++++ .../Framework EA/GoldenDeparture/GDea.mq5 | 197 +++++++++ Experts/Nkanven/Framework EA/Grid/SnT Bot.ex5 | Bin 0 -> 121130 bytes Experts/Nkanven/Framework EA/Grid/SnT Bot.mq5 | 284 +++++++++++++ Experts/Nkanven/GDeaLite.ex5 | Bin 0 -> 15468 bytes Experts/Nkanven/GDeaLite.mq5 | 83 ++++ .../Nkanven/Frameworks/GDea/CommonBase.mqh | 78 ++++ .../Nkanven/Frameworks/GDea/ExpertBase.mqh | 380 ++++++++++++++++++ Include/Nkanven/Frameworks/GDea/Framework.mqh | 36 ++ .../Nkanven/Frameworks/GDea/IndicatorBase.mqh | 59 +++ .../Nkanven/Frameworks/GDea/SignalBase.mqh | 112 ++++++ Include/Nkanven/Frameworks/GDea/TPSLBase.mqh | 39 ++ .../Nkanven/Frameworks/GDea/Trade/Trade.mqh | 16 + .../Frameworks/GDea/Trade/Trade_mql4.mqh | 123 ++++++ .../Frameworks/GDea/Trade/Trade_mql5.mqh | 66 +++ Include/Nkanven/Frameworks/GDea/Updates.txt | 7 + Include/Nkanven/Frameworks/GDeaFramework.mqh | 12 + Include/Nkanven/GDea/CheckHistory.mqh | 27 ++ Include/Nkanven/GDea/ClosePositions.mqh | 27 ++ Include/Nkanven/GDea/EntriesManager.mqh | 27 ++ Include/Nkanven/GDea/LotSizeCal.mqh | 27 ++ Include/Nkanven/GDea/Parameters.mqh | 150 +++++++ Include/Nkanven/GDea/Prechecks.mqh | 27 ++ Include/Nkanven/GDea/ScanPositions.mqh | 27 ++ Include/Nkanven/GDea/TradeManager.mqh | 27 ++ Include/Nkanven/GDea/TradingHour.mqh | 27 ++ 26 files changed, 2011 insertions(+) create mode 100644 Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq4 create mode 100644 Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq5 create mode 100644 Experts/Nkanven/Framework EA/Grid/SnT Bot.ex5 create mode 100644 Experts/Nkanven/Framework EA/Grid/SnT Bot.mq5 create mode 100644 Experts/Nkanven/GDeaLite.ex5 create mode 100644 Experts/Nkanven/GDeaLite.mq5 create mode 100644 Include/Nkanven/Frameworks/GDea/CommonBase.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/ExpertBase.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/Framework.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/IndicatorBase.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/SignalBase.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/TPSLBase.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/Trade/Trade.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/Trade/Trade_mql4.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/Trade/Trade_mql5.mqh create mode 100644 Include/Nkanven/Frameworks/GDea/Updates.txt create mode 100644 Include/Nkanven/Frameworks/GDeaFramework.mqh create mode 100644 Include/Nkanven/GDea/CheckHistory.mqh create mode 100644 Include/Nkanven/GDea/ClosePositions.mqh create mode 100644 Include/Nkanven/GDea/EntriesManager.mqh create mode 100644 Include/Nkanven/GDea/LotSizeCal.mqh create mode 100644 Include/Nkanven/GDea/Parameters.mqh create mode 100644 Include/Nkanven/GDea/Prechecks.mqh create mode 100644 Include/Nkanven/GDea/ScanPositions.mqh create mode 100644 Include/Nkanven/GDea/TradeManager.mqh create mode 100644 Include/Nkanven/GDea/TradingHour.mqh diff --git a/Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq4 b/Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq4 new file mode 100644 index 0000000..4492408 --- /dev/null +++ b/Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq4 @@ -0,0 +1,153 @@ +/* + + MA Crossover.mq4 + + Copyright 2013-2020, Orchard Forex + https://www.orchardforex.com + + Description: + +*/ + +#property copyright "Copyright 2013-2020, Orchard Forex" +#property link "https://www.orchardforex.com" +#property version "1.00" +#property strict + +// +// This is where we pull in the framework +// +#include + +// +// Input Section +// +// Fast moving average +input int InpFastPeriods = 10; // Fast periods +input ENUM_MA_METHOD InpFastMethod = MODE_SMA; // Fast method +input ENUM_APPLIED_PRICE InpFastAppliedPrice = PRICE_CLOSE; // Fast price + +// Slow moving average +input int InpSlowPeriods = 20; // Slow periods +input ENUM_MA_METHOD InpSlowMethod = MODE_SMA; // Slow method +input ENUM_APPLIED_PRICE InpSlowAppliedPrice = PRICE_CLOSE; // Slow price + +// Bar numbers for comparison +//input int InpBar2 = 2; // Base bar number +//input int InpBar1 = 1; // Crossover bar number + +// +// Some standard inputs, +// remember to change the default magic for each EA +// +input double InpVolume = 0.01; // Default order size +input string InpComment = __FILE__; // Default trade comment +input int InpMagicNumber = 20200701; // Magic Number + +// +// Declare the expert, use the child class name +// +#define CExpert CExpertBase +CExpert *Expert; + +// +// Signals, use the child class names if applicable +// +CSignalBase *EntrySignal; +CSignalBase *ExitSignal; + +// +// Indicators - use the child class name here +// +CIndicatorMA *FastIndicator; +CIndicatorMA *SlowIndicator; + +int OnInit() { + + // + // Instantiate the expert + // + Expert = new CExpert(); + + // + // Assign the default values to the expert + // + Expert.SetVolume(InpVolume); + Expert.SetTradeComment(InpComment); + Expert.SetMagic(InpMagicNumber); + + // + // Create the indicators + // + FastIndicator = new CIndicatorMA(InpFastPeriods, 0, InpFastMethod, InpFastAppliedPrice); + SlowIndicator = new CIndicatorMA(InpSlowPeriods, 0, InpSlowMethod, InpSlowAppliedPrice); + + // + // Set up the signals + // + EntrySignal = new CSignalCrossover(); + EntrySignal.AddIndicator(FastIndicator, 0); + EntrySignal.AddIndicator(SlowIndicator, 0); + + //ExitSignal = Not needed, using the same signal as entry + + // + // Add the signals to the expert + // + Expert.AddEntrySignal(EntrySignal); + Expert.AddExitSignal(EntrySignal); // Same signal + + // + // Finish expert initialisation and check result + // + int result = Expert.OnInit(); + + return(result); + +} + +void OnDeinit(const int reason) { + + EventKillTimer(); + + delete Expert; + //delete ExitSignal; + delete EntrySignal; + delete FastIndicator; + delete SlowIndicator; + + return; + +} + +void OnTick() { + + Expert.OnTick(); + return; + +} + +void OnTimer() { + + Expert.OnTimer(); + return; + +} + +double OnTester() { + + return(Expert.OnTester()); + +} + +void OnChartEvent(const int id, + const long &lparam, + const double &dparam, + const string &sparam) { + + Expert.OnChartEvent(id, lparam, dparam, sparam); + return; + +} + + diff --git a/Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq5 b/Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq5 new file mode 100644 index 0000000..fcacfe4 --- /dev/null +++ b/Experts/Nkanven/Framework EA/GoldenDeparture/GDea.mq5 @@ -0,0 +1,197 @@ +/* + + MA Crossover.mq5 + + Copyright 2013-2020, Orchard Forex + https://www.orchardforex.com + + Description: + +*/ + +#property copyright "Copyright 2013-2020, Orchard Forex" +#property link "https://www.orchardforex.com" +#property version "1.00" +#property strict + +// +// This is where we pull in the framework +// +#include + +// +// Input Section +// +// Fast moving average +input int InpFastPeriods = 10; // Fast periods +input ENUM_MA_METHOD InpFastMethod = MODE_SMA; // Fast method +input ENUM_APPLIED_PRICE InpFastAppliedPrice = PRICE_CLOSE; // Fast price + +// Slow moving average +input int InpSlowPeriods = 20; // Slow periods +input ENUM_MA_METHOD InpSlowMethod = MODE_SMA; // Slow method +input ENUM_APPLIED_PRICE InpSlowAppliedPrice = PRICE_CLOSE; // Slow price + +// Bar numbers for comparison +//input int InpBar2 = 2; // Base bar number +//input int InpBar1 = 1; // Crossover bar number + +// +// Some standard inputs, +// remember to change the default magic for each EA +// +input double InpVolume = 0.01; // Default order size +input string InpComment = __FILE__; // Default trade comment +input int InpMagicNumber = 20200701; // Magic Number + +// +// Declare the expert, use the child class name +// +#define CExpert CExpertBase +CExpert *Expert; + +// +// Signals, use the child class names if applicable +// +CSignalBase *EntrySignal; +CSignalBase *ExitSignal; + +// +// Indicators - use the child class name here +// +CIndicatorMA *FastIndicator; +CIndicatorMA *SlowIndicator; + +int OnInit() { + + // + // Instantiate the expert + // + Expert = new CExpert(); + + // + // Assign the default values to the expert + // + Expert.SetVolume(InpVolume); + Expert.SetTradeComment(InpComment); + Expert.SetMagic(InpMagicNumber); + + // + // Create the indicators + // + FastIndicator = new iMA(Symbol(), PERIOD_CURRENT, InpFastPeriods, 0, InpFastMethod, InpFastAppliedPrice); + SlowIndicator = new iMA(Symbol(), PERIOD_CURRENT, InpSlowPeriods, 0, InpSlowMethod, InpSlowAppliedPrice); + + // + // Set up the signals + // + EntrySignal = new CSignalCrossover(); + EntrySignal.AddIndicator(FastIndicator, 0); + EntrySignal.AddIndicator(SlowIndicator, 0); + + //ExitSignal = Not needed, using the same signal as entry + + // + // Add the signals to the expert + // + Expert.AddEntrySignal(EntrySignal); + Expert.AddExitSignal(EntrySignal); // Same signal + + // + // Finish expert initialisation and check result + // + int result = Expert.OnInit(); + + return(result); + +} + +void OnDeinit(const int reason) { + + EventKillTimer(); + + delete Expert; + //delete ExitSignal; + delete EntrySignal; + delete FastIndicator; + delete SlowIndicator; + + return; + +} + +void OnTick() { + + Expert.OnTick(); + return; + +} + +void OnTimer() { + + Expert.OnTimer(); + return; + +} + +void OnTrade() { + + Expert.OnTrade(); + return; + +} + +void OnTradeTransaction(const MqlTradeTransaction& trans, + const MqlTradeRequest& request, + const MqlTradeResult& result) { + + Expert.OnTradeTransaction(trans, request, result); + return; + +} + +double OnTester() { + + return(Expert.OnTester()); + +} + +void OnTesterInit() { + + Expert.OnTesterInit(); + return; + +} + +void OnTesterPass() { + + Expert.OnTesterPass(); + return; + +} + +void OnTesterDeinit() { + + Expert.OnTesterDeinit(); + return; + +} + +void OnChartEvent(const int id, + const long &lparam, + const double &dparam, + const string &sparam) { + + Expert.OnChartEvent(id, lparam, dparam, sparam); + return; + +} + +void OnBookEvent(const string &symbol) { + + Expert.OnBookEvent(); + return; + +} + + diff --git a/Experts/Nkanven/Framework EA/Grid/SnT Bot.ex5 b/Experts/Nkanven/Framework EA/Grid/SnT Bot.ex5 new file mode 100644 index 0000000000000000000000000000000000000000..40a16b73b917a3e9ef093df2f6b992c77f576c83 GIT binary patch literal 121130 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 literal 0 HcmV?d00001 diff --git a/Experts/Nkanven/Framework EA/Grid/SnT Bot.mq5 b/Experts/Nkanven/Framework EA/Grid/SnT Bot.mq5 new file mode 100644 index 0000000..d9d57a6 --- /dev/null +++ b/Experts/Nkanven/Framework EA/Grid/SnT Bot.mq5 @@ -0,0 +1,284 @@ +//+------------------------------------------------------------------+ +//| SnT Bot.mq5 | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.salixnigra.com" +#property version "1.0" + +#include + +// +// Input Section +// + +//This is where you should include the input parameters for your entry and exit signals +input string Comment_strategy="=========="; //Entry And Exit Settings +//Add in this section the parameters for the indicators used in your entry and exit + +//General input parameters +input string Comment_0="=========="; //Risk Management Settings +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 InpProfitPercent=1; +input double InpMinLotSize=0.01; //Min Lot Size +input double InpMaxLotSize=100; //Max Lot Size + + +input string Comment_1="=========="; //Trading Hours Settings +input bool InpUseTradingHours=false; //Activate Trading Hours +input string InpTradingHourStart="01"; //Trading Start Hour (Broker Server Hour) +input string InpTradingStartMin="30"; //Trading Start minute +input string InpTradingHourEnd="23"; //Trading End Hour (Broker Server Hour) +input string InpTradingEndMin="00"; //Trading End minute +input bool InpUseTradingSession=true; +input ENUM_TRADING_SESSION InpTradingSession = LONDON_SESSION; //Trading session + +input string Comment_2="=========="; //Trading Hours Settings +input int InpGridGap = 1000; + +input double InpVolume = 0.01; //Default order size +input string InpComment = __FILE__; //Default trade comment +input int InpMagicNumber = 20200701; //Magic Number +input int InpBrokerTimeZoneGMT = 2; //Broker timezone from GMT +input int InpSlippage = 2; //Slippage +input int not_used; + +int londonSession[] = {7, 17}; +int newyorkSession[] = {13, 23}; +int tokyoSession[] = {0, 6}; + +// +// Declare the expert +// +#define CExpert CExpertBase +CExpert *Expert; + +// +// Signals +// +CSignalGrid *EntrySignal; +CSignalGrid *ExitSignal; + +// +// TPSL - use child class names instead of CTPSLBase +// +GridTPSL *TPObject; +GridTPSL *SLObject; + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +int OnInit() + { + +// +// Instantiate the expert, use the child class name +// + Expert = new CExpert(); + +// +// Assign the default values to the expert +// + Expert.SetVolume(InpVolume); + Expert.SetTradeComment(InpComment); + Expert.SetMagic(InpMagicNumber); + Expert.SetDefaultLotSize(InpDefaultLotSize); + Expert.SetGridGap(InpGridGap); + Expert.SetGridNumber(10); + Expert.SetMaxLotSize(InpMaxLotSize); + Expert.SetMaxRiskPerTrade(InpMaxRiskPerTrade); + Expert.SetMinLotSize(InpMinLotSize); + Expert.SetRiskBase(InpRiskBase); + Expert.SetRiskDefaultSize(InpRiskDefaultSize); + Expert.SetUseTradingSession(InpTradingSession); + Expert.SetSlippage(InpSlippage); + Expert.SetProfitPercent(InpProfitPercent); + +// +// Set up the signals +// + //EntrySignal = new CSignalGrid(); + //EntrySignal.SetMaxRiskPerTrade(InpMaxRiskPerTrade); + //EntrySignal.setMmagic(InpMagicNumber); +//EntrySignal.AddIndicator(Indicator1, 0); + + //ExitSignal = new CSignalGrid(); + //ExitSignal.SetMaxRiskPerTrade(InpMaxRiskPerTrade); + //ExitSignal.setMmagic(InpMagicNumber); +//ExitSignal.AddIndicator(Indicator1, 0); + +// +// Add the signals to the expert +// + //Expert.AddEntrySignal(EntrySignal); + //Expert.AddExitSignal(ExitSignal); + +// +// If using fixed tp and sl set them here in points +// + Expert.SetTakeProfitValue(0); + Expert.SetStopLossValue(0); + +// +// Set up the Take Profit and Stop Loss objects +// Remember to create child class names, not base +// + TPObject = new GridTPSL(); // Create the object +//IndicatorTPSL1 = new CIndicatorBase(); // Create an indicator for the tp object +//TPObject.AddIndicator(IndicatorTPSL1, 0); // Add the indicator to tp +// Set any other properties needed + +// And for the SL object + SLObject = new GridTPSL(); +//IndicatorTPSL2 = new CIndicatorBase(); +//SLObject.AddIndicator(IndicatorTPSL2, 0); + + Expert.SetTakeProfitObj(TPObject); + Expert.SetStopLossObj(SLObject); + +// +// Finish expert initialisation and check result +// + int result = Expert.OnInit(); + + return(result); + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { + + EventKillTimer(); + + delete Expert; + delete ExitSignal; + delete EntrySignal; + delete TPObject; + delete SLObject; + + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTick() + { + + Expert.OnTick(); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTimer() + { + + Expert.OnTimer(); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTrade() + { + + Expert.OnTrade(); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTradeTransaction(const MqlTradeTransaction& trans, + const MqlTradeRequest& request, + const MqlTradeResult& result) + { + + Expert.OnTradeTransaction(trans, request, result); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +/*double OnTester() + { + + return(Expert.OnTester()); + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTesterInit() + { + + Expert.OnTesterInit(); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTesterPass() + { + + Expert.OnTesterPass(); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnTesterDeinit() + { + + Expert.OnTesterDeinit(); + return; + + } +*/ +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnChartEvent(const int id, + const long &lparam, + const double &dparam, + const string &sparam) + { + + Expert.OnChartEvent(id, lparam, dparam, sparam); + return; + + } + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void OnBookEvent(const string &symbol) + { + + Expert.OnBookEvent(); + return; + + } + +//+------------------------------------------------------------------+ diff --git a/Experts/Nkanven/GDeaLite.ex5 b/Experts/Nkanven/GDeaLite.ex5 new file mode 100644 index 0000000000000000000000000000000000000000..863557ea9bfc35185cdd3dd914ff3280deff8ca5 GIT binary patch literal 15468 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 Di+Q_F literal 0 HcmV?d00001 diff --git a/Experts/Nkanven/GDeaLite.mq5 b/Experts/Nkanven/GDeaLite.mq5 new file mode 100644 index 0000000..4cdf40f --- /dev/null +++ b/Experts/Nkanven/GDeaLite.mq5 @@ -0,0 +1,83 @@ +//+------------------------------------------------------------------+ +//| GDeaLite.mq5 | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.mql5.com" +#property version "1.00" + +#include // Description of variables +#include // Error library +#include // Prechecks +#include // +#include +#include // Scan for opened positions +#include //Check transaction history +#include //Manage trade dynamic open and close conditions +#include // Check buy and sell entries signals and execute them +#include // Lot size calculate +#include // Close opened positions +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- + +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +//--- + + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { +//--- + + } +//+------------------------------------------------------------------+ + +//Initialize variables +void InitializeVariables() + { + IsNewCandle=false; + IsTradedThisBar=false; + IsOperatingHours=false; + IsSpreadOK=false; + + LotSize=DefaultLotSize; + TickValue=0; + + TotalOpenBuy=0; + TotalOpenSell=0; + + SignalEntry=SIGNAL_ENTRY_NEUTRAL; + SignalExit=SIGNAL_EXIT_NEUTRAL; + Print("Variables intialized"); + } + +//Check and return if the spread is not too high +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); + Print("Spread ", SpreadCurr); + if(SpreadCurr<=MaxSpread) + { + IsSpreadOK=true; + } + else + { + IsSpreadOK=false; + } + } +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/Frameworks/GDea/CommonBase.mqh b/Include/Nkanven/Frameworks/GDea/CommonBase.mqh new file mode 100644 index 0000000..46edb6a --- /dev/null +++ b/Include/Nkanven/Frameworks/GDea/CommonBase.mqh @@ -0,0 +1,78 @@ +/* + CommonBase.mqh + For framework version 1.0 + + Copyright 2013-2020, Orchard Forex + https://www.orchardforex.com + +*/ + +#define _INIT_CHECK_FAIL if (mInitResult!=INIT_SUCCEEDED) return(mInitResult); +#define _INIT_ERROR(msg) return(InitError(msg, INIT_PARAMETERS_INCORRECT)); +#define _INIT_ASSERT(condition, msg) if (!condition) return(InitError(msg, INIT_FAILED)); + +class CCommonBase { + +private: + +protected: // Members + + int mDigits; + string mSymbol; + ENUM_TIMEFRAMES mTimeframe; + + string mInitMessage; + int mInitResult; + +protected: // Constructors + + // + // Constructors + // + CCommonBase() { Init(_Symbol, (ENUM_TIMEFRAMES)_Period); } + CCommonBase(string symbol) { Init(symbol, (ENUM_TIMEFRAMES)_Period); } + CCommonBase(int timeframe) { Init(_Symbol, (ENUM_TIMEFRAMES)timeframe); } + CCommonBase(ENUM_TIMEFRAMES timeframe) { Init(_Symbol, timeframe); } + CCommonBase(string symbol, int timeframe) { Init(symbol, (ENUM_TIMEFRAMES)timeframe); } + CCommonBase(string symbol, ENUM_TIMEFRAMES timeframe) { Init(symbol, timeframe); } + + // + // Destructors + // + ~CCommonBase() {}; + + int Init(string symbol, ENUM_TIMEFRAMES timeframe); + +protected: // Functions + + int InitError(string initMessage, int initResult) + { mInitMessage = initMessage; + mInitResult = initResult; + if (initMessage!="") Print(initMessage); + return(initResult); } + + double PointsToDouble(int points) { return(points*SymbolInfoDouble(mSymbol, SYMBOL_POINT)); } + +public: // Properties + + int InitResult() { return(mInitResult); } + string InitMessage() { return(mInitMessage); } + +public: // Functions + + bool TradeAllowed() { return(SymbolInfoInteger(mSymbol, SYMBOL_TRADE_MODE)!=SYMBOL_TRADE_MODE_DISABLED); } + +}; + +int CCommonBase::Init(string symbol, ENUM_TIMEFRAMES timeframe) { + + InitError("", INIT_SUCCEEDED); + + mSymbol = symbol; + mTimeframe = timeframe; + mDigits = (int)SymbolInfoInteger(symbol, SYMBOL_DIGITS); + + return(INIT_SUCCEEDED); + +} + diff --git a/Include/Nkanven/Frameworks/GDea/ExpertBase.mqh b/Include/Nkanven/Frameworks/GDea/ExpertBase.mqh new file mode 100644 index 0000000..e5afc1d --- /dev/null +++ b/Include/Nkanven/Frameworks/GDea/ExpertBase.mqh @@ -0,0 +1,380 @@ +/* + ExpertBase.mqh + + Copyright 2013-2020, Orchard Forex + https://www.orchardforex.com + +*/ + + +#include "CommonBase.mqh" +#include "SignalBase.mqh" +#include "TPSLBase.mqh" +#include "Trade/Trade.mqh" + +class CExpertBase : public CCommonBase { + +protected: + + int mMagicNumber; + string mTradeComment; + + double mVolume; + + datetime mLastBarTime; + datetime mBarTime; + + ////Changed + // Arrays to hold the signal objects + CSignalBase *mEntrySignals[]; + CSignalBase *mExitSignals[]; + ////CSignalBase *mEntrySignal; + ////CSignalBase *mExitSignal; + + double mTakeProfitValue; + double mStopLossValue; + CTPSLBase *mTakeProfitObj; + CTPSLBase *mStopLossObj; + + CTradeCustom Trade; + +private: + +protected: + + virtual bool LoopMain(bool newBar, bool firstTime); + +protected: + + int Init(int magicNumber, string tradeComment); + +public: + + // + // Constructors + // + CExpertBase() : CCommonBase() + { Init(0, ""); } + CExpertBase(string symbol, int timeframe, int magicNumber, string tradeComment) + : CCommonBase(symbol, timeframe) + { Init(magicNumber, tradeComment); } + CExpertBase(string symbol, ENUM_TIMEFRAMES timeframe, int magicNumber, string tradeComment) + : CCommonBase(symbol, timeframe) + { Init(magicNumber, tradeComment); } + CExpertBase(int magicNumber, string tradeComment) + : CCommonBase() + { Init(magicNumber, tradeComment); } + + // + // Destructors + // + ~CExpertBase(); + +public: // Default properties + + // + // Assign the default values to the expert + // + virtual void SetVolume(double volume) { mVolume = volume; } + + virtual void SetTakeProfitValue(int takeProfitPoints) + { mTakeProfitValue = PointsToDouble(takeProfitPoints); } + virtual void SetTakeProfitObj(CTPSLBase *takeProfitObj) + { mTakeProfitObj = takeProfitObj; } + + virtual void SetStopLossValue(int stopLossPoints) + { mStopLossValue = PointsToDouble(stopLossPoints); } + virtual void SetStopLossObj(CTPSLBase *stopLossObj) + { mStopLossObj = stopLossObj; } + + virtual void SetTradeComment(string comment) { mTradeComment = comment; } + virtual void SetMagic(int magicNumber) { mMagicNumber = magicNumber; + Trade.SetExpertMagicNumber(magicNumber); } + +public: // Setup + + ////Changed + virtual void AddEntrySignal(CSignalBase *signal) { AddSignal(signal, mEntrySignals); } + virtual void AddExitSignal(CSignalBase *signal) { AddSignal(signal, mExitSignals); } + virtual void AddSignal(CSignalBase *signal, CSignalBase* &signals[]); + ////virtual void AddEntrySignal(CSignalBase *signal) { mEntrySignal=signal; } + ////virtual void AddExitSignal(CSignalBase *signal) { mExitSignal=signal; } + +public: // Event handlers + + virtual int OnInit(); + virtual void OnTick(); + virtual void OnTimer() { return; } + virtual double OnTester() { return(0.0); } + virtual void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam) {}; + +#ifdef __MQL5__ + virtual void OnTrade() { return; } + virtual void OnTradeTransaction(const MqlTradeTransaction& trans, + const MqlTradeRequest& request, + const MqlTradeResult& result) + { return; } + virtual int OnTesterInit() { return(INIT_SUCCEEDED); } + virtual void OnTesterPass() { return; } + virtual void OnTesterDeinit() { return; } + virtual void OnBookEvent() { return; } +#endif + +public: // Functions + + virtual void GetMarketPrices(ENUM_ORDER_TYPE orderType, MqlTradeRequest &request); + ////New + virtual ENUM_OFX_SIGNAL_DIRECTION GetCurrentSignal(CSignalBase* &signals[], + ENUM_OFX_SIGNAL_TYPE signalType); + +}; + +CExpertBase::~CExpertBase() { + +} + +int CExpertBase::OnInit() { + + int i = 0; + for (i=ArraySize(mEntrySignals)-1; i>=0; i--) { + if (mEntrySignals[i].InitResult()!=INIT_SUCCEEDED) return(mEntrySignals[i].InitResult()); + } + for (i=ArraySize(mExitSignals)-1; i>=0; i--) { + if (mExitSignals[i].InitResult()!=INIT_SUCCEEDED) return(mExitSignals[i].InitResult()); + } + if (mTakeProfitObj!=NULL) { + if (mTakeProfitObj.InitResult()!=INIT_SUCCEEDED) return(mTakeProfitObj.InitResult()); + } + if (mStopLossObj!=NULL) { + if (mStopLossObj.InitResult()!=INIT_SUCCEEDED) return(mStopLossObj.InitResult()); + } + + return(INIT_SUCCEEDED); + +} + +int CExpertBase::Init(int magicNumber, string tradeComment) { + + if (mInitResult!=INIT_SUCCEEDED) return(mInitResult); + + mTradeComment = tradeComment; + SetMagic(magicNumber); + + mTakeProfitValue = 0.0; + mStopLossValue = 0.0; + + mLastBarTime = 0; + + ////New + ArrayResize(mEntrySignals, 0); // Just make sure these are initialised + ArrayResize(mExitSignals, 0); + + return(INIT_SUCCEEDED); + +} + +void CExpertBase::OnTick(void) { + + if (!TradeAllowed()) return; + + mBarTime = iTime(mSymbol, mTimeframe, 0); + + bool firstTime = (mLastBarTime==0); + bool newBar = (mBarTime!=mLastBarTime); + + if (LoopMain(newBar, firstTime)) { + mLastBarTime = mBarTime; + } + + return; + +} + +bool CExpertBase::LoopMain(bool newBar,bool firstTime) { + + // + // To start I will only trade on a new bar + // and not on the first bar after start + // + if (!newBar) return(true); + if (firstTime) return(true); + + // + // Update the signals + // + ////Changed + ENUM_OFX_SIGNAL_DIRECTION entrySignal = GetCurrentSignal(mEntrySignals, OFX_ENTRY_SIGNAL); + ENUM_OFX_SIGNAL_DIRECTION exitSignal = GetCurrentSignal(mExitSignals, OFX_EXIT_SIGNAL); + ////if (mEntrySignal!=NULL) mEntrySignal.UpdateSignal(); + ////if (mEntrySignal!=mExitSignal) { + //// if (mExitSignal!=NULL) mExitSignal.UpdateSignal(); + ////} + + // + // Should any trades be closed + // + ////Changed + if (exitSignal==OFX_SIGNAL_BOTH) { + Trade.PositionCloseByType(mSymbol, POSITION_TYPE_BUY); + Trade.PositionCloseByType(mSymbol, POSITION_TYPE_SELL); + } else + if (exitSignal==OFX_SIGNAL_BUY) { + Trade.PositionCloseByType(mSymbol, POSITION_TYPE_BUY); + } else + if (exitSignal==OFX_SIGNAL_SELL) { + Trade.PositionCloseByType(mSymbol, POSITION_TYPE_SELL); + } + ////if (mExitSignal!=NULL) { + //// if (mExitSignal.ExitSignal()==OFX_SIGNAL_BOTH) { + //// Trade.PositionCloseByType(mSymbol, POSITION_TYPE_BUY); + //// Trade.PositionCloseByType(mSymbol, POSITION_TYPE_SELL); + //// } else + //// if (mExitSignal.ExitSignal()==OFX_SIGNAL_BUY) { + //// Trade.PositionCloseByType(mSymbol, POSITION_TYPE_BUY); + //// } else + //// if (mExitSignal.ExitSignal()==OFX_SIGNAL_SELL) { + //// Trade.PositionCloseByType(mSymbol, POSITION_TYPE_SELL); + //// } + ////} + + // + // Should a trade be opened + // + MqlTradeRequest request = {}; // Just initialising + ////Changed + if (entrySignal==OFX_SIGNAL_BOTH) { + + GetMarketPrices(ORDER_TYPE_BUY, request); + Trade.Buy(mVolume, mSymbol, request.price, request.sl, request.tp); + + GetMarketPrices(ORDER_TYPE_SELL, request); + Trade.Sell(mVolume, mSymbol, request.price, request.sl, request.tp); + + } else + if (entrySignal==OFX_SIGNAL_BUY) { + + GetMarketPrices(ORDER_TYPE_BUY, request); + Trade.Buy(mVolume, mSymbol, request.price, request.sl, request.tp); + + } else + if (entrySignal==OFX_SIGNAL_SELL) { + + GetMarketPrices(ORDER_TYPE_SELL, request); + Trade.Sell(mVolume, mSymbol, request.price, request.sl, request.tp); + + } +//// if (mEntrySignal!=NULL) { +//// if (mEntrySignal.EntrySignal()==OFX_SIGNAL_BOTH) { +//// +//// GetMarketPrices(ORDER_TYPE_BUY, request); +//// Trade.Buy(mVolume, mSymbol, request.price, request.sl, request.tp); +//// +//// GetMarketPrices(ORDER_TYPE_SELL, request); +//// Trade.Sell(mVolume, mSymbol, request.price, request.sl, request.tp); +//// +//// } else +//// if (mEntrySignal.EntrySignal()==OFX_SIGNAL_BUY) { +//// +//// GetMarketPrices(ORDER_TYPE_BUY, request); +//// Trade.Buy(mVolume, mSymbol, request.price, request.sl, request.tp); +//// +//// } else +//// if (mEntrySignal.EntrySignal()==OFX_SIGNAL_SELL) { +//// +//// GetMarketPrices(ORDER_TYPE_SELL, request); +//// Trade.Sell(mVolume, mSymbol, request.price, request.sl, request.tp); +//// +//// } +//// } + + return(true); + +} + +void CExpertBase::GetMarketPrices(ENUM_ORDER_TYPE orderType, MqlTradeRequest &request) { + + double sl = (mStopLossObj==NULL) ? mStopLossValue : mStopLossObj.GetStopLoss(); + double tp = (mTakeProfitObj==NULL) ? mTakeProfitValue : mTakeProfitObj.GetTakeProfit(); + + if (orderType==ORDER_TYPE_BUY) { + if (request.price==0.0) request.price = SymbolInfoDouble(mSymbol, SYMBOL_ASK); + request.tp = (tp==0.0) ? 0.0 : NormalizeDouble(request.price+tp, mDigits); + request.sl = (sl==0.0) ? 0.0 : NormalizeDouble(request.price-sl, mDigits); + } + + if (orderType==ORDER_TYPE_SELL) { + if (request.price==0.0) request.price = SymbolInfoDouble(mSymbol, SYMBOL_BID); + request.tp = (tp==0.0) ? 0.0 : NormalizeDouble(request.price-tp, mDigits); + request.sl = (sl==0.0) ? 0.0 : NormalizeDouble(request.price+sl, mDigits); + } + + return; + +} + +////New +void CExpertBase::AddSignal(CSignalBase *signal, CSignalBase* &signals[]) { + + int index = ArraySize(signals); + ArrayResize(signals, index+1); + signals[index] = signal; + +} + +////New +ENUM_OFX_SIGNAL_DIRECTION CExpertBase::GetCurrentSignal(CSignalBase* &signals[], + ENUM_OFX_SIGNAL_TYPE signalType) { + + ENUM_OFX_SIGNAL_DIRECTION result = OFX_SIGNAL_NONE; + ENUM_OFX_SIGNAL_DIRECTION r2 = OFX_SIGNAL_NONE; // Just working value + int index = ArraySize(signals); + + if (index<=0) { + + return(result); + + } else { + + signals[0].UpdateSignal(); + result = signals[0].GetSignal(signalType); + + // I have chosen to update all signals in case there is some + // behavour that needs it. The penalty is some performance + // If performance is an issue just add an exit inside the loop + // as the commented line + for (int i = 1; i0); +} + +bool CTradeCustom::Sell(const double volume,const string symbol=NULL,double price=0.0,const double sl=0.0,const double tp=0.0,const string comment="") { + if (price==0.0) price = SellPrice(symbol); + int ticket = OrderSend(symbol, ORDER_TYPE_SELL, volume, price, 0, sl, tp, comment, mMagic); + return(ticket>0); +} + +bool CTradeCustom::PositionCloseByType(const string symbol, ENUM_POSITION_TYPE positionType, const int deviation=ULONG_MAX) { + + int slippage = (deviation==ULONG_MAX) ? 0 : deviation; + + bool result = true; + int cnt = OrdersTotal(); + for (int i = cnt-1; i>=0; i--) { + if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { + if (OrderSymbol()==symbol && OrderMagicNumber()==mMagic && OrderType()==positionType) { + result &= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), slippage); + } + } + } + + return(result); + +} + +////New +void CTradeCustom::PositionCountByType(const string symbol, int &count[]) { + + ArrayResize(count, 6); + ArrayInitialize(count, 0); + int cnt = OrdersTotal(); + for (int i = cnt-1; i>=0; i--) { + if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { + if (OrderSymbol()==symbol && OrderMagicNumber()==mMagic) { + count[(int)OrderType()]++; + } + } + } + + return; + +} diff --git a/Include/Nkanven/Frameworks/GDea/Trade/Trade_mql5.mqh b/Include/Nkanven/Frameworks/GDea/Trade/Trade_mql5.mqh new file mode 100644 index 0000000..3bae1c9 --- /dev/null +++ b/Include/Nkanven/Frameworks/GDea/Trade/Trade_mql5.mqh @@ -0,0 +1,66 @@ +/* + Trade.mqh + (For MQL5) + + Copyright 2013-2020, Orchard Forex + https://www.orchardforex.com + +*/ + +#include + +class CTradeCustom : public CTrade { + +private: + +protected: // member variables + +public: // constructors + +public: + + bool PositionCloseByType(const string symbol, ENUM_POSITION_TYPE positionType,const ulong deviation=ULONG_MAX); + ////New + void PositionCountByType(const string symbol, int &count[]); + +}; + +bool CTradeCustom::PositionCloseByType(const string symbol, ENUM_POSITION_TYPE positionType, const ulong deviation=ULONG_MAX) { + + bool result = true; + int cnt = PositionsTotal(); + for (int i = cnt-1; i>=0; i--) { + ulong ticket = PositionGetTicket(i); + if (PositionSelectByTicket(ticket)) { + if (PositionGetString(POSITION_SYMBOL)==symbol && PositionGetInteger(POSITION_TYPE)==positionType && PositionGetInteger(POSITION_MAGIC)==m_magic) { + result &= PositionClose(ticket, deviation); + } + } else { + m_result.retcode=TRADE_RETCODE_REJECT; + result = false; + } + } + + return(result); + +} + +////New +void CTradeCustom::PositionCountByType(const string symbol, int &count[]) { + + ArrayResize(count, 6); + ArrayInitialize(count, 0); + + int cnt = PositionsTotal(); + for (int i = cnt-1; i>=0; i--) { + ulong ticket = PositionGetTicket(i); + if (PositionSelectByTicket(ticket)) { + if (PositionGetString(POSITION_SYMBOL)==symbol && PositionGetInteger(POSITION_MAGIC)==m_magic) { + count[(int)PositionGetInteger(POSITION_TYPE)]++; + } + } + } + + return; + +} diff --git a/Include/Nkanven/Frameworks/GDea/Updates.txt b/Include/Nkanven/Frameworks/GDea/Updates.txt new file mode 100644 index 0000000..281bf10 --- /dev/null +++ b/Include/Nkanven/Frameworks/GDea/Updates.txt @@ -0,0 +1,7 @@ +Version 2.03 + +Added macros to CommonBase to standardise init checking + +Moved base classes up one level and removed unnecessary folders + +Updated framework number \ No newline at end of file diff --git a/Include/Nkanven/Frameworks/GDeaFramework.mqh b/Include/Nkanven/Frameworks/GDeaFramework.mqh new file mode 100644 index 0000000..d2d0187 --- /dev/null +++ b/Include/Nkanven/Frameworks/GDeaFramework.mqh @@ -0,0 +1,12 @@ +//+------------------------------------------------------------------+ +//| GDeaFramework.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.mql5.com" + + +#ifndef _FRAMEWORK_VERSION_ + #include "GDea/Framework.mqh" +#endif diff --git a/Include/Nkanven/GDea/CheckHistory.mqh b/Include/Nkanven/GDea/CheckHistory.mqh new file mode 100644 index 0000000..8c5f1b0 --- /dev/null +++ b/Include/Nkanven/GDea/CheckHistory.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| CheckHistory.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/ClosePositions.mqh b/Include/Nkanven/GDea/ClosePositions.mqh new file mode 100644 index 0000000..e2357b9 --- /dev/null +++ b/Include/Nkanven/GDea/ClosePositions.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| ClosePositions.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/EntriesManager.mqh b/Include/Nkanven/GDea/EntriesManager.mqh new file mode 100644 index 0000000..2b66cbe --- /dev/null +++ b/Include/Nkanven/GDea/EntriesManager.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| EntriesManagement.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/LotSizeCal.mqh b/Include/Nkanven/GDea/LotSizeCal.mqh new file mode 100644 index 0000000..f3042e7 --- /dev/null +++ b/Include/Nkanven/GDea/LotSizeCal.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| LotSizeCal.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/Parameters.mqh b/Include/Nkanven/GDea/Parameters.mqh new file mode 100644 index 0000000..d2b8ef1 --- /dev/null +++ b/Include/Nkanven/GDea/Parameters.mqh @@ -0,0 +1,150 @@ +//+------------------------------------------------------------------+ +//| Parameters.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.mql5.com" + +//Enumerative for the entry signal value +enum ENUM_SIGNAL_ENTRY + { + SIGNAL_ENTRY_NEUTRAL=0, //SIGNAL ENTRY NEUTRAL + SIGNAL_ENTRY_BUY=1, //SIGNAL ENTRY BUY + SIGNAL_ENTRY_SELL=-1, //SIGNAL ENTRY SELL + }; + +//Enumerative for the exit signal value +enum ENUM_SIGNAL_EXIT + { + SIGNAL_EXIT_NEUTRAL=0, //SIGNAL EXIT NEUTRAL + SIGNAL_EXIT_BUY=1, //SIGNAL EXIT BUY + SIGNAL_EXIT_SELL=-1, //SIGNAL EXIT SELL + SIGNAL_EXIT_ALL=2, //SIGNAL EXIT ALL + }; + +//Enumerative for the allowed trading direction +enum ENUM_TRADING_ALLOW_DIRECTION + { + TRADING_ALLOW_BOTH=0, //ALLOW BOTH BUY AND SELL + TRADING_ALLOW_BUY=1, //ALLOW BUY ONLY + TRADING_ALLOW_SELL=-1, //ALLOW SELL ONLY + }; + +//Enumerative for the base used for risk calculation +enum ENUM_RISK_BASE + { + RISK_BASE_EQUITY=1, //EQUITY + RISK_BASE_BALANCE=2, //BALANCE + RISK_BASE_FREEMARGIN=3, //FREE MARGIN + }; + +//Enumerative for the default risk size +enum ENUM_RISK_DEFAULT_SIZE + { + RISK_DEFAULT_FIXED=1, //FIXED SIZE + RISK_DEFAULT_AUTO=2, //AUTOMATIC SIZE BASED ON RISK + }; + +//Enumerative for the Stop Loss mode +enum ENUM_MODE_SL + { + SL_FIXED=0, //FIXED STOP LOSS + SL_AUTO=1, //AUTOMATIC STOP LOSS + }; + +//Enumerative for the Take Profit Mode +enum ENUM_MODE_TP + { + TP_FIXED=0, //FIXED TAKE PROFIT + TP_AUTO=1, //AUTOMATIC TAKE PROFIT + }; + +//Enumerative for the stop loss calculation +enum ENUM_MODE_SL_BY + { + SL_BY_POINTS=0, //STOP LOSS PASSED IN POINTS + SL_BY_PRICE=1, //STOP LOSS PASSED BY PRICE + }; + +//Enumerative for candle type +enum ENUM_CANDLE_TYPE + { + NEUTRAL_CANDLE=0, + BEARISH_CANDLE=1, + BULLISH_CANDLE=2, + }; + +//Enumerative for price momentum +enum ENUM_PRICE_MOMENTUM + { + UP=2, + DOWN=1, + NEUTRAL=0, + }; + +struct LastTransaction + { + string time; + int type; + double profit; + } lt; + +// +// Input Section +// +// Fast moving average +input int InpFastPeriods = 10; // Fast periods +input ENUM_MA_METHOD InpFastMethod = MODE_SMA; // Fast method +input ENUM_APPLIED_PRICE InpFastAppliedPrice = PRICE_CLOSE; // Fast price + +// Slow moving average +input int InpSlowPeriods = 20; // Slow periods +input ENUM_MA_METHOD InpSlowMethod = MODE_SMA; // Slow method +input ENUM_APPLIED_PRICE InpSlowAppliedPrice = PRICE_CLOSE; // Slow price + +// 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 + +// Trading time +input int InStartHour = 12; // Trading starting hour +input int InStartMin = 30; // Trading starting minute +input int InEndHour = 12; // Trading starting hour +input int InEndMin = 30; // Trading starting minute + +// +// Some standard inputs, +// remember to change the default magic for each EA +// +input double InpVolume = 0.01; // Default order size +input string InpComment = __FILE__; // Default trade comment +input int InpMagicNumber = 198901; // Magic Number + + +bool IsNewCandle=false; +bool IsTradedThisBar=false; +bool IsOperatingHours=false; +bool IsSpreadOK=false; + +double LotSize=DefaultLotSize; +int TickValue=0; + +int TotalOpenBuy=0; +int TotalOpenSell=0; +string mSymbol = Symbol(); + +MqlTick last_tick; + +ENUM_SIGNAL_ENTRY SignalEntry=SIGNAL_ENTRY_NEUTRAL; //Entry signal variable +ENUM_SIGNAL_EXIT SignalExit=SIGNAL_EXIT_NEUTRAL; \ No newline at end of file diff --git a/Include/Nkanven/GDea/Prechecks.mqh b/Include/Nkanven/GDea/Prechecks.mqh new file mode 100644 index 0000000..aedb074 --- /dev/null +++ b/Include/Nkanven/GDea/Prechecks.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| Prechecks.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/ScanPositions.mqh b/Include/Nkanven/GDea/ScanPositions.mqh new file mode 100644 index 0000000..061ea76 --- /dev/null +++ b/Include/Nkanven/GDea/ScanPositions.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| ScanPositions.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/TradeManager.mqh b/Include/Nkanven/GDea/TradeManager.mqh new file mode 100644 index 0000000..3bf43bd --- /dev/null +++ b/Include/Nkanven/GDea/TradeManager.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| TradeManager.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/GDea/TradingHour.mqh b/Include/Nkanven/GDea/TradingHour.mqh new file mode 100644 index 0000000..db311c7 --- /dev/null +++ b/Include/Nkanven/GDea/TradingHour.mqh @@ -0,0 +1,27 @@ +//+------------------------------------------------------------------+ +//| TradingHour.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#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 +//+------------------------------------------------------------------+