Strategi Perdagangan Rata-rata Pergerakan Adaptif


Tanggal Pembuatan: 2024-02-21 16:07:20 Akhirnya memodifikasi: 2024-02-21 16:07:20
menyalin: 1 Jumlah klik: 687
1
fokus pada
1617
Pengikut

Strategi Perdagangan Rata-rata Pergerakan Adaptif

Ringkasan

Gagasan inti dari strategi ini adalah menggunakan garis rata-rata T3 dan ATR untuk menangkap titik masuk dan keluar dari tren, termasuk strategi pelacakan tren. Ketika harga menembus garis rata-rata T3, sinyal perdagangan dihasilkan, dan pada titik penembusan menggunakan nilai ATR untuk mengatur stop loss dan stop loss, untuk mencapai stop loss otomatis.

Prinsip Strategi

Strategi ini terutama terdiri dari T3 Average Line Indicator, ATR Indicator, dan ATR Mobile Stop Loss Mechanism.

Garis rata-rata T3 adalah rata-rata bergerak yang memiliki kesederhanaan, yang dapat mengurangi keterlambatan kurva, sehingga lebih cepat bereaksi terhadap perubahan harga. Ketika harga menerobos dari arah di bawah garis rata-rata, menghasilkan sinyal beli; Ketika harga menerobos dari arah di atas garis rata-rata, menghasilkan sinyal jual.

Indikator ATR digunakan untuk menghitung tingkat fluktuasi pasar dan mengatur stop loss. Nilai ATR yang lebih besar, berarti semakin besar fluktuasi pasar, dan pada saat ini Anda perlu mengatur stop loss yang lebih luas. Nilai ATR yang lebih kecil, berarti semakin kecil fluktuasi pasar, dan Anda dapat mengatur stop loss yang lebih sempit.

ATR bergerak stop loss mekanisme, adalah berdasarkan ATR nilai real-time penyesuaian posisi garis stop loss, sehingga garis stop loss dapat mengikuti harga dan tetap dalam batas yang wajar. Dengan demikian baik mencegah stop loss jarak terlalu dekat terguncang, dan mencegah stop loss jarak terlalu luas tidak dapat mengontrol risiko secara efektif.

Strategi ini menggunakan indikator T3 untuk menentukan arah, indikator ATR untuk menghitung volatilitas, dan mekanisme ATR untuk menghentikan kerugian, yang memungkinkan penangkapan tren dan pengendalian risiko yang lebih efisien.

Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Penggunaan garis rata-rata T3 meningkatkan akurasi penangkapan tren.

  2. Indikator ATR secara dinamis menghitung volatilitas pasar, stop loss dan stop loss lebih masuk akal.

  3. ATR memiliki mekanisme stop loss mobile yang memungkinkan stop loss line untuk mengikuti harga secara real-time dan mengontrol risiko secara efektif.

  4. Mengintegrasikan penilaian indikator dan mekanisme stop loss untuk mengotomatisasi trend tracking trading.

  5. Platform perdagangan eksternal dapat dihubungkan melalui webhook untuk mengotomatisasi pesanan.

Risiko dan Solusi

Strategi ini juga memiliki beberapa risiko:

  1. Parameter garis rata-rata T3 tidak disetel dengan benar, dan kemungkinan kehilangan peluang tren yang lebih baik. Anda dapat menguji parameter dari periode yang berbeda untuk menemukan parameter yang optimal.

  2. Perhitungan nilai ATR tidak akurat, jarak stop loss terlalu besar atau terlalu kecil, tidak dapat mengontrol risiko secara efektif. Parameter siklus ATR dapat disesuaikan dengan karakteristik fluktuasi pasar.

  3. Dalam fluktuasi yang kuat, stop loss line dapat ditembus dan menyebabkan kerugian yang berlebihan. Anda dapat mengatur garis kerugian total yang wajar dan menghindari kerugian tunggal yang terlalu besar.

  4. Dalam situasi berulang dua arah, mungkin terjadi situasi dimana stop loss sering dipicu. Jarak stop loss bergerak ATR dapat dilepaskan secara tepat.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimalkan parameter garis rata-rata T3 untuk menemukan siklus perataan yang paling sesuai.

  2. Uji parameter siklus ATR yang berbeda untuk menghitung nilai ATR yang paling mencerminkan fluktuasi pasar.

  3. Mengoptimalkan jarak elastisitas dari ATR mobile stop loss untuk mencegah stop loss yang terlalu sensitif.

  4. Menambahkan kondisi penyaringan yang tepat untuk menghindari perdagangan yang sering terjadi di pasar yang bergoyang dua arah.

  5. Ini adalah salah satu metode yang paling populer di dunia untuk mengevaluasi dan mengevaluasi pasar.

  6. Mengoptimalkan parameter secara otomatis menggunakan metode pembelajaran mesin.

