Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| a73e2c0713 | |||
| 3175f594f1 | |||
| 5327473eaf | |||
| 8035947476 |
@@ -26,13 +26,18 @@ input int InpRSIPeriod = 14; // RSI period
|
|||||||
// Example shown below
|
// Example shown below
|
||||||
//
|
//
|
||||||
|
|
||||||
RangeBars rangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
|
RangeBars *rangeBars = NULL;
|
||||||
|
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
//| Expert initialization function |
|
//| Expert initialization function |
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
int OnInit()
|
int OnInit()
|
||||||
{
|
{
|
||||||
|
if(rangeBars == NULL)
|
||||||
|
{
|
||||||
|
rangeBars = new RangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
|
||||||
|
}
|
||||||
|
|
||||||
rangeBars.Init();
|
rangeBars.Init();
|
||||||
if(rangeBars.GetHandle() == INVALID_HANDLE)
|
if(rangeBars.GetHandle() == INVALID_HANDLE)
|
||||||
return(INIT_FAILED);
|
return(INIT_FAILED);
|
||||||
@@ -48,7 +53,12 @@ int OnInit()
|
|||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
void OnDeinit(const int reason)
|
void OnDeinit(const int reason)
|
||||||
{
|
{
|
||||||
rangeBars.Deinit();
|
if(rangeBars != NULL)
|
||||||
|
{
|
||||||
|
rangeBars.Deinit();
|
||||||
|
delete rangeBars;
|
||||||
|
rangeBars = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// your custom code goes here...
|
// your custom code goes here...
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
// Helper functions for placing market orders.
|
// Helper functions for placing market orders.
|
||||||
//
|
//
|
||||||
|
|
||||||
|
#define DEVELOPER_VERSION
|
||||||
#include <AZ-INVEST/SDK/TradeFunctions.mqh>
|
#include <AZ-INVEST/SDK/TradeFunctions.mqh>
|
||||||
|
|
||||||
//
|
//
|
||||||
@@ -52,14 +53,19 @@ ulong currentTicket;
|
|||||||
// Example shown below
|
// Example shown below
|
||||||
//
|
//
|
||||||
|
|
||||||
RangeBars rangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
|
RangeBars *rangeBars = NULL;
|
||||||
CMarketOrder * marketOrder;
|
CMarketOrder *marketOrder = NULL;
|
||||||
|
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
//| Expert initialization function |
|
//| Expert initialization function |
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
int OnInit()
|
int OnInit()
|
||||||
{
|
{
|
||||||
|
if(rangeBars == NULL)
|
||||||
|
{
|
||||||
|
rangeBars = new RangeBars(MQLInfoInteger((int)MQL5_TESTING) ? false : true);
|
||||||
|
}
|
||||||
|
|
||||||
rangeBars.Init();
|
rangeBars.Init();
|
||||||
if(rangeBars.GetHandle() == INVALID_HANDLE)
|
if(rangeBars.GetHandle() == INVALID_HANDLE)
|
||||||
return(INIT_FAILED);
|
return(INIT_FAILED);
|
||||||
@@ -79,8 +85,12 @@ int OnInit()
|
|||||||
params.busyTimeout_ms = InpBusyTimeout_ms;
|
params.busyTimeout_ms = InpBusyTimeout_ms;
|
||||||
params.requoteTimeout_ms = InpRequoteTimeout_ms;
|
params.requoteTimeout_ms = InpRequoteTimeout_ms;
|
||||||
}
|
}
|
||||||
marketOrder = new CMarketOrder(params);
|
|
||||||
|
if(marketOrder == NULL)
|
||||||
|
{
|
||||||
|
marketOrder = new CMarketOrder(params);
|
||||||
|
}
|
||||||
|
|
||||||
return(INIT_SUCCEEDED);
|
return(INIT_SUCCEEDED);
|
||||||
}
|
}
|
||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
@@ -88,7 +98,16 @@ int OnInit()
|
|||||||
//+------------------------------------------------------------------+
|
//+------------------------------------------------------------------+
|
||||||
void OnDeinit(const int reason)
|
void OnDeinit(const int reason)
|
||||||
{
|
{
|
||||||
rangeBars.Deinit();
|
//
|
||||||
|
// delete RanegBars class
|
||||||
|
//
|
||||||
|
|
||||||
|
if(rangeBars != NULL)
|
||||||
|
{
|
||||||
|
rangeBars.Deinit();
|
||||||
|
delete rangeBars;
|
||||||
|
rangeBars = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// delete MarketOrder class
|
// delete MarketOrder class
|
||||||
@@ -97,6 +116,7 @@ void OnDeinit(const int reason)
|
|||||||
if(marketOrder != NULL)
|
if(marketOrder != NULL)
|
||||||
{
|
{
|
||||||
delete marketOrder;
|
delete marketOrder;
|
||||||
|
marketOrder = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -10,7 +10,8 @@ double NormalizeLots(string symbol, double InputLots)
|
|||||||
{
|
{
|
||||||
double lotsMin = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
|
double lotsMin = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
|
||||||
double lotsMax = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
|
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)
|
if(InputLots < lotsMin)
|
||||||
InputLots = lotsMin;
|
InputLots = lotsMin;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
#else // user defined settings
|
#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
|
input ENUM_BOOL atrEnabled = false; // Enable ATR based bar size calculation
|
||||||
ENUM_TIMEFRAMES atrTimeFrame = PERIOD_D1; // Use ATR period
|
ENUM_TIMEFRAMES atrTimeFrame = PERIOD_D1; // Use ATR period
|
||||||
input int atrPeriod = 14; // ATR period
|
input int atrPeriod = 14; // ATR period
|
||||||
|
|||||||
@@ -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
|
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
|
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 user’s sole discretion and risk.
|
||||||
|
|||||||
Reference in New Issue
Block a user