Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 práci s Boa_ZigZag_Arrows_Duplex Indicator For MT5 založenou na ukazateli klikatá a kritických bodech otáčení. Po instalaci tohoto ukazatele do cenové tabulky si všimnete barevných teček nad a pod svícny. Tvorba červených teček nebo kruhu nad svícnem znamená, že medvědi v blízké budoucnosti sníží cenu dolů. Naopak, tvorba modrých teček pod svícnem znamená, že kupující budou tlačit cenu výše. Drobné stažení ceny najdete také pomocí malých teček hnědé a modré barvy. Hnědé barevné tečky, které se tvoří nad svícnem, znamenají, že se objeví medvědí retracement. Naopak, když spatříte modré tečky, můžete vidět cenu býčího retracementu. Naučte se používat tento nástroj v demo účtu, abyste mohli slušně profitovat, aniž byste ztratili příliš mnoho peněz.
Instalace Boa_ZigZag_Arrows_Duplex Indicator For MT5
Po stažení indikátoru pomocí výše uvedeného formuláře je třeba rozbalit zip soubor. Pak musíte zkopírovat soubor Boa_ZigZag_Arrows_Duplex.mq5 do složky MQL5Indicators vaší instalace MT5 . Poté prosím restartujte MT5 a poté uvidíte indikátor v seznamu indikátorů.
Parametry Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 obsahuje parametry 2 lze nakonfigurovat.
input uint SlowLength=42; // ?5@8>4 <54;5==>3> 7837030
input uint FastLength=6; // ?5@8>4 1KAB@>3> 7837030
Vyrovnávací Boa_ZigZag_Arrows_Duplex Indicator For MT5
Boa_ZigZag_Arrows_Duplex Indicator For MT5 4 Boa_ZigZag_Arrows_Duplex Indicator For MT5 poskytuje vyrovnávací paměti 4 .
SetIndexBuffer(0,ZigzagLawnBuffer1,INDICATOR_DATA);
SetIndexBuffer(1,ZigzagPeakBuffer1,INDICATOR_DATA);
SetIndexBuffer(2,ZigzagLawnBuffer2,INDICATOR_DATA);
SetIndexBuffer(3,ZigzagPeakBuffer2,INDICATOR_DATA);
Hlavní části Kodexu
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);
}
//+------------------------------------------------------------------+