
Стратегия использует метод trailing stop Wilder volatility, который в сочетании с показателями ATR и различными типами движущихся средних линий позволяет реализовать адаптивную стратегию trailing stop.
В основе этой стратегии лежит алгоритм trailing stop Wilder volatility. Вначале он вычисляет ATR, а затем, исходя из вводимых параметров, вычисляет длину и умножение ATR и получает динамическую стоп-линию. Затем он постоянно обновляет высокие и низкие точки стоп-линии в сочетании с ценой закрытия, самой высокой ценой и самой низкой ценой.
В коде сначала реализуются различные движущиеся средние значения, такие как RMA, EMA, SMA, Hull MA, через функцию f_ma. Затем вычисляется показатель ATR, умноженный на множитель, установленный пользователем, и получается стоп-линия, основанная на волатильности.
Эта стратегия гибко использует показатели ATR, различные типы средних линий и параметров, чтобы реализовать очень адаптивную стратегию стоп-стопа. Она может эффективно следить за тенденцией и останавливать убытки при большом отступлении рынка.
В первую очередь используется алгоритм Wilder Volatility Trailing Stop, который является проверенным и надежным методом для отслеживания трендов.
Стратегия использования ATR-индикатора для динамического расчета стоп-линий позволяет избежать превышения стоп-пойнтов. ATR-индикатор может эффективно отражать волатильность рынка и уровень риска.
В коде реализованы различные варианты равномерности, такие как RMA, EMA, SMA, Hull MA, что повышает адаптивность стратегии.
Изменение длины ATR, умножение параметров позволяет найти наиболее оптимальные параметры для различных рынков и оптимизировать эффективность стратегии.
Стратегия использует различные ценовые варианты, такие как максимальная цена, минимальная цена, цена закрытия, чтобы рассчитать линию стоп-лосса, которая может быть оптимизирована для разных сортов.
В целом, стратегия является надежной, адаптивной и легко оптимизируемой стратегией для отслеживания трендов и остановки убытков.
Стратегия основывается на оптимизации параметров, и для различных рынков и разновидностей необходимо тестировать, чтобы найти подходящую комбинацию ATR и множительных параметров, иначе остановка может быть неэффективной.
В шокирующих ситуациях, ATR стоп-линии могут часто возникать ситуации, которые вызывают стоп-убытки. Необходимо оптимизировать в сочетании с индикаторами для определения тенденции, чтобы избежать пропуска шокирующей тенденции.
Слишком мягкая стоп-линия может привести к упущению возможности вывести стоп-убыток; слишком жесткая стоп-линия может привести к увеличению частоты торгов и стоимости скольжения. Необходимо тщательное тестирование для поиска точки равновесия.
Многочисленные выборы средних линий могут привести к отклонению эффективности стратегии. Для конкретных сортов следует выбрать одну основную среднюю линию, а другие средние линии используются только в качестве вспомогательных ссылок.
Стратегия ориентирована на отслеживание тенденций, а не на непосредственную прибыль. Необходимо рассмотреть возможность использования в сочетании с другими стратегиями выхода из рынка или с остановкой.
При неправильном параметре может возникнуть проблема с слишком частой торговлей или слишком длительным временем хранения позиций. Это требует решения путем оптимизации.
Можно рассмотреть возможность использования трендовых показателей, чтобы определить, есть ли тенденция, и избежать попадания в ловушку во время шок.
Можно проверить добавление элемента обратного индикатора, который быстрее переключает стоп-позиции в сторону, когда иновертный тренд и многовертный тренд чередуются.
Можно попытаться связать параметры длины ATR с характеристиками торгуемых сортов, в которых используются разные настройки длины ATR.
Можно попробовать добавить показатель объема торгов, чтобы увеличить скорость сжатия стоп-линий при значительном сокращении объема торгов.
Можно рассматривать возможность увеличения убыли от отвода, но не слишком плотно, чтобы предотвратить убыль от нормального отвода.
Можно комбинировать оценку с другими показателями и оптимизировать параметры, а при недостаточной оценке можно снять пределы убытков.
Эта стратегия основана на идее Wilder Volatility Trailing Stop и использует индикатор ATR для разработки очень адаптивной стратегии стоп-стоп, которая может хорошо адаптироваться к различным видам торговли с помощью оптимизации параметров. Это надежная и практичная стратегия стоп-стоп. Но мы также должны быть внимательны к рискам, чтобы сделать ее более устойчивой и надежной, добавив элементы, такие как тенденционное суждение и объем торгов.
/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// Wilder's Volatility Trailing Stop Strategy with various MA's
// by SparkyFlary
//For Educational Purposes
//Results can differ on different markets and can fail at any time. Profit is not guaranteed.
strategy(title="Wilder's Volatility Trailing Stop Strategy with various MA's", shorttitle="Trailing Stop Strategy", overlay=true)
AtrMult = input(3.0, title="ATR multiplier")
ATRlength = input(7, title="ATR length")
ATRavgType = input("RMA", title="ATR moving average type", options=["RMA", "EMA", "SMA", "HULL"])
sicType = input("close", title="significant close type for trail calculation", options=["close", "high-low"])
//function for choosing moving averages
f_ma(type, src, len) =>
float result = 0
if type == "RMA" // Wilder's moving averaege or Running moving average
result := rma(src, len)
if type == "EMA" // Exponential moving average
result := ema(src, len)
if type == "SMA" // Simple moving average
result := sma(src, len)
if type == "HULL" // Hull moving average
result := wma(2 * wma(src, len / 2) - wma(src, len), round(sqrt(len)))
result
ATR = f_ma(ATRavgType, tr, ATRlength)
upperTrail = lowest(sicType=="close"?close:low, ATRlength) + AtrMult * ATR
lowerTrail = highest(sicType=="close"?close:high, ATRlength) - AtrMult * ATR
float TS = 0
TS := close < TS[1] ? upperTrail[1] : close > TS[1] ? lowerTrail[1] : TS
//plot
plot(TS, title="trailing stop", color=close<TS?color.red:color.green)
//Strategy
buy = crossover(close, TS)
//sell = close < TS
short = crossunder(close, TS)
//cover = close > TS
strategy.entry(id="enter long", long=true, when=buy)
//strategy.close(id="enter long", comment="exit long", when=sell)
strategy.entry(id="enter short", long=false, when=short)
//strategy.close(id="enter short", comment="exit short", when=cover)