оказывается, эта ошибка уже исправлена, просто не входит в стандартгную поставку. Вы можете скачать привальный вариант из Code Base - "MQL4: Параболическая Система SAR, Parabolic SAR"
Спасибо за ответ. Я попробовал сделать свой вариант и у меня получилось с об'емом кода где-то в три раза меньше, но это я думаю не очень принципиально.
На всякий случай, может пригодится привожу код своего варианта.
//--------------------------------
extern double hrZD=100;
extern double hrmax=10;
extern int i0=0;
extern bool SPR=false;
//--------------------
double zah[],zal[],zas[];
double H,L,zh,zl,spr,ki,kii,ci,kimax;
int ti,fs,nn;
//********************************************************
int init()
{
SetIndexBuffer(0,zah);
SetIndexBuffer(1,zal);
SetIndexBuffer(2,zas);
return(0);
}
//********************************************************
int start()
{
int cbi,IC=Bars-IndicatorCounted()-1;
if (IC==1 || IC==0) cbi=IC; else
{
if (IC<0) return(0);
if (SPR) spr=MarketInfo(Symbol(),MODE_SPREAD)*Point; else spr=0.0;
cbi=Bars-2-i0;
ki=2.0/(hrZD*60.0/Period()); kii=ki;
kimax=2.0/(hrmax*60.0/Period());
zh=High[cbi+i0]+spr; zah[cbi+1]=zh;
zl=Low[cbi+i0]; zal[cbi+1]=zl;
nn=0;
ti=Time[cbi];
}
//------------------------------------------------------------------------------------------------------------------------------
for(int i=cbi; i>=0; i--)
{
if (ti!=Time[i]) {nn=0; ti=Time[i];}
H=High[i+i0]+spr; L=Low[i+i0];
//----------------------------------------------------------------------------
if (fs==1 && nn==0) {zl=zal[i+1]+(zh-zal[i+1])*kii; if (nn==0 && H>zah[i+1] && kii+ki<=kimax) {kii+=ki; nn=1;}}
if (fs==2 && nn==0) {zh=zah[i+1]+(zl-zah[i+1])*kii; if (nn==0 && L<zal[i+1] && kii+ki<=kimax) {kii+=ki; nn=1;}}
if (fs==1)
{
ci=Low[i+1+i0]; if (zl>ci) zl=ci;
ci=Low[i+2+i0]; if (zl>ci) zl=ci;
}
if (fs==2)
{
ci=High[i+1+i0]+spr; if (zh<ci) zh=ci;
ci=High[i+2+i0]+spr; if (zh<ci) zh=ci;
}
if (H>zh) {zh=H; if (fs==2) {zl=zal[i+1]; kii=ki; nn=1;} fs=1;}
if (L<zl) {zl=L; if (fs==1) {zh=zah[i+1]; kii=ki; nn=1;} fs=2;}
//--------------------------------------------------------------
zah[i]=zh;
zal[i]=zl;
zas[i]=(zh+zl)/2;
//----------------------------------------------------
}
//------------------------------------------------------
return(0);
}
//********************************************************
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Индикатор Parabolic, который приведен в примерах расчета индикаторов в стандартной поставке МТ4 на реале или на тесте сбивается и неправильно считает как только бары начинают двигаться. Это хорошо видно на визуализации.
С ув. Aлександр Ник.Гр.