Meringkaskan

Strategi ini mengintegrasikan penggunaan T3 rata-rata untuk menentukan arah tren, ATR indikator untuk menghitung stop loss dan ATR mobile stop loss mekanisme untuk menyesuaikan jarak stop loss, untuk mencapai trend otomatis pelacakan dan kontrol risiko yang efisien, adalah strategi pelacakan tren yang andal. Dalam aplikasi praktis, masih perlu terus-menerus menguji dan mengoptimalkan, untuk menemukan kombinasi parameter yang paling sesuai dengan lingkungan pasar saat ini, sehingga mendapatkan efek strategi yang lebih baik.

Kode Sumber Strategi
/*backtest
start: 2024-01-21 00:00:00
end: 2024-02-20 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title='UT Bot Alerts (QuantNomad) Strategy', overlay=true)
T3 = input(100)//600
// Input for Long Settings
// Input for Long Settings


xPrice3 = close
xe1 = ta.ema(xPrice3, T3)
xe2 = ta.ema(xe1, T3)
xe3 = ta.ema(xe2, T3)
xe4 = ta.ema(xe3, T3)
xe5 = ta.ema(xe4, T3)
xe6 = ta.ema(xe5, T3)

b3 = 0.7
c1 = -b3*b3*b3
c2 = 3*b3*b3+3*b3*b3*b3
c3 = -6*b3*b3-3*b3-3*b3*b3*b3
c4 = 1+3*b3+b3*b3*b3+3*b3*b3
nT3Average = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3

//plot(nT3Average, color=color.white, title="T3")

// Buy Signal - Price is below T3 Average
buySignal3 = xPrice3 < nT3Average
sellSignal3 = xPrice3 > nT3Average
// Inputs
a = input(1, title='Key Value. "This changes the sensitivity"')
c = input(50, title='ATR Period')
h = input(true, title='Signals from Heikin Ashi Candles')
riskRewardRatio = input(1, title='Risk Reward Ratio')

xATR = ta.atr(c)
nLoss = a * xATR

src = h ? request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close, lookahead=barmerge.lookahead_off) : close

xATRTrailingStop = 0.0
iff_1 = src > nz(xATRTrailingStop[1], 0) ? src - nLoss : src + nLoss
iff_2 = src < nz(xATRTrailingStop[1], 0) and src[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), src + nLoss) : iff_1
xATRTrailingStop := src > nz(xATRTrailingStop[1], 0) and src[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), src - nLoss) : iff_2

pos = 0
iff_3 = src[1] > nz(xATRTrailingStop[1], 0) and src < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos := src[1] < nz(xATRTrailingStop[1], 0) and src > nz(xATRTrailingStop[1], 0) ? 1 : iff_3

xcolor = pos == -1 ? color.red : pos == 1 ? color.green : color.blue

ema = ta.ema(src, 1)
above = ta.crossover(ema, xATRTrailingStop)
below = ta.crossunder(ema, xATRTrailingStop)

buy = src > xATRTrailingStop and above
sell = src < xATRTrailingStop and below

barbuy = src > xATRTrailingStop
barsell = src < xATRTrailingStop

plotshape(buy, title='Buy', text='Buy', style=shape.labelup, location=location.belowbar, color=color.new(color.green, 0), textcolor=color.new(color.white, 0), size=size.tiny)
plotshape(sell, title='Sell', text='Sell', style=shape.labeldown, location=location.abovebar, color=color.new(color.red, 0), textcolor=color.new(color.white, 0), size=size.tiny)

barcolor(barbuy ? color.new(color.green, 90) : na)
barcolor(barsell ? color.new(color.red, 90) : na)

var float entryPrice = na
var float takeProfitLong = na
var float stopLossLong = na
var float takeProfitShort = na
var float stopLossShort = na

if buy and buySignal3
    entryPrice := src
    takeProfitLong := entryPrice + nLoss * riskRewardRatio
    stopLossLong := entryPrice - nLoss
    takeProfitShort := na
    stopLossShort := na

if sell and sellSignal3
    entryPrice := src
    takeProfitShort := entryPrice - nLoss * riskRewardRatio
    stopLossShort := entryPrice + nLoss
    takeProfitLong := na
    stopLossLong := na

// Strategy order conditions
acct = "Sim101"
ticker = "ES 12-23"
qty = 1

OCOMarketLong = '{ "alert": "OCO Market Long", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitLong) + '", "stop_price": "' + str.tostring(stopLossLong) + '", "tif": "DAY" }'
OCOMarketShort = '{ "alert": "OCO Market Short", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '", "qty": "' + str.tostring(qty) + '", "take_profit_price": "' + str.tostring(takeProfitShort) + '", "stop_price": "' + str.tostring(stopLossShort) + '", "tif": "DAY" }'
CloseAll = '{ "alert": "Close All", "account": "' + str.tostring(acct) + '", "ticker": "' + str.tostring(ticker) + '" }'

strategy.entry("Long", strategy.long, when=buy and buySignal3, alert_message=OCOMarketLong)
strategy.entry("Short", strategy.short, when=sell and sellSignal3, alert_message=OCOMarketShort)

// Setting the take profit and stop loss for long trades
strategy.exit("Take Profit/Stop Loss", "Long", stop=stopLossLong, limit=takeProfitLong,alert_message=CloseAll)

// Setting the take profit and stop loss for short trades
strategy.exit("Take Profit/Stop Loss", "Short", stop=stopLossShort, limit=takeProfitShort,alert_message=CloseAll)

// Plot trade setup boxes
bgcolor(buy ? color.new(color.green, 90) : na, transp=0, offset=-1)
bgcolor(sell ? color.new(color.red, 90) : na, transp=0, offset=-1)

longCondition = buy and not na(entryPrice)
shortCondition = sell and not na(entryPrice)

// var line longTakeProfitLine = na
// var line longStopLossLine = na
// var line shortTakeProfitLine = na
// var line shortStopLossLine = na

// if longCondition
//     longTakeProfitLine := line.new(bar_index, takeProfitLong, bar_index + 1, takeProfitLong, color=color.green, width=2)
//     longStopLossLine := line.new(bar_index, stopLossLong, bar_index + 1, stopLossLong, color=color.red, width=2)
//     // label.new(bar_index + 1, takeProfitLong, str.tostring(takeProfitLong, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny)
//     // label.new(bar_index + 1, stopLossLong, str.tostring(stopLossLong, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny)

// if shortCondition
//     shortTakeProfitLine := line.new(bar_index, takeProfitShort, bar_index + 1, takeProfitShort, color=color.green, width=2)
//     shortStopLossLine := line.new(bar_index, stopLossShort, bar_index + 1, stopLossShort, color=color.red, width=2)
//     // label.new(bar_index + 1, takeProfitShort, str.tostring(takeProfitShort, "#.#####"), color=color.green, style=label.style_none, textcolor=color.green, size=size.tiny)
//     // label.new(bar_index + 1, stopLossShort, str.tostring(stopLossShort, "#.#####"), color=color.red, style=label.style_none, textcolor=color.red, size=size.tiny)

alertcondition(buy, 'UT Long', 'UT Long')
alertcondition(sell, 'UT Short', 'UT Short')