Автор |
Сообщение |
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Раскопал старый индикатор Duke Nuckem'а написанного по мотивам John Ehlers, мне понравилось, т.к. работает получше скользящих средних, но есть несколько вопросов:
1. что именно считается в и как это потом вылазит в значения индикатора!? у меня с циклами в Ами полная задница - не понимаю я их! (((
остальное потом...
Код: |
// 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
|
Считается там сам Laguerre filter. Там несколько раз перерасчитываются значения на текущем и прошлом баре... В данном случае берется цена закрытия
А function (почитай в хелпере я перевел) позволяет типа создовать свои функции в AFL.
Например можно создать функцию
Код: |
function Мой индикатор(a, b, c, d)
{
РАСЧЕТ НА ОСНОВЕ a, b, c, d
} |
и потом в коде использовать Мой индикатор просто как стандартную функцию AFL |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
То, что ты рассказал - этом мне и так было понятно, особенно то, что считается Laguerre Filter , я немного про другое спрашивал!
Там нигде нет инициализации Array и Gamma! Только уже после завершения function, становится отдаленно понятно, что Array = Input = Close, а Gamma = Damping Factor, но появляются они уже после окончания всех циклов, разве нет! Соответственно вопрос: что считает цикл? Или есть нюансы, о которых нужно знать!? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Понятно.
функция считается только в момент её вызова. Вызывается она в предпоследней строке ( перед plot ), при этом, при вызове, в функцию передаются два заранее определенных параметра Input и DampingFactor
Внутри функции эти параметры обзываются соответственно Array и Gamma. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Вот теперь стало хоть чуть-чуть светлее в голове!
Только вот обязательно ли громоздить:
Код: |
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
|
Tsch писал(а): |
Вот теперь стало хоть чуть-чуть светлее в голове!
Только вот обязательно ли громоздить:
Код: |
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] не переключается. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Я заметил, что не работает - потому и спросил, так как на графике рисуется какая-то ерундень. Как тогда можно решить вопрос отображения двух таймфреймов в Ами и работы приведенного индикатора на них!? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Самый простой прсчитать этот 4-element Laguerre filter на 5 минутном графике и засунуть результат в новый символ. А потом выдернуть на нужный график при помощи Foreign
Или придумать как его расчитать без использования цикла |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Самый простой прсчитать этот 4-element Laguerre filter на 5 минутном графике и засунуть результат в новый символ. А потом выдернуть на нужный график при помощи Foreign
Или придумать как его расчитать без использования цикла |
А не проше в цикл засовывать велечины с 5 минуток, т.е. сжимаем на пятимин b = c; разжимаем и суем в цикл предварительно внеся изменение делать расчет на каждом 5 баре, пропуская 4 бара? |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Наверное можно. Попробуй если не лень. Плохо то, что универсально не получается. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Код: |
// 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
Откуда: Омск
|
Круто! А как то же самое, но чтобы отображалось параллельно с минутным фильтром?
Вопрос такого плана: будет ли это генерировать торговые сигналы? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
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
Откуда: от "Верблюда"
|
Tsch писал(а): |
Вопрос такого плана: будет ли это генерировать торговые сигналы? |
Если захочеш будет |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
|