Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 hoạt động dựa trên chỉ báo ngoằn ngoèo và các điểm trục quan trọng. Sau khi cài đặt chỉ báo này trong biểu đồ giá, bạn sẽ thấy các chấm màu trên và dưới chân nến. Hình thành các chấm đỏ hoặc vòng tròn phía trên nến có nghĩa là, những con gấu sẽ đẩy giá xuống trong tương lai gần. Ngược lại, sự hình thành các chấm màu xanh bên dưới chân nến có nghĩa là người mua sẽ đẩy giá cao hơn. Bạn cũng có thể tìm thấy sự thoái lui nhỏ của giá với sự trợ giúp của các chấm nhỏ màu nâu và xanh. Các chấm màu nâu hình thành phía trên nến có nghĩa là sự thoái lui giảm giá sẽ diễn ra. Ngược lại, khi bạn phát hiện ra một dấu chấm màu xanh, bạn có thể thấy mức tăng giá tăng. Tìm hiểu cách sử dụng công cụ này trong tài khoản demo để bạn có thể kiếm được lợi nhuận kha khá mà không mất quá nhiều tiền.
Cài đặt Boa_ZigZag_Arrows_Duplex 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 Boa_ZigZag_Arrows_Duplex.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 Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 có các tham số 2 để cấu hình.
input uint SlowLength=42; // ?5@8>4 <54;5==>3> 7837030
input uint FastLength=6; // ?5@8>4 1KAB@>3> 7837030
Bộ đệm của Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 cung cấp bộ đệm 4 .
SetIndexBuffer(0,ZigzagLawnBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ZigzagPeakBuffer1,INDICATOR_DATA);
SetIndexBuffer(2,ZigzagLawnBuffer2,INDICATOR_DATA);
SetIndexBuffer(3,ZigzagPeakBuffer2,INDICATOR_DATA);
Các bộ phận chính của bộ luật
int OnCalculate(const int rates_total, // : gt ;8G5AB2 gt 8AB gt @88 2 10@0E =0 B5:CI5 lt B8:5
const int prev_calculated,// : gt ;8G5AB2 gt 8AB gt @88 2 10@0E =0 ?@54K4CI5 lt B8:5
const datetime &time[],
const double &open[],
const double& high[], // F5= gt 2 gt 9 lt 0AA82 lt 0:A8 lt C lt gt 2 F5=K 4;O @0AG5B0 8=48:0B gt @0
const double& low[], // F5= gt 2 gt 9 lt 0AA82 lt 8=8 lt C lt gt 2 F5=K 4;O @0AG5B0 8=48:0B gt @0
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//---- ?@ gt 25@:0 : gt ;8G5AB20 10@ gt 2 =0 4 gt AB0B gt G= gt ABL 4;O @0AG5B0
if(rates_total lt min_rates_total) return(0);
//---- gt 1JO2;5=8O ; gt :0;L=KE ?5@5 lt 5==KE
int limit,climit,bar;
double HH,LL,BH,BL;
int zu,zd,Swing,Swing_n;
//----
limit=rates_total-min_rates_total; // AB0@B gt 2K9 = gt lt 5@ 4;O @0AGQB0 2A5E 10@ gt 2
climit=limit; // AB0@B gt 2K9 = gt lt 5@ 4;O @0A:@0A:8 8=48:0B gt @0
//---- 8=45:A0F8O M;5 lt 5=B gt 2 2 lt 0AA820E :0: 2 B09 lt A5@8OE
ArraySetAsSeries(high,true);
ArraySetAsSeries(low,true);
//----
Swing=0;
Swing_n=0;
zu=limit;
zd=limit;
BH=high[limit];
BL=low[limit];
//---- &8:; @0AGQB0 lt 54;5== gt 3 gt 7837030
for(bar=limit; bar gt =0 && !IsStopped(); bar--)
{
ZigzagLawnBuffer1[bar]=NULL;
ZigzagPeakBuffer1[bar]=NULL;
HH=high[ArrayMaximum(high,bar+1,SlowLength)];
LL=low[ArrayMinimum(low,bar+1,SlowLength)];
if(low[bar] lt LL && high[bar] gt HH)
{
Swing=2;
if(Swing_n== 1) zu=bar+1;
if(Swing_n==-1) zd=bar+1;
}
else
{
if(low [bar] lt LL) Swing=-1;
if(high[bar] gt HH) Swing= 1;
}
if(Swing!=Swing_n && Swing_n!=0)
{
if(Swing==2) {Swing=-Swing_n; BH=high[bar]; BL=low[bar];}
if(Swing== 1)
{
if(BL==low[zd]) ZigzagLawnBuffer1[zd]=BL;
else ZigzagLawnBuffer1[zd-1]=BL;
}
if(Swing==-1)
{
if(BH==high[zu]) ZigzagPeakBuffer1[zu]=BH;
else ZigzagPeakBuffer1[zu-1]=BH;
}
BH=high[bar];
BL=low [bar];
}
if(Swing== 1) {if(high[bar] gt =BH) {BH=high[bar]; zu=bar;}}
if(Swing==-1) {if(low [bar] lt =BL) {BL=low [bar]; zd=bar;}}
Swing_n=Swing;
}
//----
Swing=0;
Swing_n=0;
zu=limit;
zd=limit;
BH=high[limit];
BL=low[limit];
//---- &8:; @0AGQB0 1KAB@ gt 3 gt 7837030
for(bar=limit; bar gt =0 && !IsStopped(); bar--)
{
ZigzagLawnBuffer2[bar]=NULL;
ZigzagPeakBuffer2[bar]=NULL;
HH=high[ArrayMaximum(high,bar+1,FastLength)];
LL=low[ArrayMinimum(low,bar+1,FastLength)];
if(low[bar] lt LL && high[bar] gt HH)
{
Swing=2;
if(Swing_n== 1) zu=bar+1;
if(Swing_n==-1) zd=bar+1;
}
else
{
if(low [bar] lt LL) Swing=-1;
if(high[bar] gt HH) Swing= 1;
}
if(Swing!=Swing_n && Swing_n!=0)
{
if(Swing==2) {Swing=-Swing_n; BH=high[bar]; BL=low[bar];}
if(Swing== 1)
{
if(BL==low[zd]) ZigzagLawnBuffer2[zd]=BL;
else ZigzagLawnBuffer2[zd-1]=BL;
}
if(Swing==-1)
{
if(BH==high[zu]) ZigzagPeakBuffer2[zu]=BH;
else ZigzagPeakBuffer2[zu-1]=BH;
}
BH=high[bar];
BL=low [bar];
}
if(Swing== 1) {if(high[bar] gt =BH) {BH=high[bar]; zu=bar;}}
if(Swing==-1) {if(low [bar] lt =BL) {BL=low [bar]; zd=bar;}}
Swing_n=Swing;
}
//----
return(rates_total);
}
//+------------------------------------------------------------------+