Стратегия Альфа-Тренда с последующим остановкой потери является улучшенной версией Стратегии Альфа-Тренда, включающей механизм последующего остановки потери, который может более эффективно контролировать риски и улучшать общую доходность.
Стратегия сначала использует индикатор Альфа для определения ценовых тенденций. Когда индикатор Альфа поднимается, это бычий сигнал. Когда индикатор Альфа падает, это медвежий сигнал. Стратегия генерирует сигналы покупки и продажи на основе золотого креста и мертвого креста индикатора Альфа.
В то же время активирован механизм последнего стоп-лосса. Уровень последнего стоп-лосса по умолчанию составляет 10% от цены закрытия дня. При хранении длинных позиций, если цена падает ниже уровня стоп-лосса, стратегия выйдет из позиции, чтобы остановить потерю. Аналогично для коротких позиций. Это помогает лучше зафиксировать прибыль и снизить риски.
Альфа-тенденция обладает более сильными возможностями для определения ценовых тенденций, чем простые скользящие средние и другие показатели.
Посредством возможности отслеживания стоп-лосса можно эффективно контролировать убытки от одной сделки, снижая риски.
Эта стратегия обладает сильной способностью контролировать риски. Даже при неблагоприятных рыночных условиях потери могут быть сведены к минимуму.
При меньшем количестве эталонных входов эта стратегия эффективна в расчете и подходит для торговли на высокой частоте.
На рынках с боковым диапазоном, стратегия может генерировать много ненужных торговых сигналов, увеличивая затраты на торговлю и потери от скольжения.
При включении последующего стоп-лосса процент стоп-лосса должен быть установлен соответствующим образом.
При резких колебаниях цен вероятность того, что стап-лосс будет задействован, значительно возрастет, что увеличит риск блокировки позиций.
При оптимизации параметров стоп-лосса следует учитывать различные факторы, в том числе характеристики базового продукта и частоту торговли, а не только максимальную доходность.
Вышеперечисленные риски могут быть уменьшены путем корректировки параметров индикатора Альфа, установки DYNAMIC стоп-лосса, сокращения длины торгового цикла и т.д.
Для поиска более подходящих комбинаций параметров индикатора Альфа можно проверить различные параметры индикатора.
Попытка установить процентные ставки стоп-лосса динамически на основе ATR для лучшего адаптации к колебаниям рынка.
Комбинируйте с другими индикаторами, такими как MACD, KD, чтобы отфильтровать некоторые ложные сигналы.
Параметры могут быть автоматически оптимизированы на основе результатов торговли в режиме реального времени и обратного тестирования с использованием методов машинного обучения для улучшения интеллекта выбора параметров.
Альфа-стратегия тренда с отслеживанием стоп-лосса сочетает в себе определение тренда и контроль рисков. Она может эффективно идентифицировать ценовые тенденции и блокировать прибыль для снижения рисков. По сравнению с простыми стратегиями отслеживания тренда, эта стратегия может получить более высокую устойчивую отдачу.
/*backtest start: 2023-10-27 00:00:00 end: 2023-11-26 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/ // author © KivancOzbilgic // developer © KivancOzbilgic //@version=5 strategy("AlphaTrend Strategy", shorttitle='ATst', overlay=true, format=format.price, precision=2, margin_long=100, margin_short=100) coeff = input.float(1, 'Multiplier', step=0.1) AP = input(14, 'Common Period') ATR = ta.sma(ta.tr, AP) src = input(close) showsignalsk = input(title='Show Signals?', defval=false) novolumedata = input(title='Change calculation (no volume data)?', defval=false) upT = low - ATR * coeff downT = high + ATR * coeff AlphaTrend = 0.0 AlphaTrend := (novolumedata ? ta.rsi(src, AP) >= 50 : ta.mfi(hlc3, AP) >= 50) ? upT < nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : upT : downT > nz(AlphaTrend[1]) ? nz(AlphaTrend[1]) : downT color1 = AlphaTrend > AlphaTrend[1] ? #00E60F : AlphaTrend < AlphaTrend[1] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3) k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3) fill(k1, k2, color=color1) buySignalk = ta.crossover(AlphaTrend, AlphaTrend[2]) sellSignalk = ta.crossunder(AlphaTrend, AlphaTrend[2]) K1 = ta.barssince(buySignalk) K2 = ta.barssince(sellSignalk) O1 = ta.barssince(buySignalk[1]) O2 = ta.barssince(sellSignalk[1]) plotshape(buySignalk and showsignalsk and O1 > K2 ? AlphaTrend[2] * 0.9999 : na, title='BUY', text='BUY', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(#0022FC, 0), textcolor=color.new(color.white, 0)) plotshape(sellSignalk and showsignalsk and O2 > K1 ? AlphaTrend[2] * 1.0001 : na, title='SELL', text='SELL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.maroon, 0), textcolor=color.new(color.white, 0)) // //ENTER SOME SETUP TRADES FOR TSL EXAMPLE // longCondition = ta.crossover(ta.sma(close, 10), ta.sma(close, 20)) // if longCondition // strategy.entry('My Long Entry Id', strategy.long) // shortCondition = ta.crossunder(ta.sma(close, 10), ta.sma(close, 20)) // if shortCondition // strategy.entry('My Short Entry Id', strategy.short) longCondition = buySignalk if (longCondition) strategy.entry("Long", strategy.long) shortCondition = sellSignalk if (shortCondition) strategy.entry("Short", strategy.short) enableTrailing = input.bool(title='Enable Trailing Stop (%)',defval = true) //TRAILING STOP CODE trailStop = input.float(title='Trailing (%)', minval=0.0, step=0.1, defval=10) * 0.01 longStopPrice = 0.0 shortStopPrice = 0.0 longStopPrice := if strategy.position_size > 0 stopValue = close * (1 - trailStop) math.max(stopValue, longStopPrice[1]) else 0 shortStopPrice := if strategy.position_size < 0 stopValue = close * (1 + trailStop) math.min(stopValue, shortStopPrice[1]) else 999999 //PLOT TSL LINES plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop') plot(series=strategy.position_size < 0 ? shortStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Short Trail Stop', offset=1, title='Short Trail Stop') if enableTrailing //EXIT TRADE @ TSL if strategy.position_size > 0 strategy.exit(id='Close Long', stop=longStopPrice) if strategy.position_size < 0 strategy.exit(id='Close Short', stop=shortStopPrice)