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



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

СообщениеДобавлено: Пт Фев 13, 2009 2:37 pm Ответить с цитатой Вернуться к началу

Раскопал старый индикатор Duke Nuckem'а написанного по мотивам John Ehlers, мне понравилось, т.к. работает получше скользящих средних, но есть несколько вопросов:
1. что именно считается в
Код:
function
и как это потом вылазит в значения индикатора!? у меня с циклами в Ами полная задница - не понимаю я их! (((
остальное потом...

Код:
// 4-element Laguerre filter.
// Begin common parameters section
ColourLF4      = ParamColor("Colour", colorRed);
StyleLF4       = ParamStyle("Style");
DampingFactor  = Param     ("Damping factor", 0.8, 0, 1, 0.1);
// End common parameters section

SetBarsRequired(200, 0);

function LF4(Array, Gamma)
{
   L0 = Array;
   L1 = Array;
   L2 = Array;
   L3 = Array;
   Value = Array;

   for(i = 1; i < BarCount; i++)
   {
      L0[i] = (1 - Gamma) * Array[i] + Gamma           * L0[i-1];
      L1[i] = - Gamma     * L0[i]    + L0[i-1] + Gamma * L1[i-1];
      L2[i] = - Gamma     * L1[i]    + L1[i-1] + Gamma * L2[i-1];
      L3[i] = - Gamma     * L2[i]    + L2[i-1] + Gamma * L3[i-1];

      Value[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6;
   }
   
   return Value;
}

Input = C;
ValueLF4 = LF4(Input, DampingFactor);

Plot(ValueLF4, "4-element Laguerre filter", ColourLF4, StyleLF4);

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пт Фев 13, 2009 9:50 pm Ответить с цитатой Вернуться к началу

Считается там сам Laguerre filter. Там несколько раз перерасчитываются значения на текущем и прошлом баре... В данном случае берется цена закрытия
А function (почитай в хелпере я перевел) позволяет типа создовать свои функции в AFL.
Например можно создать функцию
Код:
function Мой индикатор(a, b, c, d)
{
  РАСЧЕТ НА ОСНОВЕ a, b, c, d
}

и потом в коде использовать Мой индикатор просто как стандартную функцию AFL

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



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

СообщениеДобавлено: Сб Фев 14, 2009 7:08 am Ответить с цитатой Вернуться к началу

То, что ты рассказал - этом мне и так было понятно, особенно то, что считается Laguerre Filter Smile , я немного про другое спрашивал!
Там нигде нет инициализации Array и Gamma! Только уже после завершения function, становится отдаленно понятно, что Array = Input = Close, а Gamma = Damping Factor, но появляются они уже после окончания всех циклов, разве нет! Соответственно вопрос: что считает цикл? Или есть нюансы, о которых нужно знать!?

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Сб Фев 14, 2009 8:21 am Ответить с цитатой Вернуться к началу

Понятно.
функция считается только в момент её вызова. Вызывается она в предпоследней строке ( перед plot ), при этом, при вызове, в функцию передаются два заранее определенных параметра Input и DampingFactor
Внутри функции эти параметры обзываются соответственно Array и Gamma.

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



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

СообщениеДобавлено: Пн Фев 16, 2009 6:14 am Ответить с цитатой Вернуться к началу

Вот теперь стало хоть чуть-чуть светлее в голове! Smile
Только вот обязательно ли громоздить:
Код:
Input = C;
ValueLF4 = LF4(Input, DampingFactor);

Насколько я понимаю можно Input сразу заменить Close, или нет?

Вопрос номер два: куда в данном индикаторе нужно вставить:
Код:
TimeFrameSet(in5minute)
чтобы соответственно рисовался пятиминутный график (без TimeFrameRestore - Close должна быть минутка, а фильтр Лагерра - 5 минут, хотя - не принципиально). Насколько я понимаю, сразу перед Input, или опять не так?

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Фев 16, 2009 8:44 am Ответить с цитатой Вернуться к началу

Tsch писал(а):
Вот теперь стало хоть чуть-чуть светлее в голове! Smile
Только вот обязательно ли громоздить:
Код:
Input = C;
ValueLF4 = LF4(Input, DampingFactor);

Насколько я понимаю можно Input сразу заменить Close, или нет?

Можно заменить
Tsch писал(а):

Вопрос номер два: куда в данном индикаторе нужно вставить:
Код:
TimeFrameSet(in5minute)
чтобы соответственно рисовался пятиминутный график (без TimeFrameRestore - Close должна быть минутка, а фильтр Лагерра - 5 минут, хотя - не принципиально). Насколько я понимаю, сразу перед Input, или опять не так?

Когда пишеш код с использованием функций на кусок кода где описана функция просто не надо обращать внимание, а ссылка на функцию используется просто как стандартная функция AFL. Единственное, что необходимо помнить, что описание пользовательской функции должно быть раньше, чем её первое использование в коде. Соответственно код с переключением на 5 мин должен выглядеть примерно так (функцию в коде не описываю)
Код:

// 4-element Laguerre filter.
// Begin common parameters section
ColourLF4      = ParamColor("Colour", colorRed);
StyleLF4       = ParamStyle("Style");
DampingFactor  = Param     ("Damping factor", 0.8, 0, 1, 0.1);
// End common parameters section

SetBarsRequired(200, 0);

function LF4(Array, Gamma)
{
...
   
   return Value;
}

Input = C;

TimeFrameSet(in5Minute);
ValueLF4 = LF4(Input, DampingFactor);
TimeFrameRestore();
ValueLF4_1min = TimeFrameExpand(ValueLF4, in5Minute);


Plot(ValueLF4, "4-element Laguerre filter", ColourLF4, StyleLF4);

Только работать скорее всего не будет. При переключении фреймов индекс номера бара [i] не переключается. Sad

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



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

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

Я заметил, что не работает - потому и спросил, так как на графике рисуется какая-то ерундень. Как тогда можно решить вопрос отображения двух таймфреймов в Ами и работы приведенного индикатора на них!?

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Фев 16, 2009 10:02 am Ответить с цитатой Вернуться к началу

Самый простой прсчитать этот 4-element Laguerre filter на 5 минутном графике и засунуть результат в новый символ. А потом выдернуть на нужный график при помощи Foreign
Или придумать как его расчитать без использования цикла

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Фев 16, 2009 10:11 am Ответить с цитатой Вернуться к началу

000 писал(а):
Самый простой прсчитать этот 4-element Laguerre filter на 5 минутном графике и засунуть результат в новый символ. А потом выдернуть на нужный график при помощи Foreign
Или придумать как его расчитать без использования цикла


А не проше в цикл засовывать велечины с 5 минуток, т.е. сжимаем на пятимин b = c; разжимаем и суем в цикл предварительно внеся изменение делать расчет на каждом 5 баре, пропуская 4 бара?

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Tsch



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

СообщениеДобавлено: Пн Фев 16, 2009 10:13 am Ответить с цитатой Вернуться к началу

А теперь для тупых более простым зыком можно? Желательно с примером! Embarassed

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
000
Site Admin


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

СообщениеДобавлено: Пн Фев 16, 2009 10:13 am Ответить с цитатой Вернуться к началу

Наверное можно. Попробуй если не лень. Плохо то, что универсально не получается.

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


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Фев 16, 2009 10:33 am Ответить с цитатой Вернуться к началу

Код:
// 4-element Laguerre filter.
// Begin common parameters section
ColourLF4      = ParamColor("Colour", colorRed);
StyleLF4       = ParamStyle("Style");
DampingFactor  = Param     ("Damping factor", 0.8, 0, 1, 0.1);
// End common parameters section

SetBarsRequired(200, 0);

TimeFrameSet(in5Minute);
Input=C;
TimeFrameRestore(in1Minute);
Input = TimeFrameExpand(Input, in5Minute);

function LF4(Array, Gamma)
{
   L0 = Array;
   L1 = Array;
   L2 = Array;
   L3 = Array;
   Value = Array;

   for(i = 1; i < BarCount; i = i + 5 )
   {
      L0[i] = (1 - Gamma) * Array[i] + Gamma           * L0[i-1];
      L1[i] = - Gamma     * L0[i]    + L0[i-1] + Gamma * L1[i-1];
      L2[i] = - Gamma     * L1[i]    + L1[i-1] + Gamma * L2[i-1];
      L3[i] = - Gamma     * L2[i]    + L2[i-1] + Gamma * L3[i-1];

      Value[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6;
   }
   
   return Value;
}


ValueLF4 = LF4(Input, DampingFactor);

Plot(ValueLF4, "4-element Laguerre filter", ColourLF4, StyleLF4);

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Tsch



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

СообщениеДобавлено: Пн Фев 16, 2009 10:41 am Ответить с цитатой Вернуться к началу

Круто! А как то же самое, но чтобы отображалось параллельно с минутным фильтром?

Вопрос такого плана: будет ли это генерировать торговые сигналы?

_________________
Мой блог: http://analyseman.blogspot.com/
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Фев 16, 2009 10:46 am Ответить с цитатой Вернуться к началу

Tsch писал(а):
Круто! А как то же самое, но чтобы отображалось параллельно с минутным фильтром?

Вопрос такого плана: будет ли это генерировать торговые сигналы?


Код:
// 4-element Laguerre filter.
// Begin common parameters section
StyleLF4       = ParamStyle("Style");
DampingFactor  = Param     ("Damping factor", 0.8, 0, 1, 0.1);
// End common parameters section

SetBarsRequired(200, 0);

TimeFrameSet(in5Minute);
Input=C;
TimeFrameRestore(in1Minute);
Input = TimeFrameExpand(Input, in5Minute);

function LF4(Array, Gamma)
{
   L0 = Array;
   L1 = Array;
   L2 = Array;
   L3 = Array;
   Value = Array;

   for(i = 1; i < BarCount; i = i + 5 )
   {
      L0[i] = (1 - Gamma) * Array[i] + Gamma           * L0[i-1];
      L1[i] = - Gamma     * L0[i]    + L0[i-1] + Gamma * L1[i-1];
      L2[i] = - Gamma     * L1[i]    + L1[i-1] + Gamma * L2[i-1];
      L3[i] = - Gamma     * L2[i]    + L2[i-1] + Gamma * L3[i-1];

      Value[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6;
   }
   
   return Value;
}
Input1=C;

ValueLF4 = LF4(Input, DampingFactor);
ValueLF41 = LF4(Input1, DampingFactor);


Plot(ValueLF4, "4-element Laguerre filter", 6, StyleLF4);
Plot(ValueLF41, "4-element Laguerre filter1", 4, StyleLF4);

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Пн Фев 16, 2009 10:48 am Ответить с цитатой Вернуться к началу

Tsch писал(а):


Вопрос такого плана: будет ли это генерировать торговые сигналы?


Если захочеш будет Smile

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen