|
AmiSite.ru
Форум по Ами |
Автор |
Сообщение |
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
Олег, привет!
В очередной раз увидел на сайте индикатор - точки перегиба: http://www.amisite.ru/afl/ind/0003.php и решил попробовать
В нём пара опечаток:
Код: |
<TITLE>
==Нидикаторы. Точки перегиба.==
</TITLE> |
Наверное, надо написать "ИНдикаторы", а не как в коде "НИдикаторы"?
Или так и задумывалось?
И в самом коде написано:
Код: |
// Фильтр с бесконечной импульсной характеристикой
function IIR2( input, f0, f1, f2 )
{
IIR[ 0 ] = input[ 0 ];
IIR[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
IIR[ i ] = f0 * input[ i ] + f1 * IIR[ i - 1 ] + f2 * IIR[ i - 2 ];
}
return IIR;
}
|
У меня амик ругается, пишет всякие нехорошие слова, которые приведены на картинке IIR2.png во вложении.
если исправить IIR2 на result, чтоб Амик не трактовал, к примеру, IIR[ 0 ] как вызов функции, а обращался к соответствующему элементу массива IIR:
Код: |
// Фильтр с бесконечной импульсной характеристикой
function IIR2( input, f0, f1, f2 )
{
result[ 0 ] = input[ 0 ];
result[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
result[ i ] = f0 * input[ i ] + f1 * result[ i - 1 ] + f2 * result[ i - 2 ];
}
return result;
}
|
то вроде работает нормально |
|
|
Посмотреть профиль Отправить личное сообщение |
|
il-ir
Зарегистрирован: 28.05.2013
Сообщения: 189
|
и заодно в этом самом первом коде
Цитата: |
Можно использовать это свойство и при сглаживании рыночных цен. Для этого необходимо применить фильтр, дающий линию максимально похожую на синусоиду. В файле помощи AmiBroker есть пример фильтра IIR2 (infinite impulse response) – фильтра с бесконечной импульсной характеристикой.
Код: |
k=Param("k", 0.3, 0.1, 0.7, 0.1);
function IIR2( input, f0, f1, f2 )
{
IIR[ 0 ] = input[ 0 ];
IIR[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
IIR[ i ] = f0 * input[ i ] + f1 * IIR[ i - 1 ] + f2 * IIR[ i - 2 ];
}
return IIR;
} |
|
может быть, тоже исправить IIR2 на result:
Код: |
function IIR2( input, f0, f1, f2 )
{
result[ 0 ] = input[ 0 ];
result[ 1 ] = input[ 1 ];
for( i = 2; i < BarCount; i++ )
{
result[ i ] = f0 * input[ i ] +
f1 * result[ i - 1 ] +
f2 * result[ i - 2 ];
}
return result;
}
|
, чтоб было правильно? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Это все потому, что индикатор написан давно, когда IIR еще не был зарезервирован.
А теперь это функция в AFL. Поэтому и надо заменить IIR на что угодно не зарезервированное.
Спасибо! |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
| |