Автор |
Сообщение |
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Tsch писал(а): |
Слушай, а почему у тебя в цикле i+5 осталось? Ты же уже не минутки берешь, а в пятиминутки пережимаешь график! Если заменить на i++, пусть себе пятиминутки и считает!? |
Потому и остолось, что сжимаю только С, а цикл считается на родном фрейме. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Блин. Пытался сделать этот Laguerre filter без цикла. Ничего не получается... ( |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Блин. Пытался сделать этот Laguerre filter без цикла. Ничего не получается... ( |
Да блин Олег объясни почему мой код не прет, ведь вроде по правилам все. Можно своими словами. За "О" спасибо, если всетаки с циклами до конца разберусь можно будет и "в" попросить |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Поздно вечером посмотрю. Сейчас башка не варит. Еще расстроился, что без цикла не получилось... |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Поздно вечером посмотрю. Сейчас башка не варит. Еще расстроился, что без цикла не получилось... |
Начни пожалуста с ответа почему не получается с циклом, на решение самой проблемы уже пофигу. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Ок |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Фу. ЁЁЁЁЁЁЁЁ. Заработало.
Фигня в том, что при сжатии массива на другой фрейм в самом начаеле графика у сжатого массива получаются неопределенные значения. Поэтому цикл не работает. Дело легко правится функцией NZ()
Вот рабочий код
Код: |
// 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(200000, 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;
}
HC = Nz(TimeFrameCompress(C, inHourly));
InputH = HC;
ValueLF4H = LF4(InputH, DampingFactor);
ValueLF4H = TimeFrameExpand(ValueLF4H, inHourly);
ValueLF4 = LF4(C, DampingFactor);
Plot(ValueLF4H , "in Hourly", colorRed);
Plot(ValueLF4 , "in 15 min", colorBlue);
Plot(C, "", colorBlack, styleCandle);
|
Предвижу вопрос почему inHourly. Да потому, что у меня данные 15 мин, а качать минутки специально для этого случая - ломы. Какая разница? |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Tsch
Зарегистрирован: 07.09.2008
Сообщения: 58
Откуда: Омск
|
Олег, commenced, спасибо вам большое за помощь...
ждите - когда я с закрытием половины так и не смогу разобраться, снова обращусь! |
_________________ Мой блог: http://analyseman.blogspot.com/ |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Фу. ЁЁЁЁЁЁЁЁ. Заработало.
Фигня в том, что при сжатии массива на другой фрейм в самом начаеле графика у сжатого массива получаются неопределенные значения. Поэтому цикл не работает. Дело легко правится функцией NZ()
Вот рабочий код
|
Олег извени, но половинчатый ответ получается, хотя ты обещал ответить на мой вопрос в первую очередь. Меня интересует почему не меняется график с изменением Gamma и что вообще не правильно сделано
Код: |
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 |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот. Теперь есть конкретный код и конкретный вопрос. Чуток попозже займусь. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Gamma1 у меня нрмально меняет параметры линии.
Gamma не стала менять пока не исправил строку
Код: |
Array = TimeFrameExpand(Array, in5Minute);
|
на
Код: |
Array = Nz(TimeFrameExpand(ArrayH, in5Minute));
|
Когд исправил - заработала прекрасно.
Кроме того я еще поменял названия Array на другое, т.к. не уверен когда переменные переходят фнутрь функций, а когда нет и мне не понравилось, что возможно массив Array заданный в самом начале используется внутри ф-ции. Вдруг они не независимы (я в этом вопросе плаваю)
Сама идея использовать цикл i = i + 5 мне не очень понравилась т.к. подразумевает, что 5 минутки получаются всегда через 5 баров. А если инструмент малоактивный и в данных присутствует не каждая минута или фрейм не кратный. то шаг вообще получается переменный. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Gamma1 у меня нрмально меняет параметры линии.
Gamma не стала менять пока не исправил строку
Код: |
Array = TimeFrameExpand(Array, in5Minute);
|
на
Код: |
Array = Nz(TimeFrameExpand(ArrayH, in5Minute));
|
Когд исправил - заработала прекрасно.
Кроме того я еще поменял названия Array на другое, т.к. не уверен когда переменные переходят фнутрь функций, а когда нет и мне не понравилось, что возможно массив Array заданный в самом начале используется внутри ф-ции. Вдруг они не независимы (я в этом вопросе плаваю)
Сама идея использовать цикл i = i + 5 мне не очень понравилась т.к. подразумевает, что 5 минутки получаются всегда через 5 баров. А если инструмент малоактивный и в данных присутствует не каждая минута или фрейм не кратный. то шаг вообще получается переменный. |
Скинь пожалуста полученный код, а то чета не все понял. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот
Код: |
Gamma = Param("Gamma", 0.8, 0, 1, 0.1);
Gamma1 = Param("Gamma1", 0.8, 0, 1, 0.1);
SetBarsRequired(200, 0);
TimeFrameSet(inHourly);
ArrayH = C;
TimeFrameRestore();
ArrayH = Nz(TimeFrameExpand(ArrayH, inHourly));
Array = C;
function LF1(Array1, Gamma)
{
L0 = Array1;
L1 = Array1;
L2 = Array1;
L3 = Array1;
Value = Array1;
for(i = 0; i < BarCount; i = i + 5 )
{
if(i < 5)
{
L0[i] = (1 - Gamma) * Array1[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) * Array1[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(Array2, Gamma1)
{
L01 = Array2;
L11 = Array2;
L21 = Array2;
L31 = Array2;
Value1 = Array2;
for(i = 1; i < BarCount; i ++ )
{
L01[i] = (1 - Gamma1) * Array2[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(ArrayH, Gamma1);
Plot(ValueLF1, "4-element Laguerre filter", 6, 1);
Plot(ValueLF2, "4-element Laguerre filter1", 4, 1);
|
Правда синую линию он криво рисует (у меня) Я сразу забыл про это сказть. Самое главное (как я понял) параметр работает. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
000 писал(а): |
Вот
Правда синую линию он криво рисует (у меня) Я сразу забыл про это сказть. Самое главное (как я понял) параметр работает. |
Спасибо, именно это и интересовало. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
А почему криво это я не знаю. А думалка устала и работать не хочет. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|