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



Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все

СообщениеДобавлено: Вс Июн 22, 2014 10:35 pm Ответить с цитатой Вернуться к началу

Опять функция PREV в формуле, не понимаю как перевести.

Код:
SVE_HA_Tema_ZL

avg := Input("Temagemiddelde? ",1,200,55);

haOpen:=(Ref((O+H+L+C)/4,-1) + PREV)/2;  -эта строка

haC:=((O+H+L+C)/4+haOpen+Max(H,haOpen)+Min(L,haOpen))/4;
TMA1:= Tema(haC,avg);
TMA2:= Tema(TMA1,avg);
Diff:= TMA1 - TMA2;
ZlHa:= TMA1 + Diff;
ZlHa

Перевёл так, на большее меня не хватило

Код:
THA = Param("Tema HA",55, 1, 200,1);

haOpen = Ref((O+H+L+C)/4,-1);// /2 AMA(

haC = ((O+H+L+C)/4 + haOpen + Max(H,haOpen) + Min(L,haOpen))/4;

TMA1 = TEMA(haC,THA);
TMA2 = TEMA(TMA1,THA);

Diff = TMA1 - TMA2;

ZlHa = TMA1 + Diff;

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


http://stocata.org/metastock/ha_tema.html
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Пн Июн 23, 2014 10:08 pm Ответить с цитатой Вернуться к началу

Вместо
Код:
haOpen:=(Ref((O+H+L+C)/4,-1) + PREV)/2;  -эта строка

напиши так
Код:
haOpen = 0;
OHLC = (O+H+L+C)/4;
for( i = 1; i < BarCount; i++ )
{
  haOpen[i] = (OHLC[i-1] + haOpen[i-1])/2;
}

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



Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все

СообщениеДобавлено: Пн Июн 23, 2014 11:41 pm Ответить с цитатой Вернуться к началу

Добрый вечер Олег!
Как всегда всё просто, как гениальное.

СПАСИБО!!!


Последний раз редактировалось: Skornet (Пн Июн 23, 2014 11:45 pm), всего редактировалось 1 раз
Посмотреть профиль Отправить личное сообщение
Skornet



Зарегистрирован: 22.02.2014
Сообщения: 31
Откуда: как и все

СообщениеДобавлено: Пн Июн 23, 2014 11:44 pm Ответить с цитатой Вернуться к началу

Кому интересно и пригодится, вся формула

Код:

Tpd = Param("TEMA period", 55, 1, 200, 1);

TMA1 = TEMA((H+L+C)/3,Tpd);

TMA2 = TEMA(TMA1,Tpd);

Diff = TMA1 - TMA2;

ZlCl = TMA1 + Diff;

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


THA = Param("Tema HA",55, 1, 200,1);

haOpen = 0;
OHLC = (O+H+L+C)/4;
for( i = 1; i < BarCount; i++ )
{
  haOpen[i] = (OHLC[i-1] + haOpen[i-1])/2;
}

haC = (OHLC + haOpen + Max(H,haOpen) + Min(L,haOpen))/4;

TMA1 = TEMA(haC,THA);
TMA2 = TEMA(TMA1,THA);

Diff = TMA1 - TMA2;

ZlHa = TMA1 + Diff;

Plot(ZlHa, "ZlHa", colorGreen, styleDots);
Посмотреть профиль Отправить личное сообщение
Nero Wolfe



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

СообщениеДобавлено: Ср Июн 25, 2014 12:05 pm Ответить с цитатой Вернуться к началу

По моему что то тут не так Smile
У вас ТМА1 и ТМА2 дважды рассчитывается в коде, но разными методами, правильно ли это?
В метастоковском коде эти две линии разделены в два индикатора, там все нормально, но тут вы их слили в один код...

Вдогонку с того же сайта индикатор SVAPO or "Short term Volume And Price Oscillator"

Код:
//calculate heikin-ashi closing average haCl
haOpen = 0;
OHLC = ( O + H + L + C ) / 4;

for ( i = 1; i < BarCount; i++ )
{
    haOpen[i] = ( OHLC[i-1] + haOpen[i-1] ) / 2;
}

haCl = ( ( O + H + L + C ) / 4 + haOpen + Max( H, haOpen ) + Min( L, haOpen ) ) / 4;
//inputs
period = Param( "SVAPO period", 8, 2, 20, 1 );
cutoff = Param( "Minimum %o price change", 0.05, 0, 10, 0.01 );
devH = Param( "StDev High", 1.5, 0.1, 5, 0.1 );
devL = Param( "StDev Low", 1.3, 0.1, 5, 0.1 );
stdevper = Param( "StDev Period", 100, 1, 200, 1 );
//Smooth HaCl closing price
haC = Tema( haCl, period / 1.6 );
//MA of Volume to limit extremes
vave = Ref( MA( V, period * 5 ), -1 );
vmax = vave * 2;
vc = IIf( V < vmax, V, vmax );
//Basic volume trend
vtr = Tema( LinRegSlope( V, period ), period );
//SVAPO result of price and volume
SVAPO = Tema( Sum( IIf( haC > ( Ref( haC, -1 ) * ( 1 + cutoff / 1000 ) ) AND  ( vtr >= Ref( vtr, -1 ) OR Ref(vtr,-1) >= Ref( vtr, -2 ) ), vc, IIf( haC < ( Ref( haC, -1 ) * ( 1 - cutoff / 1000 ) ) AND ( vtr > Ref( vtr, -1 ) OR Ref(vtr,-1) > Ref( vtr, -2 ) ), -vc, 0 ) ), period ) / ( vave + 1 ), period );
Plot( devH*Stdev( SVAPO, stdevper ), "", colorWhite, styleDashed );
Plot( -devL*Stdev( SVAPO, stdevper ), "", colorWhite, styleDashed );
Plot( 0, "", colorWhite, styleline );
Plot( SVAPO, "SVAPO", colorBlue, styleLine );


вроде получилось что то похожее на его картинку Smile
хотя у меня есть сомнения по поводу вот такого куска метастоковского кода:
Код:
Alert(vtr>=Ref(vtr,-1),2)

судя по описанию похоже на функцию Hold, но не уверен...
Цитата:
It's used in conjunction with other functions to extend a signal for a specified number of periods. In other words, it holds an expression as true for as long as we wish. http://www.meta-formula.com/metastock-alert-function.html

я перевел вот так:
Код:
( vtr > Ref( vtr, -1 ) OR Ref(vtr,-1) > Ref( vtr, -2 ) )

_________________
Если вас грызет совесть, выбейте ей зубы, и пусть она вас нежно обсасывает.
Посмотреть профиль Отправить личное сообщение
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen