Strategi pembelian stop loss ATR berbasis waktu

Penulis:ChaoZhang, Tanggal: 2024-02-28 17:36:50
Tag:

img

Gambaran umum

Ide inti dari strategi ini adalah untuk menggabungkan waktu dan indikator ATR untuk mengatur waktu pembelian dan titik stop loss. Strategi mengeluarkan sinyal pembelian berjam-jam pada titik waktu yang ditentukan, menggunakan harga penutupan pada saat itu sebagai harga pembelian, dan kemudian menetapkan titik stop loss pada harga pembelian ditambah nilai ATR. Ini dapat menyaring beberapa waktu pembelian yang tidak sesuai saat menggunakan ATR untuk mengendalikan risiko.

Prinsip Strategi

Strategi ini terdiri dari bagian-bagian utama berikut:

  1. Parameter input: termasuk buy-in time timeTrade dan ATR parameter atrLength. timeTrade menentukan waktu buy-in, dan atrLength menentukan parameter periode ATR.

  2. Menghitung indikator ATR: menghitung nilai ATR atrValue berdasarkan parameter atrLength.

  3. Mendefinisikan kondisi beli: menghasilkan sinyal beli ketika kombinasi jam dan menit sama dengan timeTrade.

  4. Menerbitkan pesanan pembelian: pergi panjang ketika kondisi pembelian terpenuhi, dan mencatat harga pembelian.

  5. Set stop loss point: titik stop loss ditetapkan pada harga pembelian ditambah nilai ATR. Stop loss exit ketika harga melanggar titik ini.

  6. Membuat grafik: Membuat grafik garis level stop loss.

Analisis Keuntungan

Keuntungan terbesar dari strategi ini adalah konfirmasi ganda waktu buy-in dan stop loss point by time dan indikator ATR. Hal ini menghindari mengikuti pasar secara membabi buta untuk membeli, dan secara efektif mengendalikan risiko. Kedua, titik stop loss yang ditetapkan oleh ATR berubah secara dinamis, yang dapat menetapkan rentang stop loss yang wajar sesuai dengan fluktuasi pasar. Akhirnya, logika strategi sederhana dan mudah dipahami dan dilacak.

Analisis Risiko

Risiko utama dari strategi ini meliputi:

  1. Penentuan waktu pembelian yang tidak tepat dapat kehilangan peluang pembelian yang lebih baik atau membeli di pasar yang tidak diinginkan.

  2. Pengaturan parameter ATR yang tidak benar akan mempengaruhi kinerja strategi jika titik stop loss terlalu besar atau terlalu kecil.

  3. Tidak dapat melacak tren jangka panjang secara efektif, lebih cocok untuk operasi jangka pendek.

  4. Faktor analisis fundamental tidak dipertimbangkan.

Arahan Optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:

  1. Menentukan waktu pembelian yang lebih ilmiah dengan menggabungkan model multi-faktor.

  2. Mengoptimalkan pengaturan parameter ATR dengan menggabungkan model volatilitas.

  3. Meningkatkan mekanisme pelacakan tren untuk beradaptasi dengan periode penahan yang lebih lama.

  4. Masukkan analisis fundamental untuk menilai masuk akalnya waktu pembelian.

Kesimpulan

Secara keseluruhan, ini adalah strategi perdagangan intraday frekuensi tinggi yang relatif sederhana dan intuitif. Ide utamanya adalah menggunakan konfirmasi ganda waktu dan indikator ATR untuk menentukan waktu pembelian dan titik stop loss. Keuntungannya adalah risiko yang dapat dikontrol dan relatif mudah diterapkan. Tetapi ada juga masalah seperti pemilihan waktu pembelian yang tidak memadai dan optimasi parameter yang tidak memadai. Optimasi masa depan dapat dilakukan dari memperkenalkan lebih banyak faktor, optimasi parameter dinamis, pelacakan tren, dll.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Time-based Strategy with ATR Take Profit", overlay=true)

// Initialize take profit levels
var float takeProfitLevel = na
var float takeProfitLevelForSell = na
var float buyprice = na
var float sellprice = na



// Input for the time when the trade should be executed
tradeTime = input(0700, "Trade Execution Time (HHMM)", "Specify the time in HHMM format", group="Time Settings")

// Calculate ATR for the last 5 minutes
atrLength = input(14, "ATR Length", "Specify ATR length", group="ATR Settings")
atrValue = request.security(syminfo.tickerid, "5", ta.atr(atrLength))

// Define conditions for buy and sell
buyCondition = hour * 100 + minute == tradeTime // and strategy.position_size == 0
sellCondition = hour * 100 + minute == tradeTime // and strategy.position_size > 0
// Execute Buy and Sell orders


if (buyCondition)
    strategy.entry("Buy", strategy.long)
    buyprice := close
    takeProfitLevel := buyprice + atrValue
strategy.exit("Take Profit BUY", from_entry="Buy", limit =takeProfitLevel) 
    

  

// if (sellCondition)
//     strategy.entry("Sell", strategy.short)
//     sellprice := close
//     takeProfitLevelForSell := sellprice -atrValue
// strategy.exit("Take Profit Sell", from_entry="Sell", limit=takeProfitLevelForSell)


// Plot horizontal lines for take profit levels


plot(takeProfitLevel, color=color.green, title="Take Profit Level (Buy)")
plot(takeProfitLevelForSell, color=color.red, title="Take Profit Level (Sell)")


Lebih banyak