Strategi pembelian ATR Stop Loss berasaskan masa

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

img

Ringkasan

Idea utama strategi ini adalah menggabungkan waktu dan penunjuk ATR untuk menetapkan masa beli dan titik stop loss. Strategi mengeluarkan isyarat beli berkala pada titik masa yang ditentukan, menggunakan harga penutupan pada masa itu sebagai harga pembelian, dan kemudian menetapkan titik stop loss pada harga pembelian ditambah nilai ATR. Ini boleh menapis beberapa waktu beli yang tidak sesuai semasa menggunakan ATR untuk mengawal risiko.

Prinsip Strategi

Strategi ini terdiri daripada bahagian utama berikut:

  1. Parameter input: termasuk timeTrade dan parameter ATR atrLength. timeTrade menentukan masa pembelian, dan atrLength menentukan parameter tempoh ATR.

  2. Mengira penunjuk ATR: mengira nilai ATR atrValue berdasarkan parameter atrLength.

  3. Menentukan syarat beli: menjana isyarat beli apabila gabungan jam dan minit sama dengan timeTrade.

  4. Penerbitan pesanan beli: pergi lama apabila syarat beli dipenuhi, dan merekod harga beli harga beli.

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

  6. Merangka: merangka garis paras stop loss.

Analisis Kelebihan

Kelebihan terbesar strategi ini adalah pengesahan berganda masa beli dan titik stop loss mengikut masa dan penunjuk ATR. Ini mengelakkan mengikuti pasaran secara buta untuk membeli, dan berkesan mengawal risiko. Kedua, titik stop loss yang ditetapkan oleh ATR berubah secara dinamik, yang dapat menetapkan julat stop loss yang munasabah mengikut turun naik pasaran. Akhirnya, logik strategi adalah mudah dan mudah difahami dan dikesan.

Analisis Risiko

Risiko utama strategi ini termasuk:

  1. Penetapan masa pembelian yang tidak betul boleh kehilangan peluang pembelian yang lebih baik atau membeli di pasaran yang tidak diingini.

  2. Tetapan parameter ATR yang tidak betul akan menjejaskan prestasi strategi jika titik stop loss terlalu besar atau terlalu kecil.

  3. Tidak dapat mengesan trend jangka panjang dengan berkesan, lebih sesuai untuk operasi jangka pendek.

  4. Faktor analisis asas tidak dipertimbangkan.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan lagi dalam aspek berikut:

  1. Menentukan masa pembelian yang lebih saintifik dengan menggabungkan model pelbagai faktor.

  2. Mengoptimumkan tetapan parameter ATR dengan menggabungkan model turun naik.

  3. Meningkatkan mekanisme pengesanan trend untuk menyesuaikan diri dengan tempoh penahan yang lebih lama.

  4. Memasukkan analisis asas untuk menilai kepatutan masa pembelian.

Kesimpulan

Secara keseluruhan, ini adalah strategi perdagangan intraday frekuensi tinggi yang agak mudah dan intuitif. Idea utamanya adalah menggunakan pengesahan masa dan penunjuk ATR untuk menentukan masa beli dan titik stop loss. Kelebihannya adalah risiko yang boleh dikawal dan agak mudah dilaksanakan. Tetapi terdapat juga masalah seperti pemilihan masa beli yang tidak mencukupi dan pengoptimuman parameter yang tidak mencukupi. Pengoptimuman masa depan boleh dibuat dari pengenalan lebih banyak faktor, pengoptimuman parameter dinamik, penjejakan trend 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 lanjut