Автор |
Сообщение |
Atlasraketa
Зарегистрирован: 12.07.2015
Сообщения: 136
|
Почему-то работает не стабильно, мерцает, то исчезает то появляется? Не видно на глаз ошибок каких-нибудь?
_SECTION_BEGIN("MAMA RIBBON");
prc = ( High + Low ) / 2;
fastlimit = 0.5;
slowlimit = 0.05;
pi=4*atan(1);
RTD=180/pi;
DTR=pi/180;
Cyclepart=Param("Alpha",0.5,0.1,1,0.1);
Smooth[0] = Period = Detrender[0] = I1[0] = Q1[0] = 0;
phase[0]=deltaphase[0]=MAMA[0]=FAMA[0]=0;
for ( i = 6; i < BarCount; i++ )
{
Smooth[i] = ( 4 * prc[i] + 3 * prc[i-1] + 2 * prc[i-2] + prc[i-3] ) / 10;
AmpCorr[i] = 0.075 * Period[i-1] + 0.54;
Detrender[i] = ( 0.0962 * Smooth[i] + 0.5769 * Smooth[i-2] - 0.5769 * Smooth[i-4] - 0.0962 * Smooth[i-6] ) * AmpCorr[i];
Q1[i] = ( 0.0962 * Detrender[i] + 0.5769 * Detrender[i-2] - 0.5769 * Detrender[i-4] - 0.0962 * Detrender[i-6] ) * AmpCorr[i];
I1[i] = Detrender[i-3];
if (I1[i] != 0) phase[i] = DTR*360/atan(q1[i]/I1[i]);
deltaphase[i]=phase[i-1]-phase[i];
if (deltaphase[i] <1) deltaphase[i]=1;
alpha[i]=fastlimit[i]/deltaphase[i];
if (alpha[i] < slowlimit[i]) alpha[i]=slowlimit[i];
MAMA[i]=alpha[i] * prc [i] +(1-alpha[i])*MAMA[i-1];
FAMA[i]=Cyclepart*alpha[i] * prc [i] +(1-Cyclepart*alpha[i])*FAMA[i-1];
}
//PlotOHLC(O,H,L,C,"MAMA",IIf(MAma>fama,colorLime,colorRed),styleBar|styleThick);
Plot(1, "ribbon", IIf( MAma>fama, colorlime, IIf( MAma<fama, colorrose, 0 )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );
_SECTION_END();
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
У меня не мерцает. Code Check дает время выполнение кода около секунды. Это долго. Вероятно поэтому у тебя и мерцает. Надо оптимизировать код чтобы он быстрее работал. Ща времени нет. Вечерком гляну. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Чета зацепила эта задача. Вот как надо писать на AFL. Пробуй.
Код: |
SetBarsRequired(sbrAll);
prc = ( High + Low ) / 2;
fastlimit = 0.5;
slowlimit = 0.05;
pi=4*atan(1);
RTD=180/pi;
DTR=pi/180;
Cyclepart=Param("Alpha",0.5,0.1,1,0.1);
Smooth = Period = Detrender = I1 = Q1 = 0;
phase = deltaphase = MAMA = FAMA = 0;
Smooth = ( 4 * prc + 3 * Ref(prc, -1) + 2 * Ref(prc, -2) + Ref(prc, -3)) / 10;
AmpCorr = 0.075 * Ref(Period, -1) + 0.54;
Detrender = ( 0.0962 * Smooth + 0.5769 * Ref(Smooth, -2) - 0.5769 * Ref(Smooth, -4) - 0.0962 * Ref(Smooth, -6) ) * AmpCorr;
Q1 = ( 0.0962 * Detrender + 0.5769 * Ref(Detrender, -2) - 0.5769 * Ref(Detrender, -4) - 0.0962 * Ref(Detrender, -6) ) * AmpCorr;
I1 = Ref(Detrender, -3);
phase = iif(I1 != 0, Nz(DTR*360/atan(Q1/I1)), 0);
deltaphase = Ref(phase, -1)-phase;
deltaphase = Max(deltaphase, 1);
alpha = fastlimit/deltaphase;
alpha = Max(alpha, slowlimit);
MAMA = AMA(prc, alpha);
FAMA = AMA(prc, Cyclepart*alpha);
PlotOHLC(O,H,L,C,"MAMA",IIf(MAma>fama,colorLime,colorRed),styleBar|styleThick);
Plot(1, "ribbon", IIf( MAma>fama, colorlime, IIf( MAma<fama, colorrose, 0 )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Atlasraketa
Зарегистрирован: 12.07.2015
Сообщения: 136
|
000 писал(а): |
Чета зацепила эта задача. Вот как надо писать на AFL. Пробуй.
Код: |
SetBarsRequired(sbrAll);
prc = ( High + Low ) / 2;
fastlimit = 0.5;
slowlimit = 0.05;
pi=4*atan(1);
RTD=180/pi;
DTR=pi/180;
Cyclepart=Param("Alpha",0.5,0.1,1,0.1);
Smooth = Period = Detrender = I1 = Q1 = 0;
phase = deltaphase = MAMA = FAMA = 0;
Smooth = ( 4 * prc + 3 * Ref(prc, -1) + 2 * Ref(prc, -2) + Ref(prc, -3)) / 10;
AmpCorr = 0.075 * Ref(Period, -1) + 0.54;
Detrender = ( 0.0962 * Smooth + 0.5769 * Ref(Smooth, -2) - 0.5769 * Ref(Smooth, -4) - 0.0962 * Ref(Smooth, -6) ) * AmpCorr;
Q1 = ( 0.0962 * Detrender + 0.5769 * Ref(Detrender, -2) - 0.5769 * Ref(Detrender, -4) - 0.0962 * Ref(Detrender, -6) ) * AmpCorr;
I1 = Ref(Detrender, -3);
phase = iif(I1 != 0, Nz(DTR*360/atan(Q1/I1)), 0);
deltaphase = Ref(phase, -1)-phase;
deltaphase = Max(deltaphase, 1);
alpha = fastlimit/deltaphase;
alpha = Max(alpha, slowlimit);
MAMA = AMA(prc, alpha);
FAMA = AMA(prc, Cyclepart*alpha);
PlotOHLC(O,H,L,C,"MAMA",IIf(MAma>fama,colorLime,colorRed),styleBar|styleThick);
Plot(1, "ribbon", IIf( MAma>fama, colorlime, IIf( MAma<fama, colorrose, 0 )), styleOwnScale|styleArea|styleNoLabel, -0.5, 100 );
|
|
Спасибо!
Так работает! А мерцание было на 15-минут и выше...
Сейчас и 15-ки и часовик стабильно) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|