Список форумов AmiSite.ru AmiSite.ru
Форум по Ами
 FAQ  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Войти и проверить личные сообщения  •  Вход
 Volatility Stop Indicator - надо разобратся... Следующая тема
Предыдущая тема
Начать новую тему  Ответить на тему
Автор Сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Янв 28, 2009 2:48 pm Ответить с цитатой Вернуться к началу

Ууу. Это требует серьезеых исследований, а на этой неделе у меня уже времени свободного не будет, Тем более, что скрипт для закачки данных успешно движется к финалу. Продолжим на след. неделе.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Ср Янв 28, 2009 3:40 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Тем более, что скрипт для закачки данных успешно движется к финалу.

Уря!
Конечно это важнее, ждем с нетерпением.

Цитата:
Продолжим на след. неделе.

Я никуда и не гоню и не настаиваю - просто на мой имхо, есть повод покапаться в этом огороде, не более того.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Янв 28, 2009 4:39 pm Ответить с цитатой Вернуться к началу

Цитата:

просто на мой имхо, есть повод покапаться в этом огороде, не более того

Согласен. Мне тоже любопытно стало.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Ср Янв 28, 2009 6:47 pm Ответить с цитатой Вернуться к началу

000 писал(а):
Цитата:

просто на мой имхо, есть повод покапаться в этом огороде, не более того

Согласен. Мне тоже любопытно стало.

Замечательно, я ж попробую к тому времени выложить из головы на бумагу контуры некой стратегии...
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Ср Янв 28, 2009 10:13 pm Ответить с цитатой Вернуться к началу

Rybak писал(а):
commenced писал(а):
здесь расматриваются "индикаторы" и мы об это глубоко в душе помним Smile .,,

Вот и чудненько Smile

Продолжаем разговор..

Но тут с Ами начинаются проблемы :
Если вызвать ф-цию TimeFrameMode( 3 ); и работать внутри этой ф-ции с разными сигналами, в том числе и с Buy, Short, то вроде всё ровно.
Но стоит сделать TimeFrameRestore() ; и попытатся вытащить сигналы на обычный фрейм, начинается такая каша, что трудно описать.


