Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Мерцает индюк Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
Atlasraketa



Зарегистрирован: 12.07.2015
Сообщения: 133

СообщениеДобавлено: Чт Мар 10, 2016 10:06 am Ответить с цитатой Вернуться к началу

Почему-то работает не стабильно, мерцает, то исчезает то появляется? Не видно на глаз ошибок каких-нибудь?

_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();
Sad
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 8509

СообщениеДобавлено: Чт Мар 10, 2016 3:45 pm Ответить с цитатой Вернуться к началу

У меня не мерцает. Code Check дает время выполнение кода около секунды. Это долго. Вероятно поэтому у тебя и мерцает. Надо оптимизировать код чтобы он быстрее работал. Ща времени нет. Вечерком гляну.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 8509

СообщениеДобавлено: Чт Мар 10, 2016 4:19 pm Ответить с цитатой Вернуться к началу

Чета зацепила эта задача. Вот как надо писать на 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
Сообщения: 133

СообщениеДобавлено: Чт Мар 10, 2016 5:02 pm Ответить с цитатой Вернуться к началу

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 );



Спасибо! Very Happy

Так работает! А мерцание было на 15-минут и выше...
Сейчас и 15-ки и часовик стабильно)
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen