Автор |
Сообщение |
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Ну что же, на данный момент СПАСИБО, просить помогать дальше - перекладывать работу на чужие плечи! Будем думать! |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Короче говоря, ничего пока не работает! Я немного изменил код, на мой взгляд более правильно и корректно индикатор рисуется вот так:
Код: |
StyleLF4 = ParamStyle("Style");
DampingFactor = Param ("Damping factor", 0.9, 0, 1, 0.1);
SetBarsRequired(200, 0);
//Считаем индикатор на псевдо-пятиминутках (после 17-00 на фьючах будет сдвиг на три минуты хер знает куда)
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;
}
Input=C;
ValueLF4 = LF4(Input, DampingFactor);
//Считаем индикатор на минутках
function LF(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;
}
Input1=C;
ValueLF = LF(Input1, DampingFactor);
Plot(ValueLF4, "4-element Laguerre filter",colorRed, StyleLF4);
Plot(ValueLF, "4-element Laguerre filter1",colorBlue, StyleLF4);
Plot(C,"",colorBlack,styleCandle); |
Но, пятиминутка почему-то получается быстрее минутки, а она наоборот должна быть более плавной! И после таких вот манипуляций, значения индикатора на минутках на сходятся со значениями на минутках без манипуляции (т.е., что были раньше!) - график стал более дерганым, что ли! |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Tsch писал(а): |
Короче говоря, ничего пока не работает! Я немного изменил код, на мой взгляд более правильно и корректно индикатор рисуется вот так:
|
Нашел косяк. Верхний мой, нижний с 1 страници подфорума, разница на лицо, а главное отсутстует изменение графика с изменением DampingFactor = Param ("Damping factor", 0.8, 0, 1, 0.1); что очень странно, у себя косяков я не нашел, значит знаний не хватает, Олег помоги в чем заковыка. |
_________________ Юра
Последний раз редактировалось: commenced (Пн Фев 16, 2009 11:54 am), всего редактировалось 1 раз |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Честно говоря - не знаю! На мой взгляд кроме дополнительной нагрузки из за повторения function ошибок нет (я не хотел обидеть или упрекнуть некорректностью, просто так действительно рисуется более адекватно). Короче: сдаюсь!
Может ты прав и дело в постановке задачи, тогда попробую еще раз:
Есть: минутный график для которого считается LaGuerre.
Надо: минутный график для которого считается LaGuerre + такой же индикатор, но посчитанный для пятиминутного графика и отрисованный на минутном! |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Tsch писал(а): |
Честно говоря - не знаю! На мой взгляд кроме дополнительной нагрузки из за повторения function ошибок нет (я не хотел обидеть или упрекнуть некорректностью, просто так действительно рисуется более адекватно). Короче: сдаюсь!
Может ты прав и дело в постановке задачи, тогда попробую еще раз:
Есть: минутный график для которого считается LaGuerre.
Надо: минутный график для которого считается LaGuerre + такой же индикатор, но посчитанный для пятиминутного графика и отрисованный на минутном! |
Да нет ты С береш в обоих случаях с минутного графика, поэтому правельно рисоваться не будет полюбому. Блин понял, что ты имел ввиду на минутном графике в цикле I=i+5 должно быть i++ согласен с тобой полностью необратил внимания. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
О как! Я из неправого оказался правым!
На самом деле меня сразу смутила отрисовка графика, по-этому я плясал от нее когда говорил о корректности отображения, а не о корректности кода. С другой сторон, в моем варианте нет объяснения тому, почему минутный LaGuerre отображается более адекватно, но со значительными искажениями...
Я так и не понял, почему не работает i+5, ведь должно же браться в этом случае каждое пятое значение. Разве нет? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Держите. Думаю разберетесь
Код: |
// 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);
Input = C;
Gamma = DampingFactor ;
function LF4(Array, DampingFactor)
{
L0 = (1 - Gamma) * Array + Gamma * AMA(0, 0);
L1 = - Gamma * L0 + Ref(L0, -1) + Gamma * AMA(0, 0);
L2 = - Gamma * L1 + Ref(L1, -1) + Gamma * AMA(0, 0);
L3 = - Gamma * L2 + Ref(L2, -1) + Gamma * AMA(0, 0);
Value = (L0 + 2 * L1 + 2 * L2 + L3) / 6;
return Value;
}
TimeFrameSet(inHourly);
ValueLF4H = LF4(Input, DampingFactor);
TimeFrameRestore();
ValueLF4H = TimeFrameExpand(ValueLF4H, inHourly);
Plot(LF4(Input, DampingFactor), "4-element Laguerre filter", ColourLF4, StyleLF4);
Plot(ValueLF4H, "Laguerre filter", colorBlue, StyleLF4);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только надо проверить, но вроде правильно. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Tsch писал(а): |
О как! Я из неправого оказался правым!
На самом деле меня сразу смутила отрисовка графика, по-этому я плясал от нее когда говорил о корректности отображения, а не о корректности кода. С другой сторон, в моем варианте нет объяснения тому, почему минутный LaGuerre отображается более адекватно, но со значительными искажениями...
Я так и не понял, почему не работает i+5, ведь должно же браться в этом случае каждое пятое значение. Разве нет? |
Если бы ты был прав, то код бы получился |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
При первом тестировании - даже близко не то, то что нужно!
1. Откуда и зачем взялась АМА?
2. Наверное надо так:
Код: |
function LF4(Array, Gamma) |
а не:
Код: |
function LF4(Array, DampingFactor) |
3. Ну почему часовик???
Олег, на графике вообще ерунда какая-то рисуется! |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Ответ на первый вопрос я нашел сам: АМА взялась потому, что надо читать хэлп, там написано, какому циклу эквивалентна АМА, но, что писать в скобках??? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Блин. Накосячил что-то. Ща проверю. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Только надо проверить, но вроде правильно. |
Нет, он еще хуже наших. ) Олег дак почему мой код не прет, я даже так пробывал
Код: |
Gamma = Param ("Gamma", 0.8, 0, 1, 0.1);
Gamma1 = Param ("Gamma1", 0.8, 0, 1, 0.1);
SetBarsRequired(200, 0);
TimeFrameSet(in5Minute);
Array=C;
TimeFrameRestore(in1Minute);
Array = TimeFrameExpand(Array, in5Minute);
Array1=C;
function LF1(Array, Gamma)
{
L0 = Array;
L1 = Array;
L2 = Array;
L3 = Array;
Value = Array;
for(i = 0; i < BarCount; i = i + 5 )
{
if(i < 5)
{
L0[i] = (1 - Gamma) * Array[i] + Gamma * L0[i];
L1[i] = - Gamma * L0[i] + L0[i] + Gamma * L1[i];
L2[i] = - Gamma * L1[i] + L1[i] + Gamma * L2[i];
L3[i] = - Gamma * L2[i] + L2[i] + Gamma * L3[i];
Value[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6;
}
else
{
L0[i] = (1 - Gamma) * Array[i] + Gamma * L0[i-5];
L1[i] = - Gamma * L0[i] + L0[i-5] + Gamma * L1[i-5];
L2[i] = - Gamma * L1[i] + L1[i-5] + Gamma * L2[i-5];
L3[i] = - Gamma * L2[i] + L2[i-5] + Gamma * L3[i-5];
Value[i] = (L0[i] + 2 * L1[i] + 2 * L2[i] + L3[i]) / 6;
}
}
return Value;
}
function LF2(Array1, Gamma1)
{
L01 = Array1;
L11 = Array1;
L21 = Array1;
L31 = Array1;
Value1 = Array1;
for(i = 1; i < BarCount; i ++ )
{
L01[i] = (1 - Gamma1) * Array1[i] + Gamma1 * L01[i-1];
L11[i] = - Gamma1 * L01[i] + L01[i-1] + Gamma1 * L11[i-1];
L21[i] = - Gamma1 * L11[i] + L11[i-1] + Gamma1 * L21[i-1];
L31[i] = - Gamma1 * L21[i] + L21[i-1] + Gamma1 * L31[i-1];
Value1[i] = (L01[i] + 2 * L11[i] + 2 * L21[i] + L31[i]) / 6;
}
return Value1;
}
ValueLF1 = LF1(Array, Gamma);
ValueLF2 = LF2(Array1, Gamma1);
Plot(ValueLF1, "4-element Laguerre filter", 6, 1);
Plot(ValueLF2, "4-element Laguerre filter1", 4, 1); |
Кстати добавь о, а то както мне несолидно |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
""Уже близко, но меня немного смущает даже не то, что не рисуется фильтр по пятиминутке, а то, что минутка рисуется немножко кривовато! Это-то почему так?""
Все, решил проблему, почему-то из кода не изменялись параметры - пришлось их вручную устанавливать - странно! Минутка теперь отображается так, как надо!
Слушай, а почему у тебя в цикле i+5 осталось? Ты же уже не минутки берешь, а в пятиминутки пережимаешь график! Если заменить на i++, пусть себе пятиминутки и считает!? |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
На мой взгляд должно быть что-то близкое к этому:
Код: |
DampingFactor = Param ("Gamma", 0.9, 0, 1, 0.1);
DampingFactor1 = Param ("Gamma1", 0.9, 0, 1, 0.1);
SetBarsRequired(1000, 0);
function LF1(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;
}
function LF2(Array1, Gamma1)
{
L01 = Array1;
L11 = Array1;
L21 = Array1;
L31 = Array1;
Value1 = Array1;
for(i = 1; i < BarCount; i ++ )
{
L01[i] = (1 - Gamma1) * Array1[i] + Gamma1 * L01[i-1];
L11[i] = - Gamma1 * L01[i] + L01[i-1] + Gamma1 * L11[i-1];
L21[i] = - Gamma1 * L11[i] + L11[i-1] + Gamma1 * L21[i-1];
L31[i] = - Gamma1 * L21[i] + L21[i-1] + Gamma1 * L31[i-1];
Value1[i] = (L01[i] + 2 * L11[i] + 2 * L21[i] + L31[i]) / 6;
}
return Value1;
}
TimeFrameSet(in5Minute);
Array=C;
ValueLF1 = LF1(Array, DampingFactor);
TimeFrameRestore(in1Minute);
Array = TimeFrameExpand(Array, in5Minute);
Array1=C;
ValueLF2 = LF2(Array1, DampingFactor1);
Plot(TimeFrameExpand(ValueLF1,in5Minute), "4-element Laguerre filter", colorRed, 1);
Plot(ValueLF2, "4-element Laguerre filter1", colorGreen, 1);
Plot(C, "", colorBlack, styleCandle); |
Но почему-то пишет, что EMPTY! |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|