Пользовательские индикаторы > SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

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

SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение evge » 18 окт 2019, 07:39

SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA
По мотивам: https://ru.tradingview.com/script/xEtpZd0t/

Параметры:
EmaPer - период EMA
TrPer - период ATR
factor - фактор влияния ATR.

Примеры работы:
SuperTrendEMA-01.png
SuperTrendEMA-01.png (37.54 КБ) 28746 просмотров


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

function Initialize()
{
IndicatorName = "SuperTrendEMA";
PriceStudy = true;
AddInput("Input", Inputs.Candle);
AddSeries("Trend", DrawAs.Line, Color.Black, false);
AddSeries("U", DrawAs.Custom, Color.Green, true);
AddSeries("D", DrawAs.Custom, Color.Red, true);

AddParameter("EmaPer", 4);
AddParameter("TrPer", 7);
AddParameter("factor", 1.7);
}

function Evaluate()
{

// evge 18.10.2019 https://alfadirect4.ru

var I = Input;
var E = EMA(I, EmaPer);
var A = ATR(I, TrPer);
var up = E[0] - (factor * A[0]);
var down = E[0] + (factor * A[0]);
U = E[1] > U[1] ? Math.Max(up, U[1]) : up;
D = E[1] < D[1] ? Math.Min(down, D[1]) : down;
Trend = E[0] > D[1] ? 1 : E[0] <U[1] ? -1 : Trend[1];

if (Trend == 1) U.DrawLine(); else D.DrawLine();

}


Скачать индикатор:

SuperTrendEMA.zip
(33.34 КБ) 1435 скачиваний
никогда такого не было и вот опять

m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение m4Dmitry » 18 окт 2019, 18:44

Спасибо!

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение State » 19 окт 2019, 00:30

Спасибо.

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

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

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение evge » 19 окт 2019, 22:40

А ваш код покажите?!
никогда такого не было и вот опять

m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение m4Dmitry » 20 окт 2019, 12:27

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

function Initialize()
{
   StrategyName = "SuperTrendEMA";
   AddParameter("P1", 7, "", 1);
   AddParameter("P2", 4, "", 1);
   AddParameter("P3", 2, "", 1);
   AddInput("Input1", Inputs.Candle, 30, true, "LKOH=МБ ЦК");
   LongLimit = 50;
   ShortLimit = 50;
   AddChartIndicator("MY.SuperTrendEMA", new Dictionary <string, string>{{"EmaPer", "P1"},{"TrPer", "P2"},{"factor", "P3"}});
}
function OnUpdate()
{
   var STema = MY.SuperTrendEMA(Input1, P1, P2, P3);
   /// ПРАВИЛО 1
   if ( STema["U"][0] > 0 )
   {
      EnterLong();
   }
   /// ПРАВИЛО 2
   if ( STema["D"][0] > 0 )
   {
      EnterShort();
   }
}
Последний раз редактировалось m4Dmitry 20 окт 2019, 13:03, всего редактировалось 1 раз.

m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение m4Dmitry » 20 окт 2019, 12:27

evge писал(а):А ваш код покажите?!

что-то вроде этого

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

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение evge » 21 окт 2019, 07:50

Т.к. в коде индикатора задается U и D постоянно, но при этом отображаются только в соответствии с значением из серии Trend (которая не отображается на графике), то лучше здесь использовать как индикатор смены тренда именно его:

где

Trend > 0 - рост
Trend < 0 - падение

и ещё здесь не актуальна проблема индикатора SuperTrend (отрисовка на 1 бар назад), и можно смотреть в текущий бар [0], т.е. STema["Trend"][0].

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

function Initialize()
{
   StrategyName = "SuperTrendEMA";
   AddParameter("P1", 7, "", 1);
   AddParameter("P2", 4, "", 1);
   AddParameter("P3", 2, "", 1);
   AddInput("Input1", Inputs.Candle, 30, true, "LKOH=МБ ЦК");
   LongLimit = 50;
   ShortLimit = -50;
   AddChartIndicator("MY.SuperTrendEMA", new Dictionary <string, string>{{"EmaPer", "P1"},{"TrPer", "P2"},{"factor", "P3"}});
}

function OnUpdate()
{
   var STema = MY.SuperTrendEMA(Input1, P1, P2, P3);
   /// ПРАВИЛО 1
   if ( STema["Trend"][0] > 0 )
   {
      EnterLong();
   }
   /// ПРАВИЛО 2
   if ( STema["Trend"][0] < 0 )
   {
      EnterShort();
   }
}


SuperTrendEMA-Strategy-01.png
SuperTrendEMA-Strategy-01.png (24.26 КБ) 28526 просмотров
никогда такого не было и вот опять

m4Dmitry
Сообщения: 72
Зарегистрирован: 21 май 2018, 22:04
Благодарил (а): 60 раз
Поблагодарили: 3 раза

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение m4Dmitry » 21 окт 2019, 09:16

Я так и думал, что его нужно будет завязывать!
Спасибо еще раз.

State
Сообщения: 35
Зарегистрирован: 08 окт 2018, 12:43
Поблагодарили: 1 раз

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение State » 31 окт 2019, 23:06

Возможно ли сделать такой алгоритм, по которому открытие позиции будет на второй свече всетаки? То есть сейчас первая свеча, пробившая уровень является сигнальной, вторая контрольной, на открытии третьей сигнал и открытие позиции (ну или на закрытии второй, в зависимости от настроек). Можно ли выдавать сигнал на вход уже на открытии второй свечи?

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

Re: SuperTrendEMA - трендовый индикатор, созданный на основе ATR и EMA

Непрочитанное сообщение evge » 01 ноя 2019, 07:56

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

Почему?

В OnUpdate() можно оперировать данными только по полностью закрытой свече. Точно надо знать что свеча полностью отрисована и известны все её параметры для оценки OHLC, Volume, OI !!! Только в момент первого тика следующей свечи, т.е. когда начинается рисоваться новая свеча OnUpdate() получит информацию, что предыдущая свеча отрисована и её можно анализировать. Для OnUpdate() это будет свеча под индексом [0], хотя в реальности произошёл первый тик следующей за ней свечи. Поэтому и исполнение произойдёт на этой следующей свече, которая только начала отрисовку.

Есть конечно UseCloseBar = false, но это другая история.

---

визуально может казаться, что пробой прошёл ранее по индикатору, но это не так. Так рисуется линия на графике, если на текущем баре я указываю рисовать линию, то отрисовка её будет идти от предыдущего бара до текущего и создается иллюзия, что смена тренда была на бар ранее. Кстати, до того же предыдущего бара рисуется и линия предыдущего тренда, обратите на это внимание.

Рисунок ниже:
Под первой стрелкой показано что тренд на этом баре меняется и там красная линия на этом же баре что и начало зеленой, это важно!
Сигнал не на этом же баре появился, а на следующем, полностью отрисованном, выполняется отсылка команды на открытие позиции и она будет открыта на открытии следующего бара за сигнальным, что почти одно и тоже что по цене закрытия сигнального бара.
SuperTrendEMA-Strategy-02.png
SuperTrendEMA-Strategy-02.png (7.79 КБ) 28135 просмотров
никогда такого не было и вот опять


Вернуться в «Пользовательские индикаторы»

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

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