SAR (Stop And Reverse) – стоп и реверс > ParabolicSAR (Parabolic Stop And Revers) – параболическая система

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

ParabolicSAR (Parabolic Stop And Revers) – параболическая система

Непрочитанное сообщение evge » 07 фев 2016, 10:35

Параболическая система (Parabolic SAR – Parabolic Stop and Reverse) – это индикатор, отражающий текущий уровень следящего стоп–приказа, который постоянно подтягивается к цене. Уровень следящего стоп–приказа рассчитывается по формуле:

SAR(t) = SAR(t-1) + AF*(EP-SAR(t-1)),

где SAR(t) – текущее значение стопа; SAR(t-1) – предыдущее значение стопа; EP – текущий экстремум в направлении позиции Параболика; AF – фактор ускорения. Фактор ускорения AF изначально равен параметру Step, далее увеличивается с каждым новым экстремумом AF = AF + Step, но не превышает заданного максимального значения MaxStep.

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

Параметры: Шаг (Step) – начальное значение AF и шаг его изменения при появлении нового экстремума в направлении текущей позиции. Макс. (MaxStep) – максимальное значение, которое может принимать фактора «ускорение» AF.

Настройка параметров

Типовыми параметрами Параболика являются: Шаг(Step) = 0,02, Макс(МахStep) = 0,2.

Если сравнить формулу индикатора Параболика с EMA, то видно, что коэффициент AF в Параболике соответствует коэффициенту 2/(N+1) в EMA, где N – период EMA. Тогда при типовых параметрах, период экспоненциального сглаживания экстремумов начинается со периода 99 и доходит до периода почти равного 10 при формировании нескольких новых экстремумов в направлении текущей позиции.

Исходя из этого можно оценить работоспособность индикатора с типовыми параметрами и предположить необходимые параметры индикатора на выбранном тайм-фрейме. Пример. Если есть бумага, на которой быстрый тренд контролируется индикатором EMA(50), то максимальное значение будет равно 0,04.

Сигналы

Сигналом для совершения операции является пересечение графика цены с линией SAR, что означает окончание предыдущего движения (разворот тренда, либо его временную стабилизацию на данном уровне). Индикатор является исключительно трендовым.

Пример:

PSAR-00.png
PSAR-00.png (27.29 КБ) 28887 просмотров


Исходный текст:

Код: Выделить всё

function Initialize()
{
IndicatorName = "ParabolicSAR";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddParameter("Step", 0.02);      // начальный шаг
AddParameter("Maximum", 0.2);    // максимальный шаг
AddGlobalVariable("dirlong", Types.Long, 1);
AddGlobalVariable("last_high", Types.Double, 0.0);
AddGlobalVariable("last_low", Types.Double, 0.0);
AddGlobalVariable("ep", Types.Double, 0.0);
AddGlobalVariable("start", Types.Double, 0.0);
AddSeries("ParabolicSAR", DrawAs.Line, Color.Blue);
}

function Evaluate()
{
// AlfaDirect. 2014. OX
// Индикатор ParabolicSAR. Автор: Уэллс Уайлдер (Welles Wilder). 
// Реализация по MQL4. Совпадает с MetaStock.
var sar = 0.0;
var price = 0.0;
var price_low = 0.0;
var price_high = 0.0;

if (CurrentIndex < 3)
 {
     start = Step;
     dirlong = 1;
     ep = Input.High[0];
     last_high = Input.High[0];
     last_low = Input.Low[0];
     ParabolicSAR = Input.Low[0];
  }
else
{
    price_low = Input.Low[0];
    price_high = Input.High[0];
    if (dirlong == 1 && price_low < ParabolicSAR[1])
    {   // Если позиция лонг и стоп параболик
        dirlong = 0;
        start = Step;
        ep = price_low;
        last_low = price_low;
        ParabolicSAR = last_high;
        return;
    }
    if (dirlong < 1 && price_high > ParabolicSAR[1])
    {   // Если позиция лонг и стоп параболик   
        dirlong = 1;
        start = Step;
        ep = price_high;
        last_high = price_high;
        ParabolicSAR = last_low;
        return;
    }
    price = ParabolicSAR[1];
    sar = price + start * (ep - price);
    if (dirlong == 1)
     {
        if ((ep < price_high) && ((start + Step) <= Maximum))
           start = start + Step;
        price = Input.Low[1];
        if (sar > price)
            sar = price;
        price = Input.Low[2];
        if (sar > price)
            sar = price;
        if (sar > price_low)
         {
            start = Step;
            dirlong = 0;
            ep = price_low;
            last_low = price_low;
            ParabolicSAR = last_high;
            return;
         }
        if (ep < price_high)
         {
            last_high = price_high;
            ep = price_high;
         }
     }
    else
     {
        if ((ep > price_low) && ((start + Step) <= Maximum))
            start = start + Step;
        price = Input.High[1];
        if (sar < price)
            sar = price;
        price = Input.High[2];
        if (sar < price)
            sar = price;
        if (sar < price_high)
        {
            start = Step;
            dirlong = 1;
            ep = price_high;
            last_high = price_high;
            ParabolicSAR = last_low;
            return;
        }

        if (ep > price_low)
         {
            last_low = price_low;
            ep = price_low;
        }
    }
    ParabolicSAR = sar;
  }
}


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

abelok
Сообщения: 23
Зарегистрирован: 20 ноя 2016, 07:43
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: ParabolicSAR (Parabolic Stop And Revers) – параболическая система

Непрочитанное сообщение abelok » 26 янв 2018, 09:43

Не получается обратиться к параболику:
" Имя ParabolicSAR отсутствует в текущем контексте"
С другими (которые я использую) встроенными индикаторами всё нормально.

Аватара пользователя
evge
Администратор
Сообщения: 1807
Зарегистрирован: 04 фев 2016, 09:46
Откуда: Млечный путь, планета Земля
Благодарил (а): 83 раза
Поблагодарили: 361 раз
Контактная информация:

Re: ParabolicSAR (Parabolic Stop And Revers) – параболическая система

Непрочитанное сообщение evge » 26 янв 2018, 15:04

Если к пользовательскому обращаетесь, то так MY.ParabolicSAR(...)

Если к встроенному, то там имя другое PSAR(...).

Всегда можно в конструкторе стратегий подглядеть как правильно надо писать

Запускаем конструктор стратегии, добавляем в правило новое условие и выбираем там наш встроенный PSAR и смотрим в коде как это выглядит, через кнопку "Исходный код". Да и вообщем-то в правилах уже сразу видно как правильно.

PSAR-01.png
PSAR-01.png (28.92 КБ) 28058 просмотров

PSAR-02.png
PSAR-02.png (35.78 КБ) 28058 просмотров
никогда такого не было и вот опять

abelok
Сообщения: 23
Зарегистрирован: 20 ноя 2016, 07:43
Благодарил (а): 1 раз
Поблагодарили: 3 раза

Re: ParabolicSAR (Parabolic Stop And Revers) – параболическая система

Непрочитанное сообщение abelok » 26 янв 2018, 15:51

Спасибо.
Пользовался "скриптами от АД4...". А не конструктором стратегий.


Вернуться в «SAR (Stop And Reverse) – стоп и реверс»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость