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



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

СообщениеДобавлено: Чт Апр 21, 2011 3:34 pm Ответить с цитатой Вернуться к началу

Господа, помогите, пожалуйста, разобраться с Параболиком.

Нашел серьезный недостаток, с которым провозился весь день и никак не могу не то, что исправить, а понять и с которым применение индикатора невозможно.

Для примера взял 5-минутный фьючерс на РТС (RIM1) по данным на 18.04.11.

Значение параметров Параболика для пущей простоты: 0.02, 0.02

18.04.11 в 17:00 происходит пересечение сверху вниз параболика.

Теперь, новое значение SAR предыдущий локальный максимум, т.е. 196770 (см. рис. 1). Здесь все нормально, локальные максимумы и минимумы Ами считает верно.

На следующем баре значение Параболика по формуле Wildera должно быть 196710.3

Найдена так: ((Минимум на текущем - SAR на пред.) * acelleration factor) + SAR на предыдущем баре)
ИЛИ ((193785 - 196770) * 0.02) + 196770) = 196710.3.

Откуда Ами берет значение 196739.59 остается для меня большой загадкой, которую без вашей помощи разрешить никак не могу. (см. рисунок 2).

Отсюда идет неправильный расчет параболика на последующих барах и невозможность применения торговых стратегий с этим индикатором.

P.S. Проводил проверку Параболика с этими же значениями в Wealth-Lab 4, рассчитывается все как надо.

В основе параболика родная формула Ами
Код:
_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();

/////////////////////////////////
// Parabolic SAR re-implemented in
// native AFL.
//
// Example of for/if/else control statements
//
// Requires:
// AmiBroker 4.31.1
//
// Written by: Tomasz Janeczko

IAF = 0.02;       // acceleration factor
MaxAF = 0.02;     // max acceleration

psar = Close;      // initialize
long = 1;        // assume long for initial conditions
af = IAF;         // init acelleration factor
ep = Low[ 0 ];   // init extreme point
hp = High [ 0 ];
lp = Low [ 0 ];

for( i = 2; i < BarCount; i++ )
{
   if ( long )
   {
      psar [ i ] = psar [ i-1 ] + af * ( hp - psar [ i-1 ] );
   }
   else
   {
      psar [ i ] = psar [ i-1 ] + af * ( lp - psar [ i-1 ] );
   }

   reverse =  0;
   //check for reversal
   if ( long )
   {
      if ( Low [ i ] < psar [ i ]  )
      {
         long = 0; reverse = 1; // reverse position to Short
         psar [ i ] =  hp;       // SAR is High point in prev trade
         lp = Low [ i ];
         af = IAF;
      }
   }
   else
   {
      if ( High [ i ] > psar [ i ]  )
      {
         long = 1; reverse = 1;        //reverse position to long
         psar [ i ] =  lp;
         hp = High [ i ];
         af = IAF;
      }
   }

   if ( reverse == 0 )
   {
      if ( long )
      {
         if ( High [ i ] > hp )
         {
            hp = High [ i ];
            af = af + IAF;
            if( af > MaxAF ) af = MaxAF;
         }
             
         if( Low[ i - 1 ] < psar[ i ] ) psar[ i ] = Low[ i - 1 ];
         if( Low[ i - 2 ] < psar[ i ] ) psar[ i ] = Low[ i - 2 ];
      }
       else
      {
         if ( Low [ i ] < lp ) 
         {
            lp = Low [ i ];
            af = af + IAF;
            if( af > MaxAF ) af = MaxAF;
         }   
            
         if( High[ i - 1 ] > psar[ i ] ) psar[ i ] = High[ i - 1 ];
         if( High[ i - 2 ] > psar[ i ] ) psar[ i ] = High[ i - 2 ];

      }
   }
}

Plot( Close, "Price", colorBlack, styleCandle );
Plot( psar, "SAR", colorRed, styleDots | styleNoLine | styleThick );
Посмотреть профиль Отправить личное сообщение
Ivan



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

СообщениеДобавлено: Чт Апр 21, 2011 3:46 pm Ответить с цитатой Вернуться к началу

Вдогонку важный факт.

В качестве примера я выбрал картину, где каждый последующий бар обновляет низы.
Если взять ситуацию, где после того, как произошел переворот из лонга в шорт и следующий бар не ставит новый минимум, то Ами считает значение параболика правильно.

Ну, а если же цена обновляет низы, то тогда расчет параболика неправильный.
В общем какой-то парадокс.
Надеюсь на помощь.
Посмотреть профиль Отправить личное сообщение
000
Site Admin


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

СообщениеДобавлено: Чт Апр 21, 2011 10:28 pm Ответить с цитатой Вернуться к началу

Прежде чем утверждать правильно/неправильно считает надо смотреть точный алгоритм расчетов SAR. Довольно давно я писал сам AFL для параболика чтобы не использовать встроенный. Оказалось, что в сети полно разных алгоритмов. Отличаются не принципиально, но отличия есть. Вопрос в том, какой из них действительно правильный.

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


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

СообщениеДобавлено: Чт Апр 21, 2011 10:34 pm Ответить с цитатой Вернуться к началу

Сейчас специально сравнил параболик из первого сообщения и встроенный. Считают абсолютно одинаково. т.е. Томаш использовал одинаковый алгоритм.

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



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

СообщениеДобавлено: Пт Апр 22, 2011 8:56 am Ответить с цитатой Вернуться к началу

Олег, по сути основная формула - это формула Уайлдера. Я понимаю, что существует куча модификаций, но хотелось бы иметь базовую формулу автора.

В Wealth-Lab есть базовая формула и формула с модификациями (современная версия).

То, что считает Ами полностью не сходится с WL на одних и тех же данных.

Вот и пытаюсь понять почему.
На сколько я понял, что код в Ами начинает "глючить", когда цена после переворота делает новый локальный максимум/минимум, что-то происходит с accel. factor.

На всякий случай вложил формулу из книги Уайлдера, оригинал.

Спасибо.
Посмотреть профиль Отправить личное сообщение
spitfire



Зарегистрирован: 29.04.2010
Сообщения: 729
Откуда: Moscow

СообщениеДобавлено: Пт Апр 22, 2011 12:44 pm Ответить с цитатой Вернуться к началу

Когда то писал свою версию параболика чтобы его направление всегда совпадало с направлением моей системы.. Формула Уайлдера везде одинаковая, но есть различия в стартовом значении индюка при перевороте - в разных прогах оно считается по разному, оттого и несовпадения:
При лонг-направлении стратовое значение индюка после переворота из шорта - это лой за период 4.
При шорт-направлении - хай за этот же период.
И это значение периода для подсчета хая/лоя могет различаться в разных версиях.
Как то так, писал по памяти Smile
Посмотреть профиль Отправить личное сообщение ICQ Number
Ivan



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

СообщениеДобавлено: Пт Апр 22, 2011 1:18 pm Ответить с цитатой Вернуться к началу

spitfire писал(а):
Когда то писал свою версию параболика чтобы его направление всегда совпадало с направлением моей системы.. Формула Уайлдера везде одинаковая, но есть различия в стартовом значении индюка при перевороте - в разных прогах оно считается по разному, оттого и несовпадения:
При лонг-направлении стратовое значение индюка после переворота из шорта - это лой за период 4.
При шорт-направлении - хай за этот же период.
И это значение периода для подсчета хая/лоя могет различаться в разных версиях.
Как то так, писал по памяти Smile


ясно, спасибо за разъяснения. Получается, что придется прогить строго свой, другого не дано
Посмотреть профиль Отправить личное сообщение
KnyazSeverov



Зарегистрирован: 06.09.2010
Сообщения: 55
Откуда: Rostov-on-Don

СообщениеДобавлено: Сб Апр 23, 2011 8:42 pm Ответить с цитатой Вернуться к началу

Ivan писал(а):

ясно, спасибо за разъяснения. Получается, что придется прогить строго свой, другого не дано

Ну со временем многие трейдеры начинают переписывать большую часть индикаторов под себя, так сказать под конкретные задачи, попутно устраняя всевозможные недостатки и "узкие места". Так что привыкайте Smile
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
KnyazSeverov



Зарегистрирован: 06.09.2010
Сообщения: 55
Откуда: Rostov-on-Don

СообщениеДобавлено: Сб Апр 23, 2011 9:11 pm Ответить с цитатой Вернуться к началу

Порылся в архивах, нашел такой вот вариант. Может пригодится Smile

Писал несколько лет назад. Помню боролся с запаздыванием, заглядыванием в будущее и добавлял адаптивность. Код писал с нуля.
Посмотреть профиль Отправить личное сообщение Отправить e-mail ICQ Number
Показать сообщения:      
Начать новую тему  Ответить на тему


 Перейти:   



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


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

File Attachment © by Meik Sievertsen