BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 je signalni indikator, ki postavlja signalne nalepke in slika signalne sveče, ko in ko se cena prebije skozi pasove Bollinger. Kazalnik trgovcem ponuja možnost izbire med dvema načinoma razčlenitve Bollinger Band:
1. odpiranje cen znotraj pasov Bollinger in zapiranje zunaj;
2. Odpiranje in zapiranje cen zunaj pasov Bollinger.
Če je indikatorski parameter, Prikaži signalne sveče, nastavljen na Da, bikovska sveča zunaj spodnjega pasu Bollinger je obarvana zeleno, medvedka sveča zunaj zgornjega Bollingerjevega pasu pa oranžno.
Tržni signali, ki jih ustvarja indikator BB_OutsideCandle_Alert Za MT5 se zdijo razmeroma boljši, če so v skladu s prevladujočim tržnim trendom.
Namestitev BB_OutsideCandle_Alert Indicator For MT5
Ko naložite indikator prek zgornjega obrazca, morate odpreti zip datoteko. Nato morate kopirati datoteko BB_OutsideCandle_Alert.mq5 v mapo MQL5Indicators vaše namestitve MT5 . Po tem znova zaženite MT5 in takrat boste lahko videli indikator na seznamu indikatorjev.
Parametri BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 ima za nastavitev parametre 6 .
input uint InpPeriodBB = 12; // BB period
input double InpDeviation = 2.2; // BB deviation
input ENUM_MODE_OP_CL InpModeCandle = MODE_CANDLE_OUTSIDE; // BB line breakdown method
input ENUM_INPUT_YES_NO InpShowBands = INPUT_YES; // Show bands
input ENUM_INPUT_YES_NO InpShowCandles = INPUT_YES; // Show signal candles
input ENUM_INPUT_YES_NO InpShowAlerts = INPUT_YES; // Use alerts
Odbojniki BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 zagotavlja blažilnike 10 .
SetIndexBuffer(0,BufferSigB,INDICATOR_DATA);
SetIndexBuffer(1,BufferSigS,INDICATOR_DATA);
SetIndexBuffer(2,BufferBandUP,INDICATOR_DATA);
SetIndexBuffer(3,BufferBandDN,INDICATOR_DATA);
SetIndexBuffer(4,BufferCandleO,INDICATOR_DATA);
SetIndexBuffer(5,BufferCandleH,INDICATOR_DATA);
SetIndexBuffer(6,BufferCandleL,INDICATOR_DATA);
SetIndexBuffer(7,BufferCandleC,INDICATOR_DATA);
SetIndexBuffer(8,BufferColors,INDICATOR_COLOR_INDEX);
SetIndexBuffer(9,BufferBB,INDICATOR_CALCULATIONS);
Glavni deli kodeksa
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[])
{
//--- #AB0= gt 2:0 lt 0AA82 gt 2 1CD5@ gt 2 :0: B09 lt A5@89
ArraySetAsSeries(open,true);
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
ArraySetAsSeries(close,true);
ArraySetAsSeries(time,true);
//--- @ gt 25@:0 : gt ;8G5AB20 4 gt ABC?=KE 10@ gt 2
if(rates_total lt 4) return 0;
//--- @ gt 25@:0 8 @0AGQB : gt ;8G5AB20 ?@ gt AG8BK205 lt KE 10@ gt 2
int limit=rates_total-prev_calculated;
if(limit gt 1)
{
limit=rates_total-2;
ArrayInitialize(BufferSigB,EMPTY_VALUE);
ArrayInitialize(BufferSigS,EMPTY_VALUE);
ArrayInitialize(BufferBandUP,EMPTY_VALUE);
ArrayInitialize(BufferBandDN,EMPTY_VALUE);
ArrayInitialize(BufferCandleO,EMPTY_VALUE);
ArrayInitialize(BufferCandleH,EMPTY_VALUE);
ArrayInitialize(BufferCandleL,EMPTY_VALUE);
ArrayInitialize(BufferCandleC,EMPTY_VALUE);
ArrayInitialize(BufferColors,2);
ArrayInitialize(BufferBB,0);
}
//--- gt 43 gt B gt 2:0 40==KE
int count=(limit gt 1 ? rates_total : 1),copied=0;
copied=CopyBuffer(handle_bb,UPPER_BAND,0,count,BufferBandUP);
if(copied!=count) return 0;
copied=CopyBuffer(handle_bb,LOWER_BAND,0,count,BufferBandDN);
if(copied!=count) return 0;
//--- 0AGQB 8=48:0B gt @0
static datetime last_time=0;
string alert="";
for(int i=limit; i gt =0 && !IsStopped(); i--)
{
BufferCandleO[i]=BufferCandleH[i]=BufferCandleL[i]=BufferCandleC[i]=EMPTY_VALUE;
if(InpModeCandle==MODE_CANDLE_INSIDE_OUT)
{
//--- Bearish. Candle opening inside the bands and closing above the upper bollinger band
if(open[i+1] lt BufferBandUP[i+1] && close[i+1] gt BufferBandUP[i+1])
{
BufferSigS[i]=high[i];//fmax(open[i+1],fmax(open[i],BufferBandUP[i]));
if(InpShowCandles)
DrawColorCandle(i+1,open,high,low,close);
//--- Alert after the last Close of a candle
if(i==0 && InpShowAlerts && time[0] gt last_time)
{
Alert(Symbol()+" "+TimeframeToString(Period())+": Bollinger Bands Outside Candle SHORT Signal");
last_time=TimeCurrent();
}
}
//--- Bullish. Candle opening inside the bands and closing below the lower bollinger band
if(open[i+1] gt BufferBandDN[i+1] && close[i+1] lt BufferBandDN[i+1])
{
BufferSigB[i]=low[i];//fmin(open[i+1],fmin(open[i],BufferBandDN[i]));
if(InpShowCandles)
DrawColorCandle(i+1,open,high,low,close);
//--- Alert after the last Close of a candle
if(i==0 && InpShowAlerts && time[0] gt last_time)
{
Alert(Symbol()+" "+TimeframeToString(Period())+": Bollinger Bands Outside Candle LONG Signal");
last_time=TimeCurrent();
}
}
}
else
{
//--- Bearish. Candle opening and closing above the upper bollinger band
if(open[i+1] gt close[i+1] && close[i+1] gt BufferBandUP[i+1])
{
BufferSigS[i]=high[i];//fmax(open[i+1],fmax(open[i],BufferBandUP[i]));
if(InpShowCandles)
DrawColorCandle(i+1,open,high,low,close);
//--- Alert after the last Close of a candle
if(i==0 && InpShowAlerts && time[0] gt last_time)
{
Alert(Symbol()+" "+TimeframeToString(Period())+": Bollinger Bands Outside Candle SHORT Signal");
last_time=TimeCurrent();
}
}
//--- Bullish. Candle opening and closing below the lower bollinger band
if(open[i+1] lt close[i+1] && close[i+1] lt BufferBandDN[i+1])
{
BufferSigB[i]=low[i];//fmin(open[i+1],fmin(open[i],BufferBandDN[i]));
if(InpShowCandles)
DrawColorCandle(i+1,open,high,low,close);
//--- Alert after the last Close of a candle
if(i==0 && InpShowAlerts && time[0] gt last_time)
{
Alert(Symbol()+" "+TimeframeToString(Period())+": Bollinger Bands Outside Candle LONG Signal");
last_time=TimeCurrent();
}
}
}
}
//--- return value of prev_calculated for next call
return(rates_total);
}
//+------------------------------------------------------------------+
//| Timeframe to string |
//+------------------------------------------------------------------+
string TimeframeToString(const ENUM_TIMEFRAMES timeframe)
{
return StringSubstr(EnumToString(timeframe),7);
}
//+------------------------------------------------------------------+
//| Draw Color Candle |
//+------------------------------------------------------------------+
void DrawColorCandle(const int shift,const double &open[],const double &high[],const double &low[],const double &close[])
{
BufferCandleO[shift]=open[shift];
BufferCandleH[shift]=high[shift];
BufferCandleL[shift]=low[shift];
BufferCandleC[shift]=close[shift];
BufferColors[shift]=(open[shift] lt close[shift] ? 0 : open[shift] gt close[shift] ? 1 : 2);
}
//+------------------------------------------------------------------+