Короче не знаю почему, но ами плывет, по глупой причине, он не может растянуть массив из 10 баров полученный внутри функции, на 100 обычного таймфрема( причина по всей видимости в том что дата начала бара попадает в один массив, а окончания в другой , поэтому в видимое окно он пихает весь полученный массив и при прокрутке кажется что он плывет. Если вы привяжете расчет SetBarsRequired(1000000, 1000000); вы поймете о чем я. Выявляется сей факт легко, открываем часовики, задаем диапазон в несколько раз превышающий размер средней свечи на данном фрейме прокручиваем график, он поплыл, добавляем SetBarsRequired(1000000, 1000000) и видим что массива диапозона элементарно нехватает, после чего задаем диапазон в размере 30% свечи, график перестает прыгать, а кривая не плывет и присутствует на всей истории. Проще говоря, бары при выводе на тайм часовой не привязываются к дате, а тупо отображаются по количеству, в том случае когда их количество меньше чем количество баров истории , как такую херь можно тестить непредставляю, возможно уменьшая диапазон меньше чем средняя свеча. Либо не выводя график в обычные координаты цена-время, а в цена-кол-во баров.

Код:
TimeFrameMode( 3 );
TimeFrameSet( 0.1);
q = H;
TimeFrameRestore();
TimeFrameExpand( q, 0.1);

Plot(q,"q", 6,1);
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Пт Янв 30, 2009 2:01 pm Ответить с цитатой Вернуться к началу

commenced писал(а):
Короче не знаю почему, но ами плывет,


Аналогично.

Вдобавок, где-то читал у Томаша, что он не считает правильным "классическое" отображение BarRange и сделал по своему.
Напомну, что "классическое" - это в случае превышения реальным баром установленного значения Range в N раз, по "правильному" должны образоваться N баров-фантомов.

Ясно одно - потестить действительно не получится, или тестить не вылезая из ф-ции TimeFrameMode4 (кстати "4" на рос. фьючах удобнее), что не есть удобно...
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Сб Янв 31, 2009 11:09 am Ответить с цитатой Вернуться к началу

Rybak писал(а):
commenced писал(а):
Короче не знаю почему, но ами плывет,


Аналогично.

Вдобавок, где-то читал у Томаша, что он не считает правильным "классическое" отображение BarRange и сделал по своему.
Напомну, что "классическое" - это в случае превышения реальным баром установленного значения Range в N раз, по "правильному" должны образоваться N баров-фантомов.

Ясно одно - потестить действительно не получится, или тестить не вылезая из ф-ции TimeFrameMode4 (кстати "4" на рос. фьючах удобнее), что не есть удобно...


А 4 это что за режим, в хемпе только 0,1,2,3?

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Сб Янв 31, 2009 1:38 pm Ответить с цитатой Вернуться к началу

Цитата:


А 4 это что за режим, в хелпе только 0,1,2,3?

В версии 5.20, в хелп (eng) заглянуть надо - там есть.

А кто игрался с режимом "2" ?
Это примерно тоже rangeBar, только по объёмам.
Что-то у мну полная чушь получается, если :

Код:
TimeFrameMode( 2 );
TimeFrameSet(Param("Range Bar", 10, 10, 50000, 10));
PlotOHLC(O, H, L, C, "Bar Vlolume", colorBlack, styleCandle );
TimeFrameRestore();


зы
Также интересно, не попадался ли кому скритп для эквиобъёма?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Ср Фев 04, 2009 10:11 pm Ответить с цитатой Вернуться к началу

Уф. Пока ничего не получается. Впечатление такое, что функция "расжимания" массивов TimeFrameExpand() не реагирует на фукнкцию переключения режимов TimeFrameMode() Любопытно, что для режима N-volume есть способ задания интервала без применения TimeFrameMode(), для этого надо указать объем бара цифрой "нужный объем - 1000000". А вот как указать ранж бара без переключения режимов выяснить пока не удалось (по моему мнению так должно сработать).
А тут еще почтовая база за 5 лет рухнула насмерть... Sad
В любом случае руки я пока не опустил. Еще поковыряюсь.

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Сб Фев 07, 2009 11:47 am Ответить с цитатой Вернуться к началу

Олег хочу вернуться к коду предыдущему.

1. Можно ли задать что линии lo и Hi не могут изменяться по отношению к предыдущему значению не более чем к примеру g*ATR(3) (g параметр), а то слишком резкие изменения не нравятся.
2. В случае если линии lo и Hi не изменяются в течении n-баров (параметр), изменение произходит насильно на k*atr(3) (k параметр).

Причем 1. блок работает всегда, второй только в случае если z= 1, ну тоесть его можно отключать, переключая 1,0.

Пока с циклами сам не могу разобраться, т.е. по отдельности я понимаю как работает твой блок, а вот в целом не понимаю, видно мозг уже закостенел. Embarassed

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Rybak



Зарегистрирован: 15.09.2008
Сообщения: 125
Откуда: С Паука

СообщениеДобавлено: Сб Фев 07, 2009 12:13 pm Ответить с цитатой Вернуться к началу

000 писал(а):
А вот как указать бара без переключения режимов выяснить пока не удалось (по моему мнению так должно сработать).

ИМХО от ф-ции TimeFrameMode(4) , если делать системку на принцине ранж бара, придётся отказатся и писать свою.
Хотя бы по той причине, что в TimeFrameSet(x) "x" должна быть переменной (скажем по волатильности), а не константой.
Посмотреть профиль Отправить личное сообщение
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Сб Фев 07, 2009 11:25 pm Ответить с цитатой Вернуться к началу

Rybak писал(а):
000 писал(а):
А вот как указать бара без переключения режимов выяснить пока не удалось (по моему мнению так должно сработать).

ИМХО от ф-ции TimeFrameMode(4) , если делать системку на принцине ранж бара, придётся отказатся и писать свою.
Хотя бы по той причине, что в TimeFrameSet(x) "x" должна быть переменной (скажем по волатильности), а не константой.


И в чем проблема, обойти будет легко, только код будет очень тормозить.

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
000
Site Admin


Зарегистрирован: 10.12.2007
Сообщения: 9106

СообщениеДобавлено: Вс Фев 08, 2009 12:00 am Ответить с цитатой Вернуться к началу

commenced писал(а):
Олег хочу вернуться к коду предыдущему.

1. Можно ли задать что линии lo и Hi не могут изменяться по отношению к предыдущему значению не более чем к примеру g*ATR(3) (g параметр), а то слишком резкие изменения не нравятся.

Мне, в данном случае, не нравится возможность того, что теоретически есть возможность того, что изменения Lo и Hi могут быть больше g*ATR(3) на протяжении длительного времени. Тогда отставание этих линий будут накапливаться. Это нехорошо само по себе и как втаком случае делать реверс?
(а если теоретически это возможно, значит в жизни обязательно произойдет Smile )
commenced писал(а):

2. В случае если линии lo и Hi не изменяются в течении n-баров (параметр), изменение произходит насильно на k*atr(3) (k параметр).

Насильно? А в какую сторону? И главное зачем. Подтягивать стоп в случае начавшегося флэта? Но в таком случае есть риск того, что на флете из-за подтягивания стопов запилит разворотами...

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вс Фев 08, 2009 10:12 am Ответить с цитатой Вернуться к началу

000 писал(а):
commenced писал(а):
Олег хочу вернуться к коду предыдущему.

1. Можно ли задать что линии lo и Hi не могут изменяться по отношению к предыдущему значению не более чем к примеру g*ATR(3) (g параметр), а то слишком резкие изменения не нравятся.

Мне, в данном случае, не нравится возможность того, что теоретически есть возможность того, что изменения Lo и Hi могут быть больше g*ATR(3) на протяжении длительного времени. Тогда отставание этих линий будут накапливаться. Это нехорошо само по себе и как втаком случае делать реверс?
(а если теоретически это возможно, значит в жизни обязательно произойдет Smile )



не вижу трагедии, сделал так:

Код:



k = Param("k", 1, 1, 15, 1);
d = Param("d",2, 1, 15, 1);

 

filt = Ref((H-L)+abs(O-C),-1)*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);

