
Chiến lược này là một hệ thống theo dõi xu hướng kết hợp với chỉ số AlphaTrend và Kaufman Adaptive Moving Average (KAMA), đồng thời tích hợp các chức năng quản lý rủi ro. Chiến lược này được thiết kế để nắm bắt xu hướng thị trường, đồng thời quản lý rủi ro thông qua một phần dừng.
Chỉ số AlphaTrend được tính bằng:
KAMA tính toán:
Tín hiệu giao dịch được tạo ra:
Quản lý rủi ro:
Quản lý vị trí:
Khả năng thích ứng với xu hướng: kết hợp với AlphaTrend và KAMA, có thể thích ứng tốt hơn với các môi trường thị trường khác nhau.
Tín hiệu đáng tin cậy cao: Tín hiệu giao dịch được cải thiện bằng cách xác nhận nhiều điều kiện.
Quản lý rủi ro tốt: Một số hệ thống ngăn chặn có thể giúp bạn giữ lợi nhuận trong thị trường biến động.
Quản lý vị trí linh hoạt: Quản lý vị trí dựa trên giá trị tài khoản ròng, phù hợp với quy mô tài chính khác nhau.
Hiệu quả trực quan: Chiến lược cung cấp giao diện đồ họa rõ ràng, dễ phân tích và giám sát.
Rủi ro phá vỡ giả: Có thể tạo ra các tín hiệu phá vỡ giả thường xuyên trong thị trường biến động.
Sự chậm trễ: là một chiến lược theo dõi xu hướng, có thể phản ứng chậm trong giai đoạn đầu của xu hướng đảo ngược.
Tính nhạy cảm tham số: Hiệu suất của chiến lược có thể nhạy cảm với cài đặt tham số.
Rủi ro rút lui: Trong một thị trường có xu hướng mạnh, một số điểm dừng có thể dẫn đến việc bỏ lỡ một giao dịch lớn.
Thị trường thích ứng: Chiến lược có thể không hoạt động tốt trong một số điều kiện thị trường cụ thể.
Điều chỉnh tham số động:
Phân tích nhiều khung thời gian:
Bộ lọc biến động:
Thiếu trí thông minh:
Tiếp theo là phân loại tình trạng thị trường:
AlphaTrend kết hợp với chiến lược quản lý rủi ro và theo dõi xu hướng tự điều chỉnh của KAMA là một hệ thống giao dịch toàn diện và mạnh mẽ. Nó kết hợp các lợi thế của chỉ số AlphaTrend và KAMA để nắm bắt chính xác xu hướng thị trường. Cơ chế quản lý rủi ro của chiến lược, đặc biệt là một phần của chức năng dừng, cung cấp cho nhà đầu tư một công cụ hiệu quả để bảo vệ lợi nhuận trong thị trường biến động. Mặc dù có một số rủi ro vốn có, chẳng hạn như phá vỡ giả và nhạy cảm tham số, chiến lược này có tiềm năng trở thành một hệ thống giao dịch đáng tin cậy bằng cách tối ưu hóa và điều chỉnh liên tục.
/*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!')