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



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

СообщениеДобавлено: Ср Дек 17, 2008 5:37 am Ответить с цитатой Вернуться к началу

Цитата:
Переменная скользящая средняя - это экспоненциальная скользящая средняя, которая автоматически корректирует константу сглаживания, исходя из волатильности ряда данных. Чем более изменчивы данные, тем больше константа сглаживания, используемая в расчете скользящей средней. Чем больше константа сглаживания, тем больший вес придается текущим данным. Противоположное справедливо для менее изменчивых данных.

Трейдеры часто ассоциируют высокую волатильность с сильными трендовыми рынками. Однако это ошибка. Сильные трендовые рынки часто менее волатильны из-за постоянства ежедневных изменений цен. Когда дневные движения цен беспорядочны (то есть много вниз, немного вверх, немного вверх, много вверх, немного вверх, немного вниз и т.д.), волатильность увеличивается. Такое явление может происходить и на восходящих, и на нисходящих, и на боковых рынках.

Обычные скользящие средние страдают от неспособности компенсировать скачки волатильности. Во время изменчивых рынков вам нужно, чтобы скользящая средняя увеличивала свою чувствительность, позволяя вам быстро переходить на правильную сторону при любых диких циркуляциях. Автоматически корректируя константу сглаживания, переменная скользящая средняя может регулировать свою чувствительность, работая в результате лучше и на высоковолатильных, и на низковолатильных рынках.

VMA = (0.78*(volatility index) * close) + (1-0.078 * volatility index)*yesterday's VMA

Абсолютное значение 9-периодичного осциллятора моментума Чанде используется в качестве индекса волатильности. Чем выше этот индекс, тем более волатилен рынок, увеличивая в результате чувствительность скользящей средней.

Этот метод расчета переменной скользящей средней представлен Тушаром Чанде в мартовском 1992 года выпуске журнала Technical Analysis of Stocks & Commodities.


Как это написать в Ами?
У меня вот что получилось:
Код:
function VMA2( f )
{
     VMA = 0;
     for( i = 1; i < BarCount; i++ )
     {

     VMA[ i ] = f[i] * VMA[ i - 1 ];

     }

   return VMA;
}

x = (0.078 * (ATR(9) * Close) + (1 - 0.078 * ATR(9)));

Plot(Vma2(x),"VMA",colorRed);


но ничего не рисуется. Может есть идеи?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 17, 2008 9:16 am Ответить с цитатой Вернуться к началу

Вот так
Код:

VMA = AMA(C, 0.078*volatility index);

Plot(VMA,"VMA",colorRed);

Только надо иметь ввиду, что volatility index должен быть меньше единицы. Поэтому просто брать ATR нельзя.

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


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

СообщениеДобавлено: Ср Дек 17, 2008 9:45 am Ответить с цитатой Вернуться к началу

Точнее 0.078*volatility index должно быть меньше единицы

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



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

СообщениеДобавлено: Ср Дек 17, 2008 2:14 pm Ответить с цитатой Вернуться к началу

Что брать за volatility index?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Ср Дек 17, 2008 2:24 pm Ответить с цитатой Вернуться к началу

Vladimir писал(а):
Что брать за volatility index?

А я откуда знаю? Я Чанда плохо помню.

Можно взять отношение сигнал/шум Тогда мувинг Кауфмана получится.
Код:

fast = 2/(2+1);
slow = 2/(30+1);
dir=abs(close-ref(close,-10));
vol=sum(abs(close-ref(close,-1)),10);
ER=dir/vol;
sc =( ER*(fast-slow)+slow)^2;
Plot(ama( close, sc ), "AMA", ColorRed);

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



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

СообщениеДобавлено: Ср Дек 17, 2008 3:11 pm Ответить с цитатой Вернуться к началу

