Compare commits

...

4 Commits

Author SHA1 Message Date
Artur a73e2c0713 Updated for compatibility with ver 3.11 2020-09-29 11:26:32 +02:00
9nix6 3175f594f1 Update README.md 2020-05-21 20:48:41 +02:00
Artur 5327473eaf Updated for RangeBars ver. 3.04 2020-03-17 23:34:45 +01:00
unknown 8035947476 Updated for RangeBars ver. 3.03 2020-03-11 17:04:08 +01:00
9 changed files with 45 additions and 9 deletions
+12 -2
View File
@@ -26,13 +26,18 @@ input int InpRSIPeriod = 14; // RSI period
// Example shown below
//
RangeBars rangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
RangeBars *rangeBars = NULL;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(rangeBars == NULL)
{
rangeBars = new RangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
}
rangeBars.Init();
if(rangeBars.GetHandle() == INVALID_HANDLE)
return(INIT_FAILED);
@@ -48,7 +53,12 @@ int OnInit()
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
rangeBars.Deinit();
if(rangeBars != NULL)
{
rangeBars.Deinit();
delete rangeBars;
rangeBars = NULL;
}
//
// your custom code goes here...
+25 -5
View File
@@ -8,6 +8,7 @@
// Helper functions for placing market orders.
//
#define DEVELOPER_VERSION
#include <AZ-INVEST/SDK/TradeFunctions.mqh>
//
@@ -52,14 +53,19 @@ ulong currentTicket;
// Example shown below
//
RangeBars rangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
CMarketOrder * marketOrder;
RangeBars *rangeBars = NULL;
CMarketOrder *marketOrder = NULL;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
if(rangeBars == NULL)
{
rangeBars = new RangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
}
rangeBars.Init();
if(rangeBars.GetHandle() == INVALID_HANDLE)
return(INIT_FAILED);
@@ -79,8 +85,12 @@ int OnInit()
params.busyTimeout_ms = InpBusyTimeout_ms;
params.requoteTimeout_ms = InpRequoteTimeout_ms;
}
marketOrder = new CMarketOrder(params);
if(marketOrder == NULL)
{
marketOrder = new CMarketOrder(params);
}
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
@@ -88,7 +98,16 @@ int OnInit()
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
rangeBars.Deinit();
//
// delete RanegBars class
//
if(rangeBars != NULL)
{
rangeBars.Deinit();
delete rangeBars;
rangeBars = NULL;
}
//
// delete MarketOrder class
@@ -97,6 +116,7 @@ void OnDeinit(const int reason)
if(marketOrder != NULL)
{
delete marketOrder;
marketOrder = NULL;
}
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+2 -1
View File
@@ -10,7 +10,8 @@ double NormalizeLots(string symbol, double InputLots)
{
double lotsMin = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
double lotsMax = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
int lotsDigits = (int) - MathLog10(SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP));
// int lotsDigits = (int) - MathLog10(SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP));
int lotsDigits = (int)MathAbs(MathLog10(SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP)));
if(InputLots < lotsMin)
InputLots = lotsMin;
@@ -23,7 +23,7 @@
#else // user defined settings
input int barSizeInTicks = 20; // Range bar size (in ticks)
input int barSizeInTicks = 100; // Range bar size (in ticks)
input ENUM_BOOL atrEnabled = false; // Enable ATR based bar size calculation
ENUM_TIMEFRAMES atrTimeFrame = PERIOD_D1; // Use ATR period
input int atrPeriod = 14; // ATR period
+5
View File
@@ -22,3 +22,8 @@ All folders (Experts, Include & Indicators) & sub-folders should be placed in th
The RangeBars indicator for MT5 can be downloaded from https://www.mql5.com/en/market/product/16762
A version for MT4 is available from https://www.az-invest.eu/rangebars-plug-in-for-metatrader4
## Disclaimer:
All of the EAs and indicators presented in this repository are solely for educational and informational purposes and should not be regarded as advice or an invitation to trade.
Application of the techniques, ideas, and suggestions presented in the videos and files of this repository is done at the users sole discretion and risk.