diff --git a/BKP/Main/Indicators/candle_time_end_and_spread.mq5 b/BKP/Main/Indicators/candle_time_end_and_spread.mq5 new file mode 100644 index 00000000..3e60455d --- /dev/null +++ b/BKP/Main/Indicators/candle_time_end_and_spread.mq5 @@ -0,0 +1,62 @@ +//+------------------------------------------------------------------+ +//| CandleTimeStationary| +//| | +//| | +//+------------------------------------------------------------------+ + +#property indicator_chart_window +#property strict + +//---- input parameters +input color Clock_Color = clrDimGray; +input ENUM_BASE_CORNER Corner = CORNER_RIGHT_UPPER; + +string objname="Spread&Bar"; +double s1[]; + +//+------------------------------------------------------------------+ +//| expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + ObjectCreate(0, objname, OBJ_LABEL,0, 0, 0); + ObjectSetInteger(0, objname, OBJPROP_CORNER, Corner); + ObjectSetInteger(0, objname, OBJPROP_XDISTANCE, 10); + ObjectSetInteger(0, objname, OBJPROP_YDISTANCE, 2); + ENUM_ANCHOR_POINT Anchor = ANCHOR_LEFT_UPPER; + switch (Corner) + { + case CORNER_LEFT_UPPER: Anchor=ANCHOR_LEFT_UPPER; break; + case CORNER_RIGHT_UPPER: Anchor=ANCHOR_RIGHT_UPPER; break; + case CORNER_LEFT_LOWER: Anchor=ANCHOR_LEFT_LOWER; break; + case CORNER_RIGHT_LOWER: Anchor=ANCHOR_RIGHT_LOWER; break; + } + ObjectSetInteger(0, objname, OBJPROP_ANCHOR, Anchor); + + return(INIT_SUCCEEDED); +} +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) { ObjectDelete(0, objname); } + +//+------------------------------------------------------------------+ +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& spreads[]) +{ + ArraySetAsSeries(time, true); + int m=int(time[0]+PeriodSeconds()-TimeCurrent()); + int s=m%60; + m=(m-s)/60; + long spread=SymbolInfoInteger(Symbol(), SYMBOL_SPREAD); + + string _sp="",_m="",_s=""; + if (spread<10) _sp=".."; + else if (spread<100) _sp="."; + if (m<10) _m="0"; + if (s<10) _s="0"; + + ObjectSetString(0, objname, OBJPROP_TEXT, "Spread: " +IntegerToString(spread)+_sp+" Next Bar in "+_m+IntegerToString(m)+":"+_s+IntegerToString(s)); + ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 10); + ObjectSetInteger(0, objname, OBJPROP_COLOR, Clock_Color); + ObjectSetString(0, objname, OBJPROP_FONT, "Courier"); + + return(rates_total); +} diff --git a/BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 b/BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 index c66a6773..8864b1b1 100644 --- a/BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 +++ b/BKP/Main/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 @@ -1678,6 +1678,14 @@ bool XAU5XTDHasLongSignal() mConditions.isXCHMALCPeak && mConditions.isXAMANeutural) // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTDSignalCrossedOverBear) + // ) // ) @@ -2125,6 +2133,14 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXLHPriceCrossedOverSignal && + mConditions.isXTSCurrentCrossedOverNearest) + // + || + // ((mConditions.isXTSCurrentUnderNearest || mConditions.isXTSCurrentCrossedUnderNearest) && (mConditions.isXTSCurrentUnderMediest || @@ -2186,6 +2202,14 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXLHLLDecreased && + mConditions.isXCHMASCCrossedOverMax && + mConditions.isXTDSignalCrossedOverBear) + // + || + // (mConditions.isXCHMAMCPeak && mConditions.isXTMNeutural && mConditions.isXAMANeutural && @@ -2212,6 +2236,13 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMNeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXTSCurrentCrossedOverNearest) + // + || + // ((mConditions.isXTMNeutural && mConditions.isXAMANeutural) && ( @@ -2549,6 +2580,16 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax && + mConditions.isXCHMALCTrendsDown && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDSignalCrossedOverBear) + // + || + // (mConditions.isXCHMAMCPeak && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHMASCCrossedOverMax && diff --git a/Indicators/candle_time_end_and_spread.mq5 b/Indicators/candle_time_end_and_spread.mq5 new file mode 100644 index 00000000..3e60455d --- /dev/null +++ b/Indicators/candle_time_end_and_spread.mq5 @@ -0,0 +1,62 @@ +//+------------------------------------------------------------------+ +//| CandleTimeStationary| +//| | +//| | +//+------------------------------------------------------------------+ + +#property indicator_chart_window +#property strict + +//---- input parameters +input color Clock_Color = clrDimGray; +input ENUM_BASE_CORNER Corner = CORNER_RIGHT_UPPER; + +string objname="Spread&Bar"; +double s1[]; + +//+------------------------------------------------------------------+ +//| expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + ObjectCreate(0, objname, OBJ_LABEL,0, 0, 0); + ObjectSetInteger(0, objname, OBJPROP_CORNER, Corner); + ObjectSetInteger(0, objname, OBJPROP_XDISTANCE, 10); + ObjectSetInteger(0, objname, OBJPROP_YDISTANCE, 2); + ENUM_ANCHOR_POINT Anchor = ANCHOR_LEFT_UPPER; + switch (Corner) + { + case CORNER_LEFT_UPPER: Anchor=ANCHOR_LEFT_UPPER; break; + case CORNER_RIGHT_UPPER: Anchor=ANCHOR_RIGHT_UPPER; break; + case CORNER_LEFT_LOWER: Anchor=ANCHOR_LEFT_LOWER; break; + case CORNER_RIGHT_LOWER: Anchor=ANCHOR_RIGHT_LOWER; break; + } + ObjectSetInteger(0, objname, OBJPROP_ANCHOR, Anchor); + + return(INIT_SUCCEEDED); +} +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) { ObjectDelete(0, objname); } + +//+------------------------------------------------------------------+ +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& spreads[]) +{ + ArraySetAsSeries(time, true); + int m=int(time[0]+PeriodSeconds()-TimeCurrent()); + int s=m%60; + m=(m-s)/60; + long spread=SymbolInfoInteger(Symbol(), SYMBOL_SPREAD); + + string _sp="",_m="",_s=""; + if (spread<10) _sp=".."; + else if (spread<100) _sp="."; + if (m<10) _m="0"; + if (s<10) _s="0"; + + ObjectSetString(0, objname, OBJPROP_TEXT, "Spread: " +IntegerToString(spread)+_sp+" Next Bar in "+_m+IntegerToString(m)+":"+_s+IntegerToString(s)); + ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 10); + ObjectSetInteger(0, objname, OBJPROP_COLOR, Clock_Color); + ObjectSetString(0, objname, OBJPROP_FONT, "Courier"); + + return(rates_total); +} diff --git a/Projects/XAU5/Indicators/candle_time_end_and_spread.mq5 b/Projects/XAU5/Indicators/candle_time_end_and_spread.mq5 new file mode 100644 index 00000000..3e60455d --- /dev/null +++ b/Projects/XAU5/Indicators/candle_time_end_and_spread.mq5 @@ -0,0 +1,62 @@ +//+------------------------------------------------------------------+ +//| CandleTimeStationary| +//| | +//| | +//+------------------------------------------------------------------+ + +#property indicator_chart_window +#property strict + +//---- input parameters +input color Clock_Color = clrDimGray; +input ENUM_BASE_CORNER Corner = CORNER_RIGHT_UPPER; + +string objname="Spread&Bar"; +double s1[]; + +//+------------------------------------------------------------------+ +//| expert initialization function | +//+------------------------------------------------------------------+ +int OnInit() +{ + ObjectCreate(0, objname, OBJ_LABEL,0, 0, 0); + ObjectSetInteger(0, objname, OBJPROP_CORNER, Corner); + ObjectSetInteger(0, objname, OBJPROP_XDISTANCE, 10); + ObjectSetInteger(0, objname, OBJPROP_YDISTANCE, 2); + ENUM_ANCHOR_POINT Anchor = ANCHOR_LEFT_UPPER; + switch (Corner) + { + case CORNER_LEFT_UPPER: Anchor=ANCHOR_LEFT_UPPER; break; + case CORNER_RIGHT_UPPER: Anchor=ANCHOR_RIGHT_UPPER; break; + case CORNER_LEFT_LOWER: Anchor=ANCHOR_LEFT_LOWER; break; + case CORNER_RIGHT_LOWER: Anchor=ANCHOR_RIGHT_LOWER; break; + } + ObjectSetInteger(0, objname, OBJPROP_ANCHOR, Anchor); + + return(INIT_SUCCEEDED); +} +//+------------------------------------------------------------------+ +void OnDeinit(const int reason) { ObjectDelete(0, objname); } + +//+------------------------------------------------------------------+ +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& spreads[]) +{ + ArraySetAsSeries(time, true); + int m=int(time[0]+PeriodSeconds()-TimeCurrent()); + int s=m%60; + m=(m-s)/60; + long spread=SymbolInfoInteger(Symbol(), SYMBOL_SPREAD); + + string _sp="",_m="",_s=""; + if (spread<10) _sp=".."; + else if (spread<100) _sp="."; + if (m<10) _m="0"; + if (s<10) _s="0"; + + ObjectSetString(0, objname, OBJPROP_TEXT, "Spread: " +IntegerToString(spread)+_sp+" Next Bar in "+_m+IntegerToString(m)+":"+_s+IntegerToString(s)); + ObjectSetInteger(0, objname, OBJPROP_FONTSIZE, 10); + ObjectSetInteger(0, objname, OBJPROP_COLOR, Clock_Color); + ObjectSetString(0, objname, OBJPROP_FONT, "Courier"); + + return(rates_total); +} diff --git a/Projects/XAU5/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 b/Projects/XAU5/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 index c66a6773..8864b1b1 100644 --- a/Projects/XAU5/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 +++ b/Projects/XAU5/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 @@ -1678,6 +1678,14 @@ bool XAU5XTDHasLongSignal() mConditions.isXCHMALCPeak && mConditions.isXAMANeutural) // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTDSignalCrossedOverBear) + // ) // ) @@ -2125,6 +2133,14 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXLHPriceCrossedOverSignal && + mConditions.isXTSCurrentCrossedOverNearest) + // + || + // ((mConditions.isXTSCurrentUnderNearest || mConditions.isXTSCurrentCrossedUnderNearest) && (mConditions.isXTSCurrentUnderMediest || @@ -2186,6 +2202,14 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXLHLLDecreased && + mConditions.isXCHMASCCrossedOverMax && + mConditions.isXTDSignalCrossedOverBear) + // + || + // (mConditions.isXCHMAMCPeak && mConditions.isXTMNeutural && mConditions.isXAMANeutural && @@ -2212,6 +2236,13 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMNeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXTSCurrentCrossedOverNearest) + // + || + // ((mConditions.isXTMNeutural && mConditions.isXAMANeutural) && ( @@ -2549,6 +2580,16 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax && + mConditions.isXCHMALCTrendsDown && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDSignalCrossedOverBear) + // + || + // (mConditions.isXCHMAMCPeak && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHMASCCrossedOverMax && diff --git a/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 b/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 index c66a6773..8864b1b1 100644 --- a/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 +++ b/Providers/x-saherelm.xau5.provider.indicators.lib.mq5 @@ -1678,6 +1678,14 @@ bool XAU5XTDHasLongSignal() mConditions.isXCHMALCPeak && mConditions.isXAMANeutural) // + || + // + (mConditions.isXCHMAMCVale && + mConditions.isXCHMALCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTDSignalCrossedOverBear) + // ) // ) @@ -2125,6 +2133,14 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMStartBullish && + mConditions.isXAMAStartBullish && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXLHPriceCrossedOverSignal && + mConditions.isXTSCurrentCrossedOverNearest) + // + || + // ((mConditions.isXTSCurrentUnderNearest || mConditions.isXTSCurrentCrossedUnderNearest) && (mConditions.isXTSCurrentUnderMediest || @@ -2186,6 +2202,14 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXCHMAMCPeak && + mConditions.isXTSCurrentMax && + mConditions.isXLHLLDecreased && + mConditions.isXCHMASCCrossedOverMax && + mConditions.isXTDSignalCrossedOverBear) + // + || + // (mConditions.isXCHMAMCPeak && mConditions.isXTMNeutural && mConditions.isXAMANeutural && @@ -2212,6 +2236,13 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMNeutural && + mConditions.isXTSCurrentMax && + mConditions.isXTDSignalCrossedOverBear && + mConditions.isXTSCurrentCrossedOverNearest) + // + || + // ((mConditions.isXTMNeutural && mConditions.isXAMANeutural) && ( @@ -2549,6 +2580,16 @@ bool XAU5XTDHasLongSignal() // || // + (mConditions.isXTMBullish && + mConditions.isXAMABullish && + mConditions.isXTSCurrentMax && + mConditions.isXCHMALCTrendsDown && + mConditions.isXTSCurrentOverFarest && + mConditions.isXTSCurrentOverMediest && + mConditions.isXTDSignalCrossedOverBear) + // + || + // (mConditions.isXCHMAMCPeak && mConditions.isXCHLHSCMCHHSame && mConditions.isXCHMASCCrossedOverMax &&