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



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

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

Добрый день!
Изучаю коды индикаторов, выложенные на этом сайте.
Добрался до "Индикатора окончания тенденции на основе стандартной ошибки". (страничка)
После применения индикатора на данные, получаю вот что (скриншот внизу сообщения).

Красные столбы, обозначающие окончание тенденции, появляются не там, где изменяется тенденция, а через 3 бара.

Попробовал поменять код на
Код:
startRegressionLength = LastValue(Param("startRegressionLength", 7, 6, 15, 1));


На столбах это не отразилось.

Что я делаю не так?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Угу. Действительно. Есть такая фигня. Посмотрю в чем там дело. Только не сегодня и не завтра. Постараюсь в понедельник.

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


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

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

Спасибо за замечание. Обнаружил ошибки в коде. Вроде исправил.

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



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

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

Олег, спасибо, теперь работает!

Вопрос появился:
насколько я понял, ширина канала задается строкой
Код:
Level = EMA(abs(C-Ref(C, -1)), 100);


Каким образом можно "поиграть" с шириной канала?
Я имею ввиду, что в этой формуле нужно изменить, чтобы изменить ширину канала?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Torino писал(а):

Вопрос появился:
насколько я понял, ширина канала задается строкой
Код:
Level = EMA(abs(C-Ref(C, -1)), 100);


Каким образом можно "поиграть" с шириной канала?
Я имею ввиду, что в этой формуле нужно изменить, чтобы изменить ширину канала?

Совершенно верно. Этой строкой.
Можно, например, попробовать для изменения "ширины" канала умножить на коэффициент.
Код:

Level = EMA(abs(C-Ref(C, -1)), 100) *
Param("Level koeff", 1, 0.5, 2, 0.1);

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



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

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

Спасибо!
Отличная функция Param.
Попробую заменить ее на Optimize и подобрать подходящие параметры для моих данных.
Посмотреть профиль Отправить личное сообщение
Torino



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

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

Такой вопрос: как учесть наличие "окна" (скачка) в графике (см. картинку) ?

Например: при обнаружении окна (и принудительно в начале торговой сессии) начать построение линии регрессии с текущей свечи.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Torino писал(а):
Такой вопрос: как учесть наличие "окна" (скачка) в графике (см. картинку) ?

Например: при обнаружении окна (и принудительно в начале торговой сессии) начать построение линии регрессии с текущей свечи.

По идее просто.
В начале кода надо добавить идентификацию гепа. Например
Код:

gap = O < Ref(L, -1) or O > Ref(H, -1);

А потом в цикле принудительно прерывать регрессию в случае возникновения гепа. Примерно так
Код:

  if(StError(i - StartBar, i) < Level[i] OR !gap) // прорыв отсутствует
  {
   j = i - StartBar; // длинна линии регрессии
   Error[i] = StError(j, i); // обращение к функции. Величина ошибки на текущем баре
  }
  else // Прорыв. Начало отсчета новой регрессии
  {
   RegressionEnd[i] = 1; // отмечаем конец предыдущей тенденции
   if(i + startRegressionLength >= BarCount)
    break;

Примерно так. К сожалению сейчас проверить как это работает не могу.

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



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

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

Спасибо!
Разбираюсь.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Ошибочка.
В этой строке
Код:

if(StError(i - StartBar, i) < Level[i] OR !gap) // прорыв отсутствует

надо
Код:

if(StError(i - StartBar, i) < Level[i] AND !gap) // прорыв и геп отсутствуют

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



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

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

Понятно
Посмотреть профиль Отправить личное сообщение
max



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

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

Если интересно, у меня есть код от комрада Lee, в котором он рисует регрессионый канал в виде гистограммы. ну и соответственно как только пересекаем 0 считаем что цена вышла из канала и пошла своим путем
может будет интересен, ну или по крайней мере вариант в afl так же не помешает Smile

исходник естественно на Изи
Посмотреть профиль Отправить личное сообщение
Torino



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

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

Спасибо за предложение, но мне бы с afl сначала разобраться )))
Посмотреть профиль Отправить личное сообщение
Torino



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

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

После внесения правок в код получил такую ошибку:
Код:
Error 6. Condition in if, while, for statements has to be Numeric OR Boolean type.
You can NOT use array here, please use [] (array subscript operator) to access array element


Поставил скобки:
Код:
if(StError(i - StartBar, i) < Level[i] AND !gap[i]) // прорыв и геп отсутствуют


Получил вот такую картину (см. приложенный файл)

Т.е. начало оценки ошибки началось до появления скачка.
Вернул старый код. Положение зеленой линии не изменилось.

Я намудрил с [i] ?
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

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

Проверил. Все правильно. Именно в том месте геп игнорируется потому, что предыдущая тенденция закончилась совсем незадолго перед гепом, а для построения регрессиинеобходимо минимум 3 бара. Поскольку новая регрессия начинает строится с момента окончания старой, то код в этом месте "перепрыгивает" три бара
строка
Код:

i = i + startRegressionLength;

Вот поэтому код и не замечает этого гепа. В остальных случаях работает нормально.
Вот, сижу думаю как сделать.. Sad

_________________
ceterum censeo carthaginem esse delendam
Удачи. Олег.
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen