Ide utama dari strategi ini adalah untuk menggabungkan waktu dan indikator ATR untuk mencapai stop loss otomatis dan mengambil keuntungan. Strategi ini akan membuka posisi pada titik waktu tetap untuk membeli atau menjual, dan menggunakan indikator ATR untuk menghitung harga stop loss dan mengambil keuntungan yang wajar. Ini memungkinkan perdagangan otomatis yang efisien, mengurangi frekuensi operasi manual, dan secara efektif mengendalikan risiko melalui indikator ATR.
Strategi ini menggunakan variabel jam dan menit dikombinasikan dengan kondisi jika untuk memicu posisi pembukaan pada titik waktu yang ditentukan dalam parameter strategi tradeTime.
Setelah membuka posisi, strategi akan menggunakan fungsi ta.atr() untuk menghitung nilai indikator ATR selama 5 menit terakhir, dan menggunakannya sebagai dasar untuk stop loss dan mengambil keuntungan.
Hal ini mencapai pembukaan otomatis berdasarkan titik waktu, dan stop loss dan mengambil keuntungan berdasarkan indikator ATR. Dengan demikian mengurangi frekuensi operasi manual, sementara secara efektif mengendalikan risiko.
Strategi ini memiliki keuntungan berikut:
Tingkat otomatisasi yang tinggi, dapat membuka posisi tanpa pengawasan pada waktu yang ditentukan, sangat mengurangi frekuensi operasi manual.
Stop loss dan take profit berdasarkan indikator ATR dapat secara efektif mengendalikan kerugian tunggal. Indikator ATR dapat secara dinamis menangkap volatilitas pasar untuk menetapkan jarak stop loss yang wajar.
Skalabilitas yang kuat. Mudah untuk menggabungkan lebih banyak indikator atau algoritma pembelajaran mesin untuk membantu keputusan. Misalnya, menggabungkan moving average untuk menentukan tren.
Mudah untuk menerapkan arbitrage antar komoditas. Cukup tetapkan waktu perdagangan yang sama untuk produk yang berbeda untuk dengan mudah menerapkan strategi perdagangan spread.
Mudah diintegrasikan ke dalam sistem perdagangan otomatis. dikombinasikan dengan manajemen tugas terjadwal, program strategi dapat berjalan 24 jam tanpa pengawasan untuk mencapai otomatisasi penuh.
Strategi ini juga memiliki beberapa risiko:
Risiko peristiwa pasar: peristiwa angsa hitam besar dapat menyebabkan fluktuasi harga yang ekstrim, memicu berhenti dan kerugian yang lebih besar.
Risiko likuiditas: Beberapa produk memiliki likuiditas yang rendah dan tidak dapat ditutup sepenuhnya pada titik mengambil keuntungan batas.
Risiko optimasi parameter ATR. Parameter ATR membutuhkan pengujian dan optimasi berulang, pengaturan yang tidak tepat akan mempengaruhi kinerja strategi.
Risiko optimasi titik waktu. waktu bukaan tetap mungkin kehilangan peluang pasar, perlu penyesuaian berdasarkan lebih banyak indikator.
Strategi ini dapat dioptimalkan lebih lanjut dalam dimensi berikut:
Menggabungkan lebih banyak indikator untuk menilai kondisi pasar, menghindari pembukaan di lingkungan yang tidak menguntungkan.
Menggunakan algoritma pembelajaran mesin untuk memprediksi titik waktu optimal. Mengumpulkan lebih banyak data historis, menggunakan model LSTM dll.
Ekspansi ke arbitrage antar komoditas menggunakan platform seperti Heartbeat.
Mengoptimalkan parameter ATR dan pengaturan stop loss/take profit melalui backtesting yang lebih banyak.
Jalankan strategi di server, mengintegrasikan tugas berjam-jam, mencapai perdagangan otomatis penuh 24x7 keuntungan stabil tanpa pengawasan.
Strategi ini mengintegrasikan waktu dan ATR untuk mencapai stop loss otomatis yang efisien dan mengambil perdagangan keuntungan. Melalui optimasi parameter, alfa stabil dapat diperoleh.
/*backtest start: 2023-12-01 00:00:00 end: 2023-12-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 Sell", 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)")