Автор |
Сообщение |
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
Есть несколько версий оного, мне по душе больше такой:
http://www.linnsoft.com/tour/techind/vstop.htm
Кто-нить встречал его готовую реализацию в Ами?
На указанном ресурсе вроде всё понятно, кроме одного -
как они определяют направление тренда... |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Готовую не встречал. Вероятно направление тренда определяется автоматически по реверсу линии стопа. Похожий принцип у Крауза по Ганну с Hi Lo активаторами. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Готовую не встречал. Вероятно направление тренда определяется автоматически по реверсу линии стопа. Похожий принцип у Крауза по Ганну с Hi Lo активаторами. |
Да похоже, но пока не соображу как создать зту линию реверса
Сейчас поглядел как это у тебя организовано в ганновском скрипте, но там на VBScript, и я в результате ещё больше запутался.
Похоже тут надо через циклы, но в них я не горазд. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Вот попроще вариант Hi-Lo. Может поможет. Написал только, что по памяти поэтому возможно не совсем правильно
Код: |
// Линия LO
Lo = Ref(MA(L, 3), -1);
//Plot(Lo, "", colorRed, styleStaircase);
// Линия Hi
Hi = Ref(MA(H, 3), -1);
//Plot(Hi, "", colorGreen, styleStaircase);
// переключатель
UpDw = Flip(C > Hi, C < Lo);
HiLoLine = IIf(UpDw, Lo, Hi);
Color = IIf(UpDw, colorGreen, colorRed);
// вывод на чарт
Plot(HiLoLine, "Hi Lo Line", Color, styleStaircase);
Plot(C, "", colorBlack, styleCandle);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Вот попроще вариант Hi-Lo. Может поможет. Написал только, что по памяти поэтому возможно не совсем правильно
|
Всё правильно для Hi-Lo, принцип понятен.
Но вот для обозначенных целей не соображу, как приспособить.
Вот измёнённый код, с ремарками принципа построения:
Код: |
/*
filter = ATR(7)*2 ;
// если тренд вверх....
VSTOP = Close - filter;
// если тренд вверх продолжаетя ....
VSTOP = Max(VSTOP-1, MaxClose - filter);
// если обнаружен тренд вниз
VSTOP = Close + filter;
// если тренд вниз продолжаетя ....
VSTOP = Min(VSTOP-1, MinClose + filter) ;
// Где...
VSTOP-1 = Предыдущее значение уровеня стопа волатильности
MaxClose = Максимальное значение Close с начала тренда вверх
MinClose = Минимальное значение Close с начала тренда вниз
*Тренд разворачивается при пробое уровня VSTOP
*/
// --- Вот что рисую --------
k = 2 ;
per = 2;
filt = ATR(per)*k ;
// Линия LO
Lo = Ref(C-filt, -1);
//Plot(Lo, "", colorRed, styleStaircase);
// Линия Hi
Hi = Ref(C+filt, -1);
//Plot(Hi, "", colorGreen, styleStaircase);
// переключатель
UpDw = Flip(C > Hi, C < Lo);
HiLoLine = IIf(UpDw, Lo, Hi);
Color = IIf(UpDw, colorGreen, colorRed);
// вывод на чарт
Plot(HiLoLine, "Hi Lo Line", Color, styleStaircase);
Plot(C, "", colorBlack, styleCandle);
|
Т.е. смысл в том, что стоп должен только поджиматся, но не как не расширятся.
Вопрос в том, куда(как) засунуть условие MaxClose и MinClose.
Никак не врублюсь , помоги плиз. |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Понятно. Тут без цикла не обойтись (вроде)
написал так. Может не лучший вариант, но работает
Код: |
k = 2 ;
per = 2;
filt = ATR(per)*k ;
Lo = 0;
Hi = H + 2*filt; //Задаю заведомо большое значение
for(i = 2; i < BarCount; i ++)
{
if(i == 2) trend[1] = 1;
if(trend[i-1] == 1)
{
LoN = C[i] - filt[i];
if(LoN > Lo[i-1])
{
Lo[i] = LoN;
}
else
{
Lo[i] = Lo[i-1];
}
if(C[i] < Lo[i])
{
trend[i] = 0;
Hi[i] = C[i] + filt[i];
}
else trend[i] = 1;
}
if(trend[i-1] == 0)
{
HiN = C[i] + filt[i];
if(HiN < Hi[i-1])
{
Hi[i] = HiN;
}
else
{
Hi[i] = Hi[i-1];
}
if(C[i] > Hi[i])
{
trend[i] = 1;
Lo[i] = C[i] - filt[i];
}
else trend[i] = 0;
}
}
Hi = IIf(!trend, Hi, Null);
Lo = IIf(trend, Lo, Null);
Plot(Hi, "Hi", colorRed, styleStaircase);
Plot(Lo, "Lo", colorGreen, styleStaircase);
Plot(C, "", colorBlack, styleCandle);
|
|
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
Rybak
Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука
|
000 писал(а): |
Понятно. Тут без цикла не обойтись (вроде)
написал так. Может не лучший вариант, но работает
|
Олежек, Огромное Спасибо!
Вполне нормальный вариант, а главное рабочий.
А то я уже себе весь мозх вывихнул.
Теперь будет повод изучить циклы на этом скрипте.
PS
Эх, жил бы ты поближе - пивом бы тебя напоил вдоволь |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Rybak писал(а): |
PS
Эх, жил бы ты поближе - пивом бы тебя напоил вдоволь |
Спасибо. Но ты особо сильно не переживай. Я и так без пива не сижу |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Rybak писал(а): |
000 писал(а): |
Понятно. Тут без цикла не обойтись (вроде)
написал так. Может не лучший вариант, но работает
|
Олежек, Огромное Спасибо!
Вполне нормальный вариант, а главное рабочий.
А то я уже себе весь мозх вывихнул.
Теперь будет повод изучить циклы на этом скрипте.
PS
Эх, жил бы ты поближе - пивом бы тебя напоил вдоволь |
Не забудте, что индюк плавающий и использовать уровень нужно с прошлого бара, либо по закрытии ( С ). А индюк и правда интересный. Олег спасибо. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
Олег присоединяюсь ко всем, спасибо, интересная приблуда, но как ее пользовать в чем смысл не пойму |
|
|
Посмотреть профиль Отправить личное сообщение |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Сергей писал(а): |
Олег присоединяюсь ко всем, спасибо, интересная приблуда, но как ее пользовать в чем смысл не пойму |
Как я понял, это приблуда плавающий стоп. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
commenced писал(а): |
Сергей писал(а): |
Олег присоединяюсь ко всем, спасибо, интересная приблуда, но как ее пользовать в чем смысл не пойму |
Как я понял, это приблуда плавающий стоп. |
А как его пользовать?) Типа H коснулся верхней планки - выход их шорта и наоборот ? |
|
|
Посмотреть профиль Отправить личное сообщение |
|
000
Site Admin
Зарегистрирован: 10.12.2007
Сообщения: 9106
|
Только не H. Индюк считается чисто по закрытиям. Закрылся бар за линией - выход. |
_________________ ceterum censeo carthaginem esse delendam
Удачи. Олег. |
|
Посмотреть профиль Отправить личное сообщение Посетить сайт автора |
|
commenced
Советник
Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"
|
Сергей писал(а): |
commenced писал(а): |
Сергей писал(а): |
Олег присоединяюсь ко всем, спасибо, интересная приблуда, но как ее пользовать в чем смысл не пойму |
Как я понял, это приблуда плавающий стоп. |
А как его пользовать?) Типа H коснулся верхней планки - выход их шорта и наоборот ? |
Типа так Sell = Ref(Lo,-1)>L;
cover = Ref(Hi,-1)<h;
Можно и с C конечно. |
_________________ Юра |
|
Посмотреть профиль Отправить личное сообщение Отправить e-mail |
|
Сергей
Зарегистрирован: 16.03.2008
Сообщения: 168
|
А понятно, в принципе так и думал, щас чтонить напишем, протестим) |
|
|
Посмотреть профиль Отправить личное сообщение |
|
|