BB_OutsideCandle_Alert Indicator For MT5
BB_OutsideCandle_Alert Indicator For MT5 عبارة عن مؤشر إشارة يضع ملصقات الإشارة BB_OutsideCandle_Alert Indicator For MT5 شموع الإشارة عند اختراق السعر عبر البولنجر باند. يوفر المؤشر للمتداولين خيارًا للاختيار من بين طريقتين لتحليل بولينجر باند:
1. افتتاح السعر داخل البولنجر باند وإغلاقه بالخارج.
2. فتح وإغلاق السعر خارج البولنجر باند.
إذا تم ضبط معلمة المؤشر ، إظهار شموع الإشارة ، على نعم ، فإن الشمعة الصعودية خارج نطاق بولينجر السفلي ملونة باللون الأخضر ، في حين يتم رسم شمعة هبوطية خارج نطاق بولينجر العلوي باللون البرتقالي.
يبدو أن إشارات التداول التي تم إنشاؤها بواسطة مؤشر BB_OutsideCandle_Alert لـ MT5 أفضل أداءً نسبيًا إذا كانت تتماشى مع الاتجاه السائد في السوق.
تثبيت BB_OutsideCandle_Alert Indicator For MT5
بعد تنزيل المؤشر عبر النموذج أعلاه ، ستحتاج إلى فك ضغط ملف zip. ثم تحتاج إلى نسخ الملف BB_OutsideCandle_Alert.mq5 في المجلد MQL5Indicators تثبيت MT5 . بعد ذلك ، يرجى إعادة تشغيل MT5 وبعد ذلك ستتمكن من رؤية المؤشر في قائمة المؤشرات.
معلمات BB_OutsideCandle_Alert Indicator For MT5
و BB_OutsideCandle_Alert Indicator For MT5 ديه 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
مخازن BB_OutsideCandle_Alert Indicator For MT5
و BB_OutsideCandle_Alert Indicator For MT5 يوفر 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);
الأجزاء الرئيسية من المدونة
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);
}
//+------------------------------------------------------------------+