From 4f3c70c930e656a64799036dfa313fb653c8642b Mon Sep 17 00:00:00 2001 From: Nkondog Anselme Date: Thu, 31 Mar 2022 23:30:44 +0100 Subject: [PATCH] Initial commit --- Experts/Nkanven/HighTension.ex5 | Bin 0 -> 19624 bytes Experts/Nkanven/HighTension.mq5 | 86 ++++++++++++ Include/Nkanven/HighTension/CheckHistory.mqh | 27 ++++ .../Nkanven/HighTension/CloseTransactions.mqh | 74 +++++++++++ .../Nkanven/HighTension/EntriesManager.mqh | Bin 0 -> 12614 bytes Include/Nkanven/HighTension/LotSizeCal.mqh | 62 +++++++++ Include/Nkanven/HighTension/Parameters.mqh | 123 ++++++++++++++++++ Include/Nkanven/HighTension/Prechecks.mqh | 79 +++++++++++ Include/Nkanven/HighTension/ScanPositions.mqh | 45 +++++++ Include/Nkanven/HighTension/TradeManager.mqh | 0 10 files changed, 496 insertions(+) create mode 100644 Experts/Nkanven/HighTension.ex5 create mode 100644 Experts/Nkanven/HighTension.mq5 create mode 100644 Include/Nkanven/HighTension/CheckHistory.mqh create mode 100644 Include/Nkanven/HighTension/CloseTransactions.mqh create mode 100644 Include/Nkanven/HighTension/EntriesManager.mqh create mode 100644 Include/Nkanven/HighTension/LotSizeCal.mqh create mode 100644 Include/Nkanven/HighTension/Parameters.mqh create mode 100644 Include/Nkanven/HighTension/Prechecks.mqh create mode 100644 Include/Nkanven/HighTension/ScanPositions.mqh create mode 100644 Include/Nkanven/HighTension/TradeManager.mqh diff --git a/Experts/Nkanven/HighTension.ex5 b/Experts/Nkanven/HighTension.ex5 new file mode 100644 index 0000000000000000000000000000000000000000..a02268c4742e33e299b06d41f3e0a3d93e29f9bb GIT binary patch literal 19624 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 Q@J{u2YllAq$|n%C71coQEdT%j literal 0 HcmV?d00001 diff --git a/Experts/Nkanven/HighTension.mq5 b/Experts/Nkanven/HighTension.mq5 new file mode 100644 index 0000000..816dd0a --- /dev/null +++ b/Experts/Nkanven/HighTension.mq5 @@ -0,0 +1,86 @@ +//+------------------------------------------------------------------+ +//| HighTension.mq5 | +//| Copyright 2022, Nkondog Anselme Venceslas. | +//| https://www.linkedin/in/nkondog.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2022, Nkondog Anselme Venceslas." +#property link "https://www.linkedin/in/nkondog.com" +#property version "1.00" + +#include +#include //EA paramters +#include //Trading conditions checks +#include //Trading conditions checks +#include //Lot size calculator +#include //Lot size calculator +#include //Emergency close of transaction + +int handle; +const int indexMA = 0; +const int indexColor = 1; + +//+------------------------------------------------------------------+ +//| Expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() + { +//--- + handle = iCustom(gSymbol, PERIOD_CURRENT, "MA-Slope", InpPeriods, InpMethod, InpAppliedPrice); + + if(handle == INVALID_HANDLE) + { + PrintFormat("Error %i ", GetLastError()); + return(INIT_FAILED); + } +//--- + return(INIT_SUCCEEDED); + } +//+------------------------------------------------------------------+ +//| Expert deinitialization function | +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) + { +//--- + IndicatorRelease(handle); + } +//+------------------------------------------------------------------+ +//| Expert tick function | +//+------------------------------------------------------------------+ +void OnTick() + { +//--- + if(!newBar()) + return; + +//int maSlope = iCustom(Symbol(), PERIOD_CURRENT, "MA-Slope", 1000, MODE_SMA, PRICE_CLOSE); + + int cnt = CopyBuffer(handle, indexMA, 0, 3, bufferMA); + if(cnt<3) + return; + cnt = CopyBuffer(handle, indexColor, 0, 3, bufferColor); + + currentMA = bufferMA[1]; + currentColor = bufferColor[1]; + priorMA = bufferMA[0]; + priorColor = bufferColor[0]; + + Print("currentMA ", currentMA, " currentColor ", currentColor, " priorMA ", priorMA, " priorColor"); + } +//+------------------------------------------------------------------+ + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +bool newBar() + { + + static datetime prevTime = 0; + datetime currentTime = iTime(gSymbol, PERIOD_CURRENT, 0); + if(currentTime != prevTime) + { + prevTime = currentTime; + return(true); + } + return(false); + } +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/HighTension/CheckHistory.mqh b/Include/Nkanven/HighTension/CheckHistory.mqh new file mode 100644 index 0000000..8c5f1b0 --- /dev/null +++ b/Include/Nkanven/HighTension/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/HighTension/CloseTransactions.mqh b/Include/Nkanven/HighTension/CloseTransactions.mqh new file mode 100644 index 0000000..ab1575d --- /dev/null +++ b/Include/Nkanven/HighTension/CloseTransactions.mqh @@ -0,0 +1,74 @@ +//+------------------------------------------------------------------+ +//| CloseTransactions.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.mql5.com" + +CTrade trade; + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void CloseTransactions() + { + bool result = true; + int cts = PositionsTotal(); + ulong theTicket; + double positionProfit = 0.0; + + if(cts > 0) + { + for(int i = cts-1; i>=0; i--) + { + ulong ticket = PositionGetTicket(i); + if(PositionSelectByTicket(ticket)) + { + if(PositionGetInteger(POSITION_MAGIC)==InpMagicNumber) + { + if(positionProfit > PositionGetDouble(POSITION_PROFIT)) + { + positionProfit = PositionGetDouble(POSITION_PROFIT); + theTicket = ticket; + } + } + } + else + { + Print("Error (", GetLastError(), ") while selecting position by ticket"); + } + } + if(gEmergencyClose) + { + if(!trade.PositionClose(theTicket)) + Print("Error (", GetLastError(), ") while deleting all buy positions"); + } + } + } +//+------------------------------------------------------------------+ + +//+------------------------------------------------------------------+ +//| | +//+------------------------------------------------------------------+ +void drawdownWatcher() + { + double amountDiff, equity, balance, percentDiff; + balance=AccountInfoDouble(ACCOUNT_BALANCE); + equity=AccountInfoDouble(ACCOUNT_EQUITY); + gEmergencyClose = false; + + if(equity < balance) + { + amountDiff = balance - equity; + percentDiff = (amountDiff*100)/balance; + + Print("amountDiff ", amountDiff, " percentDiff ", percentDiff, " InpMaxDrawdown ", InpMaxDrawdown); + + if(InpMaxDrawdown < percentDiff) + { + gEmergencyClose = true; + } + } + } +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/HighTension/EntriesManager.mqh b/Include/Nkanven/HighTension/EntriesManager.mqh new file mode 100644 index 0000000000000000000000000000000000000000..c2b6b38a7ae9176c44cd7a6c034f3e307150813a GIT binary patch literal 12614 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 AqW}N^ literal 0 HcmV?d00001 diff --git a/Include/Nkanven/HighTension/LotSizeCal.mqh b/Include/Nkanven/HighTension/LotSizeCal.mqh new file mode 100644 index 0000000..7bf44fc --- /dev/null +++ b/Include/Nkanven/HighTension/LotSizeCal.mqh @@ -0,0 +1,62 @@ +//+------------------------------------------------------------------+ +//| LotSizeCal.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.mql5.com" + + +//Lot Size Calculator +void LotSizeCalculate(double SL=0) + { +//If the position size is dynamic + if(InpRiskDefaultSize==RISK_DEFAULT_AUTO) + { + //If the stop loss is not zero then calculate the lot size + if(SL!=0) + { + double RiskBaseAmount=0; + Print("Compute lot size"); + + //TickValue is the value of the individual price increment for 1 lot of the instrument, expressed in the account currenty + double TickValue=SymbolInfoDouble(gSymbol,SYMBOL_TRADE_TICK_VALUE); + //Define the base for the risk calculation depending on the parameter chosen + if(InpRiskBase==RISK_BASE_BALANCE) + RiskBaseAmount=AccountInfoDouble(ACCOUNT_BALANCE); + if(InpRiskBase==RISK_BASE_EQUITY) + RiskBaseAmount=AccountInfoDouble(ACCOUNT_EQUITY); + if(InpRiskBase==RISK_BASE_FREEMARGIN) + RiskBaseAmount=AccountInfoDouble(ACCOUNT_FREEMARGIN); + + //Calculate the Position Size + gLotSize=((RiskBaseAmount*InpMaxRiskPerTrade/100)/(SL*TickValue)); + + Print("(RiskBaseAmount ", RiskBaseAmount, " InpMaxRiskPerTrade ", InpMaxRiskPerTrade, " SL ", SL, " TickValue ", TickValue); + } + + //If the stop loss is zero then the lot size is the default one + if(SL==0) + { + gLotSize=InpDefaultLotSize; + } + } +//Normalize the Lot Size to satisfy the allowed lot increment and minimum and maximum position size + gLotSize=MathFloor(gLotSize/SymbolInfoDouble(gSymbol,SYMBOL_VOLUME_STEP))*SymbolInfoDouble(gSymbol,SYMBOL_VOLUME_STEP); + + Print("LotSize ", gLotSize); +//Limit the lot size in case it is greater than the maximum allowed by the broker + if(gLotSize>SymbolInfoDouble(gSymbol,SYMBOL_VOLUME_MAX)) + gLotSize=SymbolInfoDouble(gSymbol,SYMBOL_VOLUME_MAX); + Print("Lot ", gLotSize, " Max lot ", SymbolInfoDouble(gSymbol,SYMBOL_VOLUME_MAX)); + + Print("LotSize2 ", gLotSize); +//If the lot size is too small then set it to 0 and don't trade + if(gLotSizeInpMaxStopLoss) + { + 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; + } +//Spread is acceptable + long SpreadCurr=(int)Spread; + Print("Spread ", Spread); + if(SpreadCurr>InpMaxSpread) + { + gIsPreChecksOk=false; + Print("Spread is higher than Max acceptable spread"); + return; + } + } +//+------------------------------------------------------------------+ diff --git a/Include/Nkanven/HighTension/ScanPositions.mqh b/Include/Nkanven/HighTension/ScanPositions.mqh new file mode 100644 index 0000000..02076cf --- /dev/null +++ b/Include/Nkanven/HighTension/ScanPositions.mqh @@ -0,0 +1,45 @@ +//+------------------------------------------------------------------+ +//| ScanPositions.mqh | +//| Copyright 2021, Nkondog Anselme Venceslas | +//| https://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "Copyright 2021, Nkondog Anselme Venceslas" +#property link "https://www.mql5.com" + +//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 +void ScanPositions() + { + +//Scan all the orders, retrieving some of the details + gTotalPositions = PositionsTotal(); + gTotalBuyPositions = 0; + gTotalSellPositions = 0; + + for(int i=0; i