
Эта стратегия использует индикатор EMA для определения тенденции цен на акции и, в сочетании со стандартным разрывом, позволяет отслеживать тенденцию. Основная идея заключается в том, чтобы рассчитать разницу между текущей ценой и EMA и установить минимальную стоимость покупки.
Стратегия сначала вычисляет разницу между ценой закрытия и длиной EMA в длину v. Затем вычисляет стандартную разницу в длину цикла v. Затем определяет коэффициент направления покупки k, где k - 1 для покупки и продажи, а k - 1 для покупки и продажи. Затем вычисляет порог сигнала покупки dev_limit, который представляет собой k, умноженное на dev и умноженное на ограничивающий фактор.
Стратегия предлагает два варианта:
Покупая понижение, мы покупаем dev_limit, когда v находится под отрицательным значением, т.е. следим за тенденцией к снижению.
Покупая вверх, мы покупаем, когда dev_limit, вставленный на v, отслеживает тенденцию к повышению.
В целом, стратегия позволяет отслеживать тренд путем динамического вычисления стандартной разницы между ценой и значениями EMA, устанавливая порог покупки.
Эта стратегия имеет следующие преимущества:
Используйте индикатор EMA для определения направления ценового тренда, индикатор EMA для сглаживания цены, эффективное определение тренда.
Динамические отклонения в сочетании со стандартным отклонением более адаптируются к изменениям рынка, чем фиксированные отклонения.
Существуют две модели покупки, которые позволяют отслеживать тенденцию к росту или тенденцию к снижению.
параметр factor предоставляет пространство для корректировки чувствительности к покупке. параметр ema_length может корректировать параметр оптимизации цикла EMA.
Стратегическая логика понятна и проста, ее легко понять и изменить.
Гибкость в управлении позициями, активная стратегия для отслеживания тенденций к убыванию.
Также существуют следующие риски:
EMA отстает и, возможно, пропустит поворотный момент.
Оптимизация зависит от параметров, которые могут быть слишком чувствительными или медленными, если они установлены неправильно.
Риск от преследования тенденции, который может привести к большим потерям, если тенденция изменится.
Частые многопрофильные преобразования приводят к частым сделкам.
Сигналы часто появляются в условиях сильных потрясений, что приводит к увеличению стоимости транзакций.
Для этих рисков можно рассмотреть возможность добавления стратегии контроля риска, оптимизации тестирования комбинации параметров для поиска оптимальных параметров, добавления фильтрующих условий, чтобы избежать слишком частого трейдинга и т. Д.
Эта стратегия может быть оптимизирована в следующих аспектах:
Тестирование эффективности параметров различных циклов EMA для поиска оптимальной длины цикла EMA.
Применяются различные значения для тестирования факторов, чтобы найти оптимальную чувствительность к порогу.
Оптимизация стратегий управления открытыми позициями, например, пополнение позиций в соответствии с тенденциями.
Добавить фильтры на другие показатели, чтобы избежать ошибок при шокирующей ситуации.
Увеличение стратегии сдерживания убытков, чтобы контролировать одиночные убытки.
Поиск оптимального сочетания параметров для двух моделей покупки.
Исследуйте сигналы об обратном тренде и отключите отслеживание тренда.
Стратегия основана на определении направления тренда EMA, а также на динамическом расчете порога, который генерирует сигнал покупки и продажи, позволяющий отслеживать тренд. Логика стратегии проста и ясна, можно гибко конфигурировать позиции, управлять позицией, активно отслеживать тренд. В то же время, стратегия также имеет определенный риск, требующий оптимизированного тестирования комбинации параметров, а также контроль риска в дополнение к стратегии StopIteration.
/*backtest
start: 2023-10-06 00:00:00
end: 2023-11-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Azzrael
// Based on EMA and EMA Oscilator https://www.tradingview.com/script/qM9wm0PW-EMA-Oscilator-Azzrael/
// (EMA - close) + Std Dev + Factor = detecting oversell/overbuy
// Long only!
// Pyramiding - sometimes, depends on ...
// There 2 enter strategies in one script
// 1 - Classic, buy on entering to OverSell zone (more profitable ~> 70%)
// 2 - Crazy, buy on entering to OverBuy zone (catching trend and pyramiding, more net profit)
// Exit - crossing zero of (EMA - close)
//@version=5
strategy("STR:EMA Oscilator [Azzrael]", overlay=false,
margin_long=100,
margin_short=100,
currency=currency.USD,
default_qty_type=strategy.percent_of_equity,
default_qty_value=30,
pyramiding=3)
entry_name="Buy"
ema_length = input.int(200, "Period", minval=2, step=10)
limit = input.float(1.7, "Factor", minval=1, step=0.1, maxval=10)
dno = input.string(defval="Buy on enter to OverSell", title="Model", options=["Buy on enter to OverSell", "Buy on enter to OverBuy"]) == "Buy on enter to OverSell"
v = close - ta.ema(close, ema_length)
dev = ta.stdev(v, ema_length)
k = dno ? -1 : 1
dev_limit = k*dev*limit
cond_long = dno ? ta.crossunder(v, dev_limit) : ta.crossover(v, dev_limit)
cond_close = ta.cross(v, 0)
// dev visualization
sig_col = (dno and v <= dev_limit) or (not dno and v >= dev_limit) ? color.green : color.new(color.blue, 80)
plot(dev_limit, color=color.green)
plot(k*dev, color=color.new(color.blue, 60))
plot(v, color=sig_col )
hline(0)
// Make love not war
strategy.entry(entry_name, strategy.long, when=cond_long)
strategy.close(entry_name, when=cond_close)