Код:
alt1:=(Sum(MACD(),3)+MACD())/2;
voltrend:=(C-Ref(C,-3))+(Ref(Mov((Cum(Ref(V,-3)/Cum(V))),5,TIMESERIES),-3));
vt2:=((Sum(voltrend,4)/4)-Ref(Mov(voltrend,15,VARIABLE),-5));
KP0102:=(C-Ref(MP(),-8))+MP();
vr1:=((VOLUME +Ref(VOLUME,-3)+Ref(VOLUME,-5)/MP())/10)+C;
KPVPM:=Ref(Mov((((KP0102/vr1)+(C-Ref(MP(),-3)))+C),3,SIMPLE),-6);
KPBLEND7A:=(Mov(SAR(.01,.10),15,WEIGHTED)+Dema(C,20))/2;
kp117:=Ref((Mov(((((KP0102+KPVPM+KPBLEND7A)/3)+(Ref(KPVPM,-8)))/2),3,SIMPLE)),-4);
KPPATTERN:=((vt2+(MACD()-Mov(MACD(),9,E))+(C-kp117)))+alt1;
KPSECONDLINE:=(( KPPATTERN+MP())-Ref(Mov(KPPATTERN,15,WEIGHTED),-5));
SLOVAR:=Ref(Mov((Mov(KPSECONDLINE,3,VARIABLE)),5,VARIABLE),-2);
KP101:=(((C-Ref(MP(),-8))+MP()) + SLOVAR)/2;
KPlowline:=Ref(Mov((((Ref(L,-2)-L))+L),6,WEIGHTED),-3);
zapper:=((KPlowline+SAR(.02,.20)+L)/3)*1.0015;
tr6:=(KP101+zapper)/2;
KP104:=((((Ref(Mov(((((C-Ref(C,-4))+MP())+Ref(((C-Ref(C,-4))+MP()),-1)+Ref(((C-Ref(C,-4))+MP()),-2))/3),6,SIMPLE),-2))+ (Mov(SAR(.02,.20),5,VARIABLE)))/2)+(Mov(SAR(.02,.20),5,VARIABLE)))/2;
TR4:=(tr6+KP104)/2;
DELTAs:=(KP0102+KPVPM+KPBLEND7A)/3;

//UP
Cross( C,  SAR(.02 ,.2 ) )
AND
C> TR4

//down
Cross(  SAR(.02 ,.2 ),C )
AND
C< TR4


Вот такая сисемка есть в Метстоке, но как в ами преревсти не знаю, здесь используется этот код, но еще много чего, что не могу разрешить. В МС все красиво выглядит на 5-мин.
Посмотреть профиль Отправить личное сообщение
ID
Советник


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

СообщениеДобавлено: Чт Дек 18, 2008 5:28 am Ответить с цитатой Вернуться к началу

Какой конкретно кусок кода не можешь перевести?
Посмотреть профиль Отправить личное сообщение
Vladimir



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

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

практически все, самая сложность с мувингами и MP() - что это?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Дек 18, 2008 11:38 pm Ответить с цитатой Вернуться к началу

MP - median price.
Это иногда (H+L)/2, иногда (H+L+C)/3
А метастоке (H+L)/2

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



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

СообщениеДобавлено: Пт Дек 19, 2008 12:07 am Ответить с цитатой Вернуться к началу

а это как заменить
Код:
Mov(voltrend,15,VARIABLE)


может так?
Код:
fast = 2/(2+1);
slow = 2/(30+1);
dir=abs(voltrend-ref(voltrend,-10));
vol=sum(abs(voltrend-ref(voltrend,-1)),10);
ER=dir/vol;
sc =( ER*(fast-slow)+slow)^2;
Plot(ama( voltrend, sc ), "AMA", ColorRed);

просто все Close = voltrend Question
Посмотреть профиль Отправить личное сообщение
Vladimir



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

СообщениеДобавлено: Пт Дек 19, 2008 12:23 am Ответить с цитатой Вернуться к началу

Код:
MP = (H+L)/2;

alt1=(Sum(MACD(),3)+MACD())/2;
voltrend=(C-Ref(C,-3))+(Ref(TSF((Cum(Ref(V,-3)/Cum(V))),5),-3));

VMA1 = AMA(voltrend, 0.078*ATR(15)/12);

vt2=((Sum(voltrend,4)/4)-Ref(VMA1,-5));
KP0102=(C-Ref(MP,-8))+MP;
vr1=((Volume +Ref(Volume,-3)+Ref(Volume,-5)/MP)/10)+C;
KPVPM=Ref(MA((((KP0102/vr1)+(C-Ref(MP,-3)))+C),3),-6);
KPBLEND7A=(WMA(SAR(.01,.10),15)+DEMA(C,20))/2;
kp117=Ref((MA(((((KP0102+KPVPM+KPBLEND7A)/3)+(Ref(KPVPM,-8)))/2),3)),-4);
KPPATTERN=((vt2+(MACD()-EMA(MACD(),9))+(C-kp117)))+alt1;
KPSECONDLINE=(( KPPATTERN+MP)-Ref(WMA(KPPATTERN,15),-5));

VMA2 = AMA(KPSECONDLINE, 0.078*ATR(3)/12);

SLOVAR=Ref(AMA(VMA2, 0.078*ATR(5)/12),-2);

KP101=(((C-Ref(MP,-8))+MP) + SLOVAR)/2;
KPlowline=Ref(WMA((((Ref(L,-2)-L))+L),6),-3);
zapper=((KPlowline+SAR(.02,.20)+L)/3)*1.0015;
tr6=(KP101+zapper)/2;
KP104=((((Ref(MA(((((C-Ref(C,-4))+MP)+Ref(((C-Ref(C,-4))+MP),-1)+Ref(((C-Ref(C,-4))+MP),-2))/3),6),-2))+ (AMA(SAR(.02,.20), 0.078*ATR(5)/12)))/2)+(AMA(SAR(.02,.20), 0.078*ATR(5)/12)))/2;
TR4=(tr6+KP104)/2;
DELTAs=(KP0102+KPVPM+KPBLEND7A)/3;

//up
Buy = Cross( C,  SAR(.02 ,.2 ) ) AND C> TR4;

//down
Sell = Cross(  SAR(.02 ,.2 ),C ) AND C< TR4;

Short= Sell;
Cover= Buy;

Buy=ExRem(Buy,Sell);
Sell=ExRem(Sell,Buy);
Short=ExRem(Short,Cover);
Cover=ExRem(Cover,Short);

///////////// Рисуем всякое ///////////////

_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) Vol " +WriteVal( V, 1.0 ) +" {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 )) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
if( ParamToggle("Tooltip shows", "All Values|Only Prices" ) )
{
 ToolTip=StrFormat("Open: %g\nHigh:  %g\nLow:   %g\nClose:  %g (%.1f%%)\nVolume: "+NumToStr( V, 1 ), O, H, L, C, SelectedValue( ROC( C, 1 )));
}
_SECTION_END();

PlotShapes(IIf(Buy,shapeUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Sell,shapeDownArrow,0),4,0,Graph0,-15);
PlotShapes(IIf(Cover,shapeHollowUpArrow,0),5,0,Graph0,-15);
PlotShapes(IIf(Short,shapeHollowDownArrow,0),4,0,Graph0,-15);


вот что получилось, но где ошибка, нет никаких стрелок?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пт Дек 19, 2008 1:09 am Ответить с цитатой Вернуться к началу

Если из условий Buy и Sell убрать условия сравнения TR4 и Сб то стрелки рисует
Вывел на график эту TR4. Результат на картинке. Конечно никакого C > TR4 небывает. Собственно поэтому и стрелок нет. Вероятно ошибка в коде вычисляющем TR4.
А чтобы график раскрасить надо при выводе свечек
Код:

Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