b = Param("b", 0.1, 0.1, 1, 0.1);
s = b*ATR(3);

for( i = 1; i < BarCount; i++ )
  {
       if( Hi[ i- 1]-s[ i-1 ] > Hi[ i ] )
 
       Hi[ i ] = Hi[ i-1 ]-s[ i-1 ];

 }



u = b*ATR(3);

for( i = 1; i < BarCount; i++ )
  {
       if( Lo[ i- 1]+u[ i-1 ] < Lo[ i ] )
 
       Lo[ i ] = Lo[ i-1 ]+u[ i-1 ];

 }



Plot(Hi, "Hi", 5, styleStaircase);
Plot(Lo, "Lo", 9, styleStaircase);



_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();





000 писал(а):


commenced писал(а):

2. В случае если линии lo и Hi не изменяются в течении n-баров (параметр), изменение произходит насильно на k*atr(3) (k параметр).

Насильно? А в какую сторону? И главное зачем. Подтягивать стоп в случае начавшегося флэта? Но в таком случае есть риск того, что на флете из-за подтягивания стопов запилит разворотами...


Поэтому и просил с переключателем, посмотреть, а стоит ли, теоритически ты доказал что нет Smile

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
commenced
Советник


Зарегистрирован: 08.04.2008
Сообщения: 643
Откуда: от "Верблюда"

СообщениеДобавлено: Вс Фев 08, 2009 2:15 pm Ответить с цитатой Вернуться к началу

Код:
k = Param("k", 1, 1, 15, 1);
d = Param("d",2, 1, 15, 1);
b = Param("b", 0.1, 0.1, 2, 0.1);
s = b*ATR(3);
 u = b*ATR(3);

filt = Ref((H-L)+abs(O-C),-1)*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 = L[i] - filt[i];
      if(LoN > Lo[i-1])
      {
         Lo[i] = LoN;
      }
      else
      {
         Lo[i] = Lo[i-1];
      }




       if( Lo[ i- 1]+u[ i-1 ] < Lo[ i ] )
 
       Lo[ i ] = Lo[ i-1 ]+u[ i-1 ];

 

      if(L[i] < Lo[i])   
      {
         trend[i] = 0;
         Hi[i] = H[i] + filt[i];
      }
      else trend[i] = 1;
   }
   if(trend[i-1] == 0)
   {
      HiN = H[i] + filt[i];
      if(HiN < Hi[i-1])
      {
         Hi[i] = HiN;
      }
      else
      {
         Hi[i] = Hi[i-1];
      }

 
       if( Hi[ i- 1]-s[ i-1 ] > Hi[ i ] )
 
       Hi[ i ] = Hi[ i-1 ]-s[ i-1 ];

 

      if(H[i] > Hi[i])
      {
         trend[i] = 1;
         Lo[i] = L[i] - filt[i];
      }
      else trend[i] = 0;
   }

}

Hi = IIf(!trend, Hi, Null);

Lo = IIf(trend, Lo, Null);



Plot(Hi, "Hi", 5, styleStaircase);
Plot(Lo, "Lo", 9, styleStaircase);



_SECTION_BEGIN("Price");
SetChartOptions(0,chartShowArrows|chartShowDates);
_N(Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}", O, H, L, C, SelectedValue( ROC( C, 1 ) ) ));
Plot( C, "Close", ParamColor("Color", colorBlack ), styleNoTitle | ParamStyle("Style") | GetPriceStyle() );
_SECTION_END();


Это модернизация, вроде неплохо получилось, да есть отличие от исходного кода, этот необратим.

Верхний мой, нижний Олега

_________________
Юра
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



Следующая тема
Предыдущая тема
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете вкладывать файлы
Вы не можете скачивать файлы


Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme :: Часовой пояс: GMT + 3

File Attachment © by Meik Sievertsen