Эта стратегия является системой, следующей за трендом, которая сочетает индикатор AlphaTrend с адаптивной скользящей средней Кауфмана (KAMA), а также включает в себя функции управления рисками. Стратегия направлена на захват рыночных тенденций при управлении риском посредством частичного получения прибыли. В основе стратегии используется индикатор AlphaTrend для определения общего направления тренда, в то время как KAMA используется для генерации более точных сигналов входа и выхода. Кроме того, стратегия включает в себя процентный механизм частичного получения прибыли для блокировки прибыли при достижении конкретных целей.
Расчет индикатора Альфа-Тренда:
Расчет KAMA:
Производство торговых сигналов:
Управление рисками:
Управление позициями:
Сильная адаптация к трендам: комбинация AlphaTrend и KAMA позволяет лучше адаптироваться к различным рыночным условиям.
Высокая надежность сигнала: многократное подтверждение условий повышает надежность торговых сигналов.
Комплексное управление рисками: механизм частичного получения прибыли помогает обеспечить прибыль на волатильных рынках.
Гибкое управление позициями: размер позиций, основанный на капитале, адаптируется к различным шкалам капитала.
Отличная визуализация: стратегия обеспечивает четкий графический интерфейс для легкого анализа и мониторинга.
Риск ложного прорыва: может вызывать частые ложные сигналы на нестабильных рынках.
Lag: как стратегия, следующая за трендом, она может медленно реагировать на изменение тренда.
Чувствительность параметров: производительность стратегии может быть чувствительна к параметрам.
Риск снижения прибыли: частичное получение прибыли может привести к тому, что вы пропустите крупные движения на сильно развивающихся рынках.
Приспособляемость рынка: Стратегия может быть менее эффективной в определенных специфических рыночных условиях.
Динамическая регулировка параметров:
Анализ в разные периоды времени:
Фильтрация волатильности:
Интеллектуальная стоп-лосс:
Классификация рынка:
Adaptive Trend Following Strategy, объединяющая AlphaTrend и KAMA с управлением рисками, является всеобъемлющей и мощной торговой системой. Она достигает точного улавливания рыночных тенденций путем объединения сильных сторон индикатора AlphaTrend и KAMA. Механизмы управления рисками стратегии, особенно функция частичного получения прибыли, предоставляют трейдерам эффективный инструмент для защиты прибыли на волатильных рынках. Хотя существуют врожденные риски, такие как ложные прорывы и чувствительность параметров, постоянная оптимизация и корректировка дают этой стратегии потенциал стать надежной торговой системой. Будущие направления оптимизации, такие как динамическая корректировка параметров и многовременный анализ, еще больше повысят адаптируемость и надежность стратегии
/*backtest start: 2024-06-01 00:00:00 end: 2024-06-30 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('AlphaTrend with KAMA and Risk Management', shorttitle='AT+KAMA+RM', overlay=true, format=format.price, precision=2, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // AlphaTrend Inputs coeff = input.float(1, 'AT Multiplier', step=0.1) AP = input.int(14, 'AT Common Period', minval=1) src = input.source(close, 'AT Source') showsignals = input.bool(true, 'Show Signals?') novolumedata = input.bool(false, 'Change calculation (no volume data)?') // KAMA Inputs kamaLength = input.int(21, 'KAMA Length', minval=1) // Risk Management Inputs profitTarget = input.float(10, 'Profit Target for Partial Exit (%)', minval=1, step=0.1) // Yeni değişkenler var float entryPrice = na var string currentPosition = "flat" // "long", "short", veya "flat" var float partialExitPrice = na // AlphaTrend Calculation ATR = ta.sma(ta.tr, AP) 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 // KAMA Calculation xPrice = close xvnoise = math.abs(xPrice - xPrice[1]) nAMA = 0.0 nfastend = 0.666 nslowend = 0.0645 nsignal = math.abs(xPrice - xPrice[kamaLength]) // Manual calculation of sum nnoise = 0.0 for i = 0 to kamaLength-1 nnoise := nnoise + xvnoise[i] nefratio = nnoise != 0 ? nsignal / nnoise : 0 nsmooth = math.pow(nefratio * (nfastend - nslowend) + nslowend, 2) nAMA := nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1])) // Plotting color1 = AlphaTrend > AlphaTrend[2] ? #00E60F : AlphaTrend < AlphaTrend[2] ? #80000B : AlphaTrend[1] > AlphaTrend[3] ? #00E60F : #80000B k1 = plot(AlphaTrend, color=color.new(#0022FC, 0), linewidth=3, title='AlphaTrend') k2 = plot(AlphaTrend[2], color=color.new(#FC0400, 0), linewidth=3) fill(k1, k2, color=color1) plot(nAMA, color=color.yellow, linewidth=2, title='KAMA') // Sinyal koşulları buyCondition = (ta.crossover(nAMA, AlphaTrend) and ta.crossover(nAMA, AlphaTrend[2])) or (ta.crossover(nAMA, AlphaTrend) and nAMA > AlphaTrend[2]) or (ta.crossover(nAMA, AlphaTrend[2]) and nAMA > AlphaTrend) sellCondition = (ta.crossunder(nAMA, AlphaTrend) and ta.crossunder(nAMA, AlphaTrend[2])) or (ta.crossunder(nAMA, AlphaTrend) and nAMA < AlphaTrend[2]) or (ta.crossunder(nAMA, AlphaTrend[2]) and nAMA < AlphaTrend) // Yeni Sinyaller buySignal = buyCondition sellSignal = sellCondition // Alım satım mantığı if (buySignal and currentPosition != "long") if (currentPosition == "short") strategy.close("Short") strategy.entry("Long", strategy.long) entryPrice := close currentPosition := "long" partialExitPrice := entryPrice * (1 + profitTarget / 100) if (sellSignal and currentPosition != "short") if (currentPosition == "long") strategy.close("Long") strategy.entry("Short", strategy.short) entryPrice := close currentPosition := "short" partialExitPrice := entryPrice * (1 - profitTarget / 100) // Kısmi çıkış mantığı if (currentPosition == "long" and high >= partialExitPrice) strategy.close("Long", comment="Partial Exit at " + str.tostring(profitTarget) + "% profit", qty_percent=50) partialExitPrice := na if (currentPosition == "short" and low <= partialExitPrice) strategy.close("Short", comment="Partial Exit at " + str.tostring(profitTarget) + "% profit", qty_percent=50) partialExitPrice := na // Plotting signals plotshape(buySignal and showsignals ? AlphaTrend * 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(sellSignal and showsignals ? AlphaTrend * 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)) plotshape(currentPosition == "long" and high >= partialExitPrice ? high : na, title='PARTIAL EXIT LONG', text='PARTIAL', location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.new(color.orange, 0), textcolor=color.new(color.white, 0)) plotshape(currentPosition == "short" and low <= partialExitPrice ? low : na, title='PARTIAL EXIT SHORT', text='PARTIAL', location=location.absolute, style=shape.labelup, size=size.tiny, color=color.new(color.orange, 0), textcolor=color.new(color.white, 0)) // Alerts alertcondition(buySignal, title='BUY Signal', message='KAMA crossed above AlphaTrend - BUY!') alertcondition(sellSignal, title='SELL Signal', message='KAMA crossed below AlphaTrend - SELL!') alertcondition((currentPosition == "long" and high >= partialExitPrice) or (currentPosition == "short" and low <= partialExitPrice), title='Partial Exit', message='Profit target reached - Closing half position!')