оказывается, эта ошибка уже исправлена, просто не входит в стандартгную поставку. Вы можете скачать привальный вариант из 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лександр Ник.Гр.