diff --git a/Experts/2MA_Cross.ex5 b/Experts/2MA_Cross.ex5 index 86efe91..35dce8e 100644 Binary files a/Experts/2MA_Cross.ex5 and b/Experts/2MA_Cross.ex5 differ diff --git a/Experts/PriceMA_Cross.ex5 b/Experts/PriceMA_Cross.ex5 index 5e697f1..e04f6ef 100644 Binary files a/Experts/PriceMA_Cross.ex5 and b/Experts/PriceMA_Cross.ex5 differ diff --git a/Experts/RangeBars_ExampleEA.ex5 b/Experts/RangeBars_ExampleEA.ex5 index bfffdff..18ac4a1 100644 Binary files a/Experts/RangeBars_ExampleEA.ex5 and b/Experts/RangeBars_ExampleEA.ex5 differ diff --git a/Experts/RangeBars_ExampleEA2.ex5 b/Experts/RangeBars_ExampleEA2.ex5 index d247d9d..3985d51 100644 Binary files a/Experts/RangeBars_ExampleEA2.ex5 and b/Experts/RangeBars_ExampleEA2.ex5 differ diff --git a/Include/AZ-INVEST/SDK/CommonSettings.mqh b/Include/AZ-INVEST/SDK/CommonSettings.mqh index a825a37..6cc6ccb 100644 Binary files a/Include/AZ-INVEST/SDK/CommonSettings.mqh and b/Include/AZ-INVEST/SDK/CommonSettings.mqh differ diff --git a/Include/AZ-INVEST/SDK/CustomChartInputs.mqh b/Include/AZ-INVEST/SDK/CustomChartInputs.mqh index 98a7714..eddf9b8 100644 Binary files a/Include/AZ-INVEST/SDK/CustomChartInputs.mqh and b/Include/AZ-INVEST/SDK/CustomChartInputs.mqh differ diff --git a/Include/AZ-INVEST/SDK/CustomChartInputsBR.mqh b/Include/AZ-INVEST/SDK/CustomChartInputsBR.mqh index 63bec66..e1d3e81 100644 Binary files a/Include/AZ-INVEST/SDK/CustomChartInputsBR.mqh and b/Include/AZ-INVEST/SDK/CustomChartInputsBR.mqh differ diff --git a/Include/AZ-INVEST/SDK/CustomChartSettingsBase.mqh b/Include/AZ-INVEST/SDK/CustomChartSettingsBase.mqh index 6913b17..f9b1814 100644 Binary files a/Include/AZ-INVEST/SDK/CustomChartSettingsBase.mqh and b/Include/AZ-INVEST/SDK/CustomChartSettingsBase.mqh differ diff --git a/Include/AZ-INVEST/SDK/RangeBarCustomChartSettings.mqh b/Include/AZ-INVEST/SDK/RangeBarCustomChartSettings.mqh index 5791bda..56b40a2 100644 --- a/Include/AZ-INVEST/SDK/RangeBarCustomChartSettings.mqh +++ b/Include/AZ-INVEST/SDK/RangeBarCustomChartSettings.mqh @@ -15,6 +15,7 @@ double InpBarSize = 180; // Range bar size ENUM_BAR_SIZE_CALC_MODE InpBarSizeCalcMode = BAR_SIZE_ABSOLUTE_TICKS; // Bar size calculation int InpShowNumberOfDays = 7; // Show history for number of days + datetime InpShowFromDate = 0; // Show history starting from ENUM_TIMEFRAMES InpAtrTimeFrame = PERIOD_D1; // ATR timeframe setting int InpAtrPeriod = 14; // ATR period setting ENUM_BOOL InpResetOpenOnNewTradingDay = true; // Synchronize first bar's open on new day @@ -24,6 +25,7 @@ input double InpBarSize = 100; // Range bar size input ENUM_BAR_SIZE_CALC_MODE InpBarSizeCalcMode = BAR_SIZE_ABSOLUTE_TICKS;// Bar size calculation input int InpShowNumberOfDays = 5; // Show history for number of days + input datetime InpShowFromDate = 0; // Show history starting from input group "### ATR bar size calculation settings" input ENUM_TIMEFRAMES InpAtrTimeFrame = PERIOD_D1; // ATR timeframe setting input int InpAtrPeriod = 14; // ATR period setting @@ -35,6 +37,7 @@ double InpBarSize = 180; // Range bar size ENUM_BAR_SIZE_CALC_MODE InpBarSizeCalcMode = BAR_SIZE_ABSOLUTE_TICKS;// Bar size calculation int InpShowNumberOfDays = 7; // Show history for number of days + datetime InpShowFromDate = 0; // Show history starting from ENUM_TIMEFRAMES InpAtrTimeFrame = PERIOD_D1; // ATR timeframe setting int InpAtrPeriod = 14; // ATR period setting ENUM_BOOL InpResetOpenOnNewTradingDay = true; // Synchronize first bar's open on new day @@ -57,6 +60,7 @@ struct RANGEBAR_SETTINGS ENUM_TIMEFRAMES atrTimeFrame; int atrPeriod; int showNumberOfDays; + datetime showFromDate; ENUM_BOOL resetOpenOnNewTradingDay; }; @@ -109,6 +113,7 @@ void CRangeBarCustomChartSettigns::SetCustomChartSettings() settings.barSize = InpBarSize; settings.barSizeCalcMode = InpBarSizeCalcMode; settings.showNumberOfDays = InpShowNumberOfDays; + settings.showFromDate = InpShowFromDate; settings.atrTimeFrame = InpAtrTimeFrame; settings.atrPeriod = InpAtrPeriod; settings.resetOpenOnNewTradingDay = InpResetOpenOnNewTradingDay; diff --git a/Include/AZ-INVEST/SDK/RangeBars.mqh b/Include/AZ-INVEST/SDK/RangeBars.mqh index a6497c2..378b09f 100644 --- a/Include/AZ-INVEST/SDK/RangeBars.mqh +++ b/Include/AZ-INVEST/SDK/RangeBars.mqh @@ -199,6 +199,7 @@ int RangeBars::Init() s.barSize, s.barSizeCalcMode, s.showNumberOfDays, + s.showFromDate, "=", s.atrTimeFrame, s.atrPeriod, @@ -242,8 +243,7 @@ int RangeBars::Init() cis.ChannelAppliedPrice, cis.ChannelMultiplier, cis.ChannelBandsDeviations, - cis.ChannelPriceLabel, - cis.ChannelMidPriceLabel, + cis.ChannelPriceLabels, "=", true); // used in EA // TopBottomPaddingPercentage, diff --git a/Include/AZ-INVEST/SDK/TimeControl.mqh b/Include/AZ-INVEST/SDK/TimeControl.mqh index 05e8606..fa1da74 100644 --- a/Include/AZ-INVEST/SDK/TimeControl.mqh +++ b/Include/AZ-INVEST/SDK/TimeControl.mqh @@ -1,5 +1,6 @@ // -// Copyright 2018-19, Artur Zas +// Copyright 2018-2021, Artur Zas +// GNU General Public License v3.0 -> https://github.com/9nix6/Median-and-Turbo-Renko-indicator-bundle/blob/master/LICENSE // https://www.az-invest.eu // https://www.mql5.com/en/users/arturz // @@ -8,46 +9,100 @@ class CTimeControl { private: + int scheduleID; + int startHH; int startMM; string start; + datetime startOfSession; int endHH; int endMM; string end; + datetime endOfSession; bool scheduleEnabled; public: + CTimeControl(int id = 0) { scheduleID = id; }; + void SetValidTraingHours(string _from = "0:00", string _to = "0:00"); + void SetValidTraingHours(bool _unused, string _timeSpan = "0:00-0:00"); bool IsTradingTimeValid(); bool IsScheduleEnabled() { return scheduleEnabled; }; + void UpdateSessionDateTime(int addSecods = 0); + datetime GetSessionStartTime() { return startOfSession; }; + datetime GetSessionEndTime() { return endOfSession; }; + void MoveSessionStartToNow(); + string ToString(); + + private: + void StringToHHMM(string value, int &HH, int &MM); + bool StringToHHMMRange(string value, int &startHH, int &startMM, string& _start, int &endHH, int &endMM, string& _end); + void SetScheduleState(); }; -void CTimeControl::SetValidTraingHours(string _from,string _to) +void CTimeControl::SetValidTraingHours(string _from, string _to) { this.start = _from; this.end = _to; StringToHHMM(this.start, this.startHH, this.startMM); StringToHHMM(this.end, this.endHH, this.endMM); + UpdateSessionDateTime(); - if(this.startHH == 0 && this.startMM == 0 && this.endHH == 0 && this.endMM == 0) + SetScheduleState(); +} + +void CTimeControl::MoveSessionStartToNow() +{ + datetime now = TimeCurrent(); + + MqlDateTime temp; + TimeToStruct(now,temp); + + startHH = temp.hour; + startMM = temp.min; + start = StringFormat("%02d:%02d", startHH, startMM); + + UpdateSessionDateTime(temp.sec + 1); +} + +void CTimeControl::UpdateSessionDateTime(int addSecods = 0) +{ + datetime now = TimeCurrent(); + + MqlDateTime temp; + TimeToStruct(now,temp); + + if(addSecods > 0) { - scheduleEnabled = false; + string startTimeTemp = StringFormat("%s:%02d", this.start, addSecods); + startOfSession = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+startTimeTemp); } else { - scheduleEnabled = true; + startOfSession = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+this.start); } + + endOfSession = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+this.end); +} + +void CTimeControl::SetValidTraingHours(bool _unused, string _timeSpan = "0:00-0:00") +{ + if(!StringToHHMMRange(_timeSpan, this.startHH, this.startMM, this.start, this.endHH, this.endMM, this.end)) + return; + + UpdateSessionDateTime(); + SetScheduleState(); } bool CTimeControl::IsTradingTimeValid() { if(scheduleEnabled == false) - return true; + return true; datetime now = TimeCurrent(); @@ -57,12 +112,32 @@ bool CTimeControl::IsTradingTimeValid() datetime _start = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+this.start); datetime _end = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+this.end); - if((now >= _start) && (now <= _end)) + if(_start <= now && now <= _end) return true; else return false; } +string CTimeControl::ToString() +{ + string tradingScheduleName = "Trading schedule "; + + tradingScheduleName += (scheduleID != 0) + ? (string)scheduleID+" " + : ""; + + if(IsScheduleEnabled()) + { + return tradingScheduleName+"ON ("+this.start+" to "+this.end+") | trading "+(IsTradingTimeValid() + ? "enabled" + : "disabled"); + } + else + { + return tradingScheduleName+"NOT USED"; + } +} + void CTimeControl::StringToHHMM(string value, int &HH, int &MM) { MqlDateTime temp; @@ -73,4 +148,46 @@ void CTimeControl::StringToHHMM(string value, int &HH, int &MM) HH = temp.hour; MM = temp.min; -} \ No newline at end of file +} + +bool CTimeControl::StringToHHMMRange(string value, int &_startHH, int &_startMM, string& _start, int &_endHH, int &_endMM, string& _end) +{ + string result[]; + int count = StringSplit(value, '-', result); + if(count != 2) + return false; + + MqlDateTime temp; + TimeToStruct(TimeCurrent(),temp); + + // Start time + _start = result[0]; + datetime fullDateTime = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+_start); + TimeToStruct(fullDateTime,temp); + + startHH = temp.hour; + startMM = temp.min; + + // End time + TimeToStruct(TimeCurrent(),temp); + _end = result[1]; + fullDateTime = StringToTime((string)temp.year+"."+(string)temp.mon+"."+(string)temp.day+" "+_end); + TimeToStruct(fullDateTime,temp); + + endHH = temp.hour; + endMM = temp.min; + + return true; +} + +void CTimeControl::SetScheduleState() +{ + if(this.startHH == 0 && this.startMM == 0 && this.endHH == 0 && this.endMM == 0) + { + scheduleEnabled = false; + } + else + { + scheduleEnabled = true; + } +} diff --git a/Include/AZ-INVEST/SDK/TradeFunctions.mqh b/Include/AZ-INVEST/SDK/TradeFunctions.mqh index d16d0b8..67ac1ff 100644 --- a/Include/AZ-INVEST/SDK/TradeFunctions.mqh +++ b/Include/AZ-INVEST/SDK/TradeFunctions.mqh @@ -1,5 +1,6 @@ // // Copyright 2017-2021, Artur Zas +// GNU General Public License v3.0 -> https://github.com/9nix6/Median-and-Turbo-Renko-indicator-bundle/blob/master/LICENSE // https://www.az-invest.eu // https://www.mql5.com/en/users/arturz // diff --git a/Include/AZ-INVEST/SDK/TradeManager.mqh b/Include/AZ-INVEST/SDK/TradeManager.mqh index 17d48a5..9606f4c 100644 --- a/Include/AZ-INVEST/SDK/TradeManager.mqh +++ b/Include/AZ-INVEST/SDK/TradeManager.mqh @@ -1,5 +1,6 @@ // // Copyright 2018-2021, Artur Zas +// GNU General Public License v3.0 -> https://github.com/9nix6/Median-and-Turbo-Renko-indicator-bundle/blob/master/LICENSE // https://www.az-invest.eu // https://www.mql5.com/en/users/arturz // diff --git a/Indicators/RangeBars/ADX Cross Alerts.ex5 b/Indicators/RangeBars/ADX Cross Alerts.ex5 index c08feb7..17e71c3 100644 Binary files a/Indicators/RangeBars/ADX Cross Alerts.ex5 and b/Indicators/RangeBars/ADX Cross Alerts.ex5 differ diff --git a/Indicators/RangeBars/ADX.ex5 b/Indicators/RangeBars/ADX.ex5 index 6007875..1d4c4f1 100644 Binary files a/Indicators/RangeBars/ADX.ex5 and b/Indicators/RangeBars/ADX.ex5 differ diff --git a/Indicators/RangeBars/ATP.ex5 b/Indicators/RangeBars/ATP.ex5 index 2b583fc..5b80dee 100644 Binary files a/Indicators/RangeBars/ATP.ex5 and b/Indicators/RangeBars/ATP.ex5 differ diff --git a/Indicators/RangeBars/ATR.ex5 b/Indicators/RangeBars/ATR.ex5 index b61eb48..79d5d08 100644 Binary files a/Indicators/RangeBars/ATR.ex5 and b/Indicators/RangeBars/ATR.ex5 differ diff --git a/Indicators/RangeBars/ATR.mq5 b/Indicators/RangeBars/ATR.mq5 index 3faa75f..8788421 100644 --- a/Indicators/RangeBars/ATR.mq5 +++ b/Indicators/RangeBars/ATR.mq5 @@ -45,7 +45,7 @@ void OnInit() //--- IndicatorSetInteger(INDICATOR_DIGITS,_Digits); //--- sets first bar from what index will be drawn - PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,InpAtrPeriod); + PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,Inp_AtrPeriod); //--- name for DataWindow and indicator subwindow label string short_name="ATR("+string(ExtPeriodATR)+")"; IndicatorSetString(INDICATOR_SHORTNAME,short_name); diff --git a/Indicators/RangeBars/AroonOscillator.ex5 b/Indicators/RangeBars/AroonOscillator.ex5 index e34f8d5..5ce675e 100644 Binary files a/Indicators/RangeBars/AroonOscillator.ex5 and b/Indicators/RangeBars/AroonOscillator.ex5 differ diff --git a/Indicators/RangeBars/AwesomeOscillator.ex5 b/Indicators/RangeBars/AwesomeOscillator.ex5 index 776d3dc..b34ccca 100644 Binary files a/Indicators/RangeBars/AwesomeOscillator.ex5 and b/Indicators/RangeBars/AwesomeOscillator.ex5 differ diff --git a/Indicators/RangeBars/BB_MACD.ex5 b/Indicators/RangeBars/BB_MACD.ex5 index b67dad9..a1119f2 100644 Binary files a/Indicators/RangeBars/BB_MACD.ex5 and b/Indicators/RangeBars/BB_MACD.ex5 differ diff --git a/Indicators/RangeBars/BollingerBands.ex5 b/Indicators/RangeBars/BollingerBands.ex5 new file mode 100644 index 0000000..be5c16d Binary files /dev/null and b/Indicators/RangeBars/BollingerBands.ex5 differ diff --git a/Indicators/RangeBars/BollingerBands.mq5 b/Indicators/RangeBars/BollingerBands.mq5 new file mode 100644 index 0000000..d938458 --- /dev/null +++ b/Indicators/RangeBars/BollingerBands.mq5 @@ -0,0 +1,169 @@ +//+------------------------------------------------------------------+ +//| BB.mq5 | +//| Copyright 2009-2020, MetaQuotes Software Corp. | +//| http://www.mql5.com | +//+------------------------------------------------------------------+ +#property copyright "2009-2020, MetaQuotes Software Corp." +#property link "http://www.mql5.com" +#property description "Bollinger Bands" +#include +#include +//--- +#property indicator_chart_window +#property indicator_buffers 4 +#property indicator_plots 3 +#property indicator_type1 DRAW_LINE +#property indicator_color1 LightSeaGreen +#property indicator_type2 DRAW_LINE +#property indicator_color2 LightSeaGreen +#property indicator_type3 DRAW_LINE +#property indicator_color3 LightSeaGreen +#property indicator_label1 "Bands middle" +#property indicator_label2 "Bands upper" +#property indicator_label3 "Bands lower" +//--- input parametrs +input int InpBandsPeriod=20; // Period +input int InpBandsShift=0; // Shift +input double InpBandsDeviations=2.0; // Deviation +input ENUM_APPLIED_PRICE InpAppliedPrice = PRICE_CLOSE; // Applied price +//--- global variables +int ExtBandsPeriod,ExtBandsShift; +double ExtBandsDeviations; +int ExtPlotBegin=0; +//--- indicator buffer +double ExtMLBuffer[]; +double ExtTLBuffer[]; +double ExtBLBuffer[]; +double ExtStdDevBuffer[]; +//+------------------------------------------------------------------+ +//| Custom indicator initialization function | +//+------------------------------------------------------------------+ +void OnInit() + { +//--- check for input values + if(InpBandsPeriod<2) + { + ExtBandsPeriod=20; + PrintFormat("Incorrect value for input variable InpBandsPeriod=%d. Indicator will use value=%d for calculations.",InpBandsPeriod,ExtBandsPeriod); + } + else + ExtBandsPeriod=InpBandsPeriod; + if(InpBandsShift<0) + { + ExtBandsShift=0; + PrintFormat("Incorrect value for input variable InpBandsShift=%d. Indicator will use value=%d for calculations.",InpBandsShift,ExtBandsShift); + } + else + ExtBandsShift=InpBandsShift; + if(InpBandsDeviations==0.0) + { + ExtBandsDeviations=2.0; + PrintFormat("Incorrect value for input variable InpBandsDeviations=%f. Indicator will use value=%f for calculations.",InpBandsDeviations,ExtBandsDeviations); + } + else + ExtBandsDeviations=InpBandsDeviations; +//--- define buffers + SetIndexBuffer(0,ExtMLBuffer); + SetIndexBuffer(1,ExtTLBuffer); + SetIndexBuffer(2,ExtBLBuffer); + SetIndexBuffer(3,ExtStdDevBuffer,INDICATOR_CALCULATIONS); +//--- set index labels + PlotIndexSetString(0,PLOT_LABEL,"Bands("+string(ExtBandsPeriod)+") Middle"); + PlotIndexSetString(1,PLOT_LABEL,"Bands("+string(ExtBandsPeriod)+") Upper"); + PlotIndexSetString(2,PLOT_LABEL,"Bands("+string(ExtBandsPeriod)+") Lower"); +//--- indicator name + IndicatorSetString(INDICATOR_SHORTNAME,"Bollinger Bands"); +//--- indexes draw begin settings + ExtPlotBegin=ExtBandsPeriod-1; + PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,ExtBandsPeriod); + PlotIndexSetInteger(1,PLOT_DRAW_BEGIN,ExtBandsPeriod); + PlotIndexSetInteger(2,PLOT_DRAW_BEGIN,ExtBandsPeriod); +//--- indexes shift settings + PlotIndexSetInteger(0,PLOT_SHIFT,ExtBandsShift); + PlotIndexSetInteger(1,PLOT_SHIFT,ExtBandsShift); + PlotIndexSetInteger(2,PLOT_SHIFT,ExtBandsShift); +//--- number of digits of indicator value + IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1); + + customChartIndicator.SetUseAppliedPriceFlag(InpAppliedPrice); + } +//+------------------------------------------------------------------+ +//| Bollinger Bands | +//+------------------------------------------------------------------+ +/* +int OnCalculate(const int rates_total, + const int prev_calculated, + const int begin, + const double &price[]) +*/ +int OnCalculate(const int rates_total, + const int prev_calculated, + const datetime &time[], + const double &open[], + const double &high[], + const double &low[], + const double &close[], + const long &tick_volume[], + const long &volume[], + const int &spread[]) + { + static int begin = 0; + + if(!customChartIndicator.OnCalculate(rates_total,prev_calculated,time,close)) + return(0); + + if(!customChartIndicator.BufferSynchronizationCheck(close)) + return(0); + + int _prev_calculated = customChartIndicator.GetPrevCalculated(); + int _rates_total = ArraySize(customChartIndicator.Close); + + if(_rates_total1) + pos=_prev_calculated-1; + else + pos=0; +//--- main cycle + for(int i=pos; i<_rates_total && !IsStopped(); i++) + { + //--- middle line + ExtMLBuffer[i]=SimpleMA(i,ExtBandsPeriod,customChartIndicator.Price); + //--- calculate and write down StdDev + ExtStdDevBuffer[i]=StdDev_Func(i,customChartIndicator.Price,ExtMLBuffer,ExtBandsPeriod); + //--- upper line + ExtTLBuffer[i]=ExtMLBuffer[i]+ExtBandsDeviations*ExtStdDevBuffer[i]; + //--- lower line + ExtBLBuffer[i]=ExtMLBuffer[i]-ExtBandsDeviations*ExtStdDevBuffer[i]; + } +//--- OnCalculate done. Return new prev_calculated. + return(rates_total); + } +//+------------------------------------------------------------------+ +//| Calculate Standard Deviation | +//+------------------------------------------------------------------+ +double StdDev_Func(const int position,const double &price[],const double &ma_price[],const int period) + { + double std_dev=0.0; +//--- calcualte StdDev + if(position>=period) + { + for(int i=0; i #include // @@ -43,7 +43,7 @@ int period; int OnInit() { //--- check period - period=(int)fmax(InpPeriod,2); + _period=(int)fmax(InpPeriod,2); //--- set buffers SetIndexBuffer(0,GannBuffer); SetIndexBuffer(1,ColorBuffer,INDICATOR_COLOR_INDEX); @@ -57,19 +57,19 @@ int OnInit() ArraySetAsSeries(MaLowBuffer,true); ArraySetAsSeries(TrendBuffer,true); //--- get handles - ma_high_handle=iMA(NULL,0,period,0,InpMethod,PRICE_HIGH); - ma_low_handle =iMA(NULL,0,period,0,InpMethod,PRICE_LOW); - if(ma_high_handle==INVALID_HANDLE || ma_low_handle==INVALID_HANDLE) - { - Print("Unable to create handle for iMA"); - return(INIT_FAILED); - } + //ma_high_handle=iMA(NULL,0,_period,0,InpMethod,PRICE_HIGH); + //ma_low_handle =iMA(NULL,0,_period,0,InpMethod,PRICE_LOW); + //if(ma_high_handle==INVALID_HANDLE || ma_low_handle==INVALID_HANDLE) + // { + // Print("Unable to create handle for iMA"); + // return(INIT_FAILED); + // } //--- set indicator properties - string short_name=StringFormat("Gann High-Low Activator SSL (%u, %s)",period,StringSubstr(EnumToString(InpMethod),5)); + string short_name=StringFormat("Gann High-Low Activator SSL (%u, %s)",_period,StringSubstr(EnumToString(InpMethod),5)); IndicatorSetString(INDICATOR_SHORTNAME,short_name); IndicatorSetInteger(INDICATOR_DIGITS,_Digits); //--- set label - short_name=StringFormat("GHL (%u, %s)",period,StringSubstr(EnumToString(InpMethod),5)); + short_name=StringFormat("GHL (%u, %s)",_period,StringSubstr(EnumToString(InpMethod),5)); PlotIndexSetString(0,PLOT_LABEL,short_name); //--- done return(INIT_SUCCEEDED); @@ -89,7 +89,7 @@ int OnCalculate(const int rates_total, const int &spread[]) { - if(rates_total=0 && !_StopFlag; i--) { diff --git a/Indicators/RangeBars/HA_Smoothed.ex5 b/Indicators/RangeBars/HA_Smoothed.ex5 index b110bf1..29ada39 100644 Binary files a/Indicators/RangeBars/HA_Smoothed.ex5 and b/Indicators/RangeBars/HA_Smoothed.ex5 differ diff --git a/Indicators/RangeBars/HalfTrend.ex5 b/Indicators/RangeBars/HalfTrend.ex5 index 46810e0..f134782 100644 Binary files a/Indicators/RangeBars/HalfTrend.ex5 and b/Indicators/RangeBars/HalfTrend.ex5 differ diff --git a/Indicators/RangeBars/Heiken_Ashi.ex5 b/Indicators/RangeBars/Heiken_Ashi.ex5 index cd12a76..df9d8fd 100644 Binary files a/Indicators/RangeBars/Heiken_Ashi.ex5 and b/Indicators/RangeBars/Heiken_Ashi.ex5 differ diff --git a/Indicators/RangeBars/Ichimoku.ex5 b/Indicators/RangeBars/Ichimoku.ex5 index a063dfe..ee37829 100644 Binary files a/Indicators/RangeBars/Ichimoku.ex5 and b/Indicators/RangeBars/Ichimoku.ex5 differ diff --git a/Indicators/RangeBars/KeltnerChannel.ex5 b/Indicators/RangeBars/KeltnerChannel.ex5 index 09b24ea..47be027 100644 Binary files a/Indicators/RangeBars/KeltnerChannel.ex5 and b/Indicators/RangeBars/KeltnerChannel.ex5 differ diff --git a/Indicators/RangeBars/LRMA.ex5 b/Indicators/RangeBars/LRMA.ex5 index fd4159e..d38b4eb 100644 Binary files a/Indicators/RangeBars/LRMA.ex5 and b/Indicators/RangeBars/LRMA.ex5 differ diff --git a/Indicators/RangeBars/LinearRegression.ex5 b/Indicators/RangeBars/LinearRegression.ex5 index c92a2d7..86ecf4c 100644 Binary files a/Indicators/RangeBars/LinearRegression.ex5 and b/Indicators/RangeBars/LinearRegression.ex5 differ diff --git a/Indicators/RangeBars/MA.ex5 b/Indicators/RangeBars/MA.ex5 index 489b0e5..048f701 100644 Binary files a/Indicators/RangeBars/MA.ex5 and b/Indicators/RangeBars/MA.ex5 differ diff --git a/Indicators/RangeBars/MACD.ex5 b/Indicators/RangeBars/MACD.ex5 index bc2f961..78a8956 100644 Binary files a/Indicators/RangeBars/MACD.ex5 and b/Indicators/RangeBars/MACD.ex5 differ diff --git a/Indicators/RangeBars/MACD_Line.ex5 b/Indicators/RangeBars/MACD_Line.ex5 index d83cdac..47cecc5 100644 Binary files a/Indicators/RangeBars/MACD_Line.ex5 and b/Indicators/RangeBars/MACD_Line.ex5 differ diff --git a/Indicators/RangeBars/Momentum.ex5 b/Indicators/RangeBars/Momentum.ex5 index ba8b2b1..649eadd 100644 Binary files a/Indicators/RangeBars/Momentum.ex5 and b/Indicators/RangeBars/Momentum.ex5 differ diff --git a/Indicators/RangeBars/NRTR.ex5 b/Indicators/RangeBars/NRTR.ex5 index bd3d1c2..6eee23e 100644 Binary files a/Indicators/RangeBars/NRTR.ex5 and b/Indicators/RangeBars/NRTR.ex5 differ diff --git a/Indicators/RangeBars/OBV.ex5 b/Indicators/RangeBars/OBV.ex5 index 9b09a55..478f22c 100644 Binary files a/Indicators/RangeBars/OBV.ex5 and b/Indicators/RangeBars/OBV.ex5 differ diff --git a/Indicators/RangeBars/OscillatorCandles.ex5 b/Indicators/RangeBars/OscillatorCandles.ex5 index 21bbbff..ebcb2c5 100644 Binary files a/Indicators/RangeBars/OscillatorCandles.ex5 and b/Indicators/RangeBars/OscillatorCandles.ex5 differ diff --git a/Indicators/RangeBars/ParabolicSAR.ex5 b/Indicators/RangeBars/ParabolicSAR.ex5 index 54f56f5..20338b1 100644 Binary files a/Indicators/RangeBars/ParabolicSAR.ex5 and b/Indicators/RangeBars/ParabolicSAR.ex5 differ diff --git a/Indicators/RangeBars/ProVolume.ex5 b/Indicators/RangeBars/ProVolume.ex5 index 98a86e0..c4a57ac 100644 Binary files a/Indicators/RangeBars/ProVolume.ex5 and b/Indicators/RangeBars/ProVolume.ex5 differ diff --git a/Indicators/RangeBars/QQE.ex5 b/Indicators/RangeBars/QQE.ex5 index 7fd769c..7a826b5 100644 Binary files a/Indicators/RangeBars/QQE.ex5 and b/Indicators/RangeBars/QQE.ex5 differ diff --git a/Indicators/RangeBars/ROC.ex5 b/Indicators/RangeBars/ROC.ex5 index 222f4a9..f650148 100644 Binary files a/Indicators/RangeBars/ROC.ex5 and b/Indicators/RangeBars/ROC.ex5 differ diff --git a/Indicators/RangeBars/RSI.ex5 b/Indicators/RangeBars/RSI.ex5 index 69f93e4..9de4ec5 100644 Binary files a/Indicators/RangeBars/RSI.ex5 and b/Indicators/RangeBars/RSI.ex5 differ diff --git a/Indicators/RangeBars/RVI.ex5 b/Indicators/RangeBars/RVI.ex5 index d173375..b205b67 100644 Binary files a/Indicators/RangeBars/RVI.ex5 and b/Indicators/RangeBars/RVI.ex5 differ diff --git a/Indicators/RangeBars/SchaffTrendCycle.ex5 b/Indicators/RangeBars/SchaffTrendCycle.ex5 new file mode 100644 index 0000000..f1703d7 Binary files /dev/null and b/Indicators/RangeBars/SchaffTrendCycle.ex5 differ diff --git a/Indicators/RangeBars/SchaffTrendCycle.mq5 b/Indicators/RangeBars/SchaffTrendCycle.mq5 new file mode 100644 index 0000000..85ac7f1 Binary files /dev/null and b/Indicators/RangeBars/SchaffTrendCycle.mq5 differ diff --git a/Indicators/RangeBars/StdDev.ex5 b/Indicators/RangeBars/StdDev.ex5 index 55219fe..10febe9 100644 Binary files a/Indicators/RangeBars/StdDev.ex5 and b/Indicators/RangeBars/StdDev.ex5 differ diff --git a/Indicators/RangeBars/Stochastic.ex5 b/Indicators/RangeBars/Stochastic.ex5 index 2f2c733..1e6bc3c 100644 Binary files a/Indicators/RangeBars/Stochastic.ex5 and b/Indicators/RangeBars/Stochastic.ex5 differ diff --git a/Indicators/RangeBars/SuperTrend.ex5 b/Indicators/RangeBars/SuperTrend.ex5 new file mode 100644 index 0000000..b0eb2db Binary files /dev/null and b/Indicators/RangeBars/SuperTrend.ex5 differ diff --git a/Indicators/RangeBars/SuperTrend.mq5 b/Indicators/RangeBars/SuperTrend.mq5 new file mode 100644 index 0000000..d1a6265 Binary files /dev/null and b/Indicators/RangeBars/SuperTrend.mq5 differ diff --git a/Indicators/RangeBars/T3.ex5 b/Indicators/RangeBars/T3.ex5 index 8b6f4bf..c21bb26 100644 Binary files a/Indicators/RangeBars/T3.ex5 and b/Indicators/RangeBars/T3.ex5 differ diff --git a/Indicators/RangeBars/TDI.ex5 b/Indicators/RangeBars/TDI.ex5 index cf92553..e158cf6 100644 Binary files a/Indicators/RangeBars/TDI.ex5 and b/Indicators/RangeBars/TDI.ex5 differ diff --git a/Indicators/RangeBars/TMA_CenteredBands.ex5 b/Indicators/RangeBars/TMA_CenteredBands.ex5 index 69bda48..f19f457 100644 Binary files a/Indicators/RangeBars/TMA_CenteredBands.ex5 and b/Indicators/RangeBars/TMA_CenteredBands.ex5 differ diff --git a/Indicators/RangeBars/TRIX.ex5 b/Indicators/RangeBars/TRIX.ex5 index 3aec3e5..fdcd93c 100644 Binary files a/Indicators/RangeBars/TRIX.ex5 and b/Indicators/RangeBars/TRIX.ex5 differ diff --git a/Indicators/RangeBars/TimeLine.ex5 b/Indicators/RangeBars/TimeLine.ex5 index 3068e77..badb765 100644 Binary files a/Indicators/RangeBars/TimeLine.ex5 and b/Indicators/RangeBars/TimeLine.ex5 differ diff --git a/Indicators/RangeBars/VEMA_Wilders_DMI.ex5 b/Indicators/RangeBars/VEMA_Wilders_DMI.ex5 index 1243740..928b66e 100644 Binary files a/Indicators/RangeBars/VEMA_Wilders_DMI.ex5 and b/Indicators/RangeBars/VEMA_Wilders_DMI.ex5 differ diff --git a/Indicators/RangeBars/VWAP_lite.ex5 b/Indicators/RangeBars/VWAP_lite.ex5 index 97543a2..0e8698f 100644 Binary files a/Indicators/RangeBars/VWAP_lite.ex5 and b/Indicators/RangeBars/VWAP_lite.ex5 differ diff --git a/Indicators/RangeBars/Volatility.ex5 b/Indicators/RangeBars/Volatility.ex5 index 71481cb..472da39 100644 Binary files a/Indicators/RangeBars/Volatility.ex5 and b/Indicators/RangeBars/Volatility.ex5 differ diff --git a/Indicators/RangeBars/Volume_Average_percent.ex5 b/Indicators/RangeBars/Volume_Average_percent.ex5 index bc61a04..ebbccdd 100644 Binary files a/Indicators/RangeBars/Volume_Average_percent.ex5 and b/Indicators/RangeBars/Volume_Average_percent.ex5 differ diff --git a/Indicators/RangeBars/Volumes.ex5 b/Indicators/RangeBars/Volumes.ex5 index 5848a2a..a0e7729 100644 Binary files a/Indicators/RangeBars/Volumes.ex5 and b/Indicators/RangeBars/Volumes.ex5 differ diff --git a/Indicators/RangeBars/WPR.ex5 b/Indicators/RangeBars/WPR.ex5 index a348f9f..11abe89 100644 Binary files a/Indicators/RangeBars/WPR.ex5 and b/Indicators/RangeBars/WPR.ex5 differ diff --git a/Indicators/RangeBars/WeisWaves.ex5 b/Indicators/RangeBars/WeisWaves.ex5 index bbbb474..edc653b 100644 Binary files a/Indicators/RangeBars/WeisWaves.ex5 and b/Indicators/RangeBars/WeisWaves.ex5 differ diff --git a/Indicators/RangeBars/ZigZag.ex5 b/Indicators/RangeBars/ZigZag.ex5 index 64b73ac..5c54ba8 100644 Binary files a/Indicators/RangeBars/ZigZag.ex5 and b/Indicators/RangeBars/ZigZag.ex5 differ