Boa_ZigZag_Arrows_Duplex Indicator For MT5
L' Boa_ZigZag_Arrows_Duplex Indicator For MT5 funziona in base all'indicatore a zigzag e ai punti critici di rotazione. Dopo aver installato questo indicatore nel grafico dei prezzi, noterai dei punti colorati sopra e sotto i candelabri. La formazione dei punti rossi o del cerchio sopra il candeliere significa che gli orsi abbasseranno il prezzo nel prossimo futuro. Al contrario, la formazione dei punti blu sotto il candeliere significa che i compratori spingeranno il prezzo più in alto. Puoi anche trovare il ritracciamento minore del prezzo con l'aiuto di piccoli punti di colore marrone e blu. Puntini di colore marrone che si formano sopra il candeliere indicano che il ritracciamento ribassista avrà luogo. Al contrario, quando vedi un punto blu, potresti vedere un ritracciamento rialzista nel prezzo. Impara a utilizzare questo strumento nell'account demo in modo da poter realizzare un profitto decente senza perdere troppi soldi.
Installazione della Boa_ZigZag_Arrows_Duplex Indicator For MT5
Dopo aver scaricato l'indicatore tramite il modulo sopra è necessario decomprimere il file zip. Quindi è necessario copiare il file Boa_ZigZag_Arrows_Duplex.mq5 nella cartella MQL5Indicators dell'installazione di MT5 . Dopodiché, riavvia MT5 e sarai in grado di vedere l'indicatore nell'elenco degli indicatori.
Parametri della Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 ha i parametri 2 da configurare.
input uint SlowLength=42; // ?5@8>4 <54;5==>3> 7837030
input uint FastLength=6; // ?5@8>4 1KAB@>3> 7837030
Buffer della Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 fornisce buffer 4 .
SetIndexBuffer(0,ZigzagLawnBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ZigzagPeakBuffer1,INDICATOR_DATA);
SetIndexBuffer(2,ZigzagLawnBuffer2,INDICATOR_DATA);
SetIndexBuffer(3,ZigzagPeakBuffer2,INDICATOR_DATA);
Parti principali del codice
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);
}
//+------------------------------------------------------------------+