Автор |
Сообщение |
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Индикатор тренды основан на следующей мысли, для изменения тренда цена не только должна пересеч локальный мин или мак, но и должна совершить как минимум движение больше чем разница между двумя противоположными последовательными экстремумами. Идея взята отсуда http://blogs.mail.ru/mail/pev118/7475249CC3DA3DEF.html
Код: |
SetBarsRequired(1000000, 0);
DF=Param("% от предыдущего экстремума",30,0,200,1);
up = L > Ref(L, -1) & H >= Ref(H, -1);
dw = L <= Ref(L, -1) & H< Ref(H, -1);
up = ExRem(up, dw);
dw = ExRem(dw, up);
swing = Flip(up, dw);
x = 0;
x0 = 0;
y = 0;
y0 = 0;
Hi = 0;
Lo = 0;
Line = Null;
function swingline(x0, x, y0, y)
{
m = (y-y0)/(x-x0);
for(j = x0; j <= x; j++)
{
Line[j] = y0 + (j-x0)*m;
}
return Line;
}
for( i = 1; i < BarCount; i++ )
{
if(swing[i] == 1)
{
if(up[i] == 1)
{
Lo[x] = y;
y0 = y;
x0 = x;
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
else if(H[i] > y)
{
y = H[i];
x = i;
swingline(x0, x, y0, y);
}
}
else
{
if(dw[i] == 1)
{
Hi[x] = y;
y0 = y;
x0 = x;
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
else if(L[i] < y)
{
y = L[i];
x = i;
swingline(x0, x, y0, y);
}
}
}
Hm = Hi > 0;
Lm = Lo > 0;
Plot(C, "", colorBlack, styleBar);
L1= ValueWhen(Lm, L, 1);
H1= ValueWhen(Hm, H, 1);
L2= ValueWhen(Lm, L, 2);
H2= ValueWhen(Hm, H, 2);
LD=DF*IIf(L1 < L2, L2-L1, 0)/100;
HD=DF*IIf(H1 > H2, H1-H2, 0)/100;
Lg=L1-HD;
HN=H1+LD;
LE=Cross(H,Ref(HN,-1));
LX=Cross(Ref(Lg,-1),L);
k = BarsSince(LE);
n = BarsSince(LX);
CH=IIf(k>n,HN,Lg);
Plot( CH, "function example", 6 ); |
|
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Да можно переключалку сделать чтоб не H-L брались, а С, но мне не понравилось. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Vladimir
Зарегистрирован: 30.10.2008
Сообщения: 62
|
На мой взгляд, код заглядываетв в будущее, прогнал через:
Код: |
sdvig = Param("sdvig", 0, 0, 200, 1);
O = Ref(O, -sdvig);
H = Ref(H, -sdvig);
L = Ref(L, -sdvig);
C = Ref(C, -sdvig); |
|
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Vladimir писал(а): |
На мой взгляд, код заглядываетв в будущее, прогнал через:
Код: |
sdvig = Param("sdvig", 0, 0, 200, 1);
O = Ref(O, -sdvig);
H = Ref(H, -sdvig);
L = Ref(L, -sdvig);
C = Ref(C, -sdvig); |
|
Несовсем, он не стабилен. Но имеет право на жизнь. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Vladimir
Зарегистрирован: 30.10.2008
Сообщения: 62
|
Да, он очень интересный, что нужно исправить, чтобы он не заглядывал в будущее? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
Vladimir писал(а): |
Да, он очень интересный, что нужно исправить, чтобы он не заглядывал в будущее? |
Если индикатор заглядывает в будущее не заглядывая ( не использует
в текущих расчетах цену закрытия текущего бара), то это супер индикатор.
Работает странно. Будем посмотреть. (Значения меняются предыдущие в зависимости от текущих)
Спасибо за код и за ссылку. |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
Vladimir писал(а): |
На мой взгляд, код заглядываетв в будущее, прогнал через:
Код: |
sdvig = Param("sdvig", 0, 0, 200, 1);
O = Ref(O, -sdvig);
H = Ref(H, -sdvig);
L = Ref(L, -sdvig);
C = Ref(C, -sdvig); |
|
А можно словами объяснить. Как прогнал, что смотрел. |
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Teema писал(а): |
Vladimir писал(а): |
На мой взгляд, код заглядываетв в будущее, прогнал через:
Код: |
sdvig = Param("sdvig", 0, 0, 200, 1);
O = Ref(O, -sdvig);
H = Ref(H, -sdvig);
L = Ref(L, -sdvig);
C = Ref(C, -sdvig); |
|
А можно словами объяснить. Как прогнал, что смотрел. |
Попробуй так
L1= ref(ValueWhen(Lm, L, 1),-2);
H1= ref(ValueWhen(Hm, H, 1),-2);
L2= ref(ValueWhen(Lm, L, 2),-2);
H2= ref(ValueWhen(Hm, H, 2),-2);
Скачет он потому что точки лок мин и макс становяться таковыми в среднем через 2 бара из-за цикла. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Teema
Зарегистрирован: 01.04.2009
Сообщения: 184
|
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
|
|
Следующая тема
Предыдущая тема
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете вкладывать файлы Вы не можете скачивать файлы
|
|