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.
Strategi ini terdiri daripada bahagian utama berikut:
Parameter input: termasuk timeTrade dan parameter ATR atrLength. timeTrade menentukan masa pembelian, dan atrLength menentukan parameter tempoh ATR.
Mengira penunjuk ATR: mengira nilai ATR atrValue berdasarkan parameter atrLength.
Menentukan syarat beli: menjana isyarat beli apabila gabungan jam dan minit sama dengan timeTrade.
Penerbitan pesanan beli: pergi lama apabila syarat beli dipenuhi, dan merekod harga beli harga beli.
Set stop loss point: titik stop loss ditetapkan pada harga pembelian ditambah nilai ATR. Stop loss exit apabila harga memecahkan titik ini.
Merangka: merangka garis paras stop loss.
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.
Risiko utama strategi ini termasuk:
Penetapan masa pembelian yang tidak betul boleh kehilangan peluang pembelian yang lebih baik atau membeli di pasaran yang tidak diingini.
Tetapan parameter ATR yang tidak betul akan menjejaskan prestasi strategi jika titik stop loss terlalu besar atau terlalu kecil.
Tidak dapat mengesan trend jangka panjang dengan berkesan, lebih sesuai untuk operasi jangka pendek.
Faktor analisis asas tidak dipertimbangkan.
Strategi ini boleh dioptimumkan lagi dalam aspek berikut:
Menentukan masa pembelian yang lebih saintifik dengan menggabungkan model pelbagai faktor.
Mengoptimumkan tetapan parameter ATR dengan menggabungkan model turun naik.
Meningkatkan mekanisme pengesanan trend untuk menyesuaikan diri dengan tempoh penahan yang lebih lama.
Memasukkan analisis asas untuk menilai kepatutan masa pembelian.
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)")