Стратегия SuperTrend для торговли Ethereum

Автор:Чао Чжан, Дата: 2024-01-08 14:35:37
Тэги:

img

Обзор

Эта стратегия основана на индикаторе SuperTrend и использует ATR для динамического установления линий стоп-лосса для получения прибыли от сильных тенденций в Ethereum.

Логика стратегии

Стратегия использует классический индикатор тренда - индикатор SuperTrend для определения направления тренда.

  1. Линия остановки потерь в восходящем тренде для хранения длинных позиций в восходящем тренде;
  2. Линия остановки по снижению тренда для хранения коротких позиций при снижении тренда.

Когда цена переходит от восходящего к нисходящему тренду, открыть короткую позицию.

Кроме того, стратегия использует индикатор ATR для динамической корректировки линии стоп-лосса. В частности, позиция линии стоп-лосса восходящего тренда представляет собой среднее значение наивысшего максимума и наименьшего минимума минус ATR, умноженное на коэффициент; позиция линии стоп-лосса нисходящего тренда представляет собой среднее значение наивысшего максимума и наименьшего минимума плюс ATR, умноженное на коэффициент. Это позволяет корректировать стоп-лосс на основе волатильности рынка.

После того, как сигналы входа будут задействованы, если цена выйдет выше линии остановки, остановитесь с потерей.

Преимущества

Это относительно зрелая тенденция, следующая стратегии с следующими преимуществами:

  1. Использовать индикатор SuperTrend для надежного определения направления тренда;
  2. применять адаптивные методы ATR для сдерживания потерь с целью эффективного контроля рисков;
  3. Простая и понятная логика стратегии, легко понятная и модифицируемая;
  4. Прибыльно на криптовалютном рынке с высокой волатильностью.

Риски

Эта стратегия также сопряжена с некоторыми рисками:

  1. Вероятность ошибочного суждения индикатора SuperTrend может привести к ненужным потерям;
  2. Стоп-лосс ATR может быть слишком агрессивным, он может быть остановлен переворотами цен;
  3. Высокая волатильность на крипторынках увеличивает вероятность того, что на них будет нанесено стоп-лосс;
  4. Более высокие комиссионные за транзакции на некоторых биржах влияют на конечную прибыльность.

Для смягчения вышеуказанных рисков коэффициент ATR может быть скорректирован или добавлены фильтры с другими показателями.

Направления к улучшению

Есть возможности для дальнейшего совершенствования:

  1. Ввести больше показателей для повышения точности сигнала;
  2. Исследование оптимальных значений длины и коэффициента ATR;
  3. Внедрение динамического размещения позиций на основе соотношения риск-прибыль;
  4. Проверьте эффективность стратегии в более крипто-торговых парах.

Заключение

В целом, это зрелая и надежная стратегия следования тренду. Он использует индикатор SuperTrend для определения направления тренда и адаптирует стоп-лосс с ATR для контроля рисков при получении прибыли. Стратегия хорошо работает для криптовалют с высокой волатильностью, таких как Ethereum. Дальнейшие оптимизации могут расширить его применение на большее количество рынков для стабильной выгоды.


/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4 
strategy("SuperTrend Strategy", 
     overlay=true, 
     initial_capital=2e3, 
     process_orders_on_close=true, 
     commission_type=strategy.commission.percent, 
     commission_value=0.1 
     ) 
  
length = input(title="ATR Period", type=input.integer, defval=21) 
mult = input(title="ATR Multiplier", type=input.float, step=.25, defval=6.2) 
wicks = input(title="Take Wicks into Account ?", type=input.bool, defval=false) 
  
useDate = input(title="Start from Specific Date ?", defval=false) 
yearStart = input(title="Start Year", defval=2019) 
monthStart = input(title="Start Month", minval=1, maxval=12, defval=1) 
dayStart = input(title="Start Day", minval=1, maxval=31, defval=1) 
  
startTime = timestamp(yearStart, monthStart, dayStart, 0, 0) 
startFrom = useDate ? time(timeframe.period) >= startTime : true 
  
atr = mult * ta.atr(length) 
  
longStop = hl2 - atr 
longStopPrev = nz(longStop[1], longStop) 
longStop := (wicks ? low[1] : close[1]) > longStopPrev ? math.max(longStop, longStopPrev) : longStop 
  
shortStop = hl2 + atr 
shortStopPrev = nz(shortStop[1], shortStop) 
shortStop := (wicks ? high[1] : close[1]) < shortStopPrev ? math.min(shortStop, shortStopPrev) : shortStop 
  
dir = 1 
dir := nz(dir[1], dir) 
dir := dir == -1 and (wicks ? high : close) > shortStopPrev ? 1 : dir == 1 and (wicks ? low : close) < longStopPrev ? -1 : dir 
  
longColor = color.green 
shortColor = color.red 
  
plot(dir == 1 ? longStop : na, title="Long Stop", style=plot.style_linebr, linewidth=2, color=longColor) 
plotshape(dir == 1 and dir[1] == -1 ? longStop : na, title="Long Start", location=location.absolute, style=shape.circle, size=size.tiny, color=longColor, transp=0) 
  
plot(dir == 1 ? na : shortStop, title="Short Stop", style=plot.style_linebr, linewidth=2, color=shortColor) 
plotshape(dir == -1 and dir[1] == 1 ? shortStop : na, title="Short Start", location=location.absolute, style=shape.circle, size=size.tiny, color=shortColor, transp=0) 
  
longCondition = dir[1] == -1 and dir == 1 
if longCondition and startFrom 
    strategy.entry("Long", strategy.long, stop=longStop) 
else 
    strategy.cancel("Long") 
  
shortCondition = dir[1] == 1 and dir == -1 
if shortCondition and startFrom 
    strategy.entry("Short", strategy.short, stop=shortStop) 
else 
    strategy.cancel("Short")
    

Больше