BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 là chỉ báo tín hiệu đặt nhãn tín hiệu và vẽ nến tín hiệu khi và khi giá vượt qua Dải bollinger. Chỉ báo cung cấp cho các nhà giao dịch tùy chọn để chọn trong số hai phương pháp phân tích Dải bollinger:
1. Giá mở bên trong Dải bollinger và đóng bên ngoài;
2. Giá mở và đóng cửa bên ngoài Dải bollinger.
Nếu tham số chỉ báo, Hiển thị nến tín hiệu, được đặt thành Có, một nến tăng bên ngoài Dải bollinger phía dưới có màu Xanh lục, trong khi nến giảm bên ngoài Dải bollinger phía trên được sơn màu Cam.
Tín hiệu giao dịch được tạo bởi Chỉ số BB_OutsideCandle_Alert Đối với MT5 dường như hoạt động tương đối tốt hơn nếu chúng phù hợp với xu hướng thị trường thống trị.
Cài đặt BB_OutsideCandle_Alert Indicator For MT5
Sau khi bạn tải xuống chỉ báo qua biểu mẫu ở trên, bạn cần giải nén tệp zip. Sau đó, bạn cần sao chép tệp BB_OutsideCandle_Alert.mq5 vào thư mục MQL5Indicators cài đặt MT5 của bạn. Sau đó, vui lòng khởi động lại MT5 và sau đó bạn sẽ có thể thấy chỉ báo trong danh sách các chỉ báo.
Các tham số của BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 có các tham số 6 để cấu hình.
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
Bộ đệm của BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 cung cấp bộ đệm 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);
Các bộ phận chính của bộ luật
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);
}
//+------------------------------------------------------------------+