менять цвет. Вот пример из хелпера как это делать
Код:

dynamic_color = IIf( MACD() > 0, colorGreen, colorRed );
Plot( MACD(), "My MACD", dynamic_color, styleHistogram | styleThick  );

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



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

СообщениеДобавлено: Пт Дек 19, 2008 2:18 am Ответить с цитатой Вернуться к началу

Все дело в этом мувинге:
Код:
Mov(ARRAY,Range,VARIABLE)
Посмотреть профиль Отправить личное сообщение
Плюсадин



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

СообщениеДобавлено: Пт Дек 19, 2008 7:30 am Ответить с цитатой Вернуться к началу

Vladimir писал(а):
Код:
MP = (H+L)/2;

alt1=(Sum(MACD(),3)+MACD())/2;
voltrend=(C-Ref(C,-3))+(Ref(TSF((Cum(Ref(V,-3)/Cum(V))),5),-3));

VMA1 = AMA(voltrend, 0.078*ATR(15)/12);

vt2=((Sum(voltrend,4)/4)-Ref(VMA1,-5));
KP0102=(C-Ref(MP,-8))+MP;
vr1=((Volume +Ref(Volume,-3)+Ref(Volume,-5)/MP)/10)+C;
KPVPM=Ref(MA((((KP0102/vr1)+(C-Ref(MP,-3)))+C),3),-6);
KPBLEND7A=(WMA(SAR(.01,.10),15)+DEMA(C,20))/2;
kp117=Ref((MA(((((KP0102+KPVPM+KPBLEND7A)/3)+(Ref(KPVPM,-8)))/2),3)),-4);
KPPATTERN=((vt2+(MACD()-EMA(MACD(),9))+(C-kp117)))+alt1;
KPSECONDLINE=(( KPPATTERN+MP)-Ref(WMA(KPPATTERN,15),-5));

VMA2 = AMA(KPSECONDLINE, 0.078*ATR(3)/12);

SLOVAR=Ref(AMA(VMA2, 0.078*ATR(5)/12),-2);

KP101=(((C-Ref(MP,-8))+MP) + SLOVAR)/2;
KPlowline=Ref(WMA((((Ref(L,-2)-L))+L),6),-3);
zapper=((KPlowline+SAR(.02,.20)+L)/3)*1.0015;
tr6=(KP101+zapper)/2;
KP104=((((Ref(MA(((((C-Ref(C,-4))+MP)+Ref(((C-Ref(C,-4))+MP),-1)+Ref(((C-Ref(C,-4))+MP),-2))/3),6),-2))+ (AMA(SAR(.02,.20), 0.078*ATR(5)/12)))/2)+(AMA(SAR(.02,.20), 0.078*ATR(5)/12)))/2;
TR4=(tr6+KP104)/2;
DELTAs=(KP0102+KPVPM+KPBLEND7A)/3;

//up
Buy = Cross( C,  SAR(.02 ,.2 ) ) AND C> TR4;

//down
Sell = Cross(  SAR(.02 ,.2 ),C ) AND C<TR4> TR4
AND C<TR4> 0, colorBlue, colorRed );
Plot( C, "Close",  dynamic_color, styleNoTitle | ParamStyle("Style") | GetPriceStyle() );





Убрать (как и писал Олег):
Код:
AND C> TR4
AND C< TR4


Чтобы цвета были, добавить:
вместо


Код:
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );


написать:


Код:
dynamic_color = IIf( MACD() > 0, colorBlue, colorRed );
Plot( C, "Close",  dynamic_color, styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
Посмотреть профиль Отправить личное сообщение
Vladimir



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

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

Цитата:
Убрать (как и писал Олег):
Код:
Код:
AND C> TR4
AND C< TR4


В этом вся фишка, этот код отсеивает ложные сигналы, так что без него система бессмысленна.

Цвета не нужны. Главное, чтобы TR4 рисовался, а остальное - ерунда.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen