
Strategi ini didasarkan pada garis matahari untuk menentukan arah tren, dan kemudian menggunakan titik tinggi atau rendah baru yang terbentuk pada garis K 15 menit sebagai stop loss atau untuk melacak stop loss, dan melakukan penyesuaian stop loss secara dinamis untuk mengunci lebih banyak keuntungan.
Jika harga tutup lebih tinggi dari harga tertinggi hari sebelumnya, didefinisikan sebagai tren naik; Jika harga tutup lebih rendah dari harga terendah hari sebelumnya, didefinisikan sebagai tren turun.
Dalam uptrend, jika harga K line 15 menit ditutup lebih tinggi dari harga tertinggi K line 15 menit sebelumnya, maka Anda akan melakukan overtrading; dalam downtrend, jika harga K line 15 menit ditutup lebih rendah dari harga terendah K line 15 menit sebelumnya, maka Anda akan melakukan overtrading.
Setelah melakukan over, harga terendah dari 15 menit sebelumnya K baris sebagai stop loss. Setelah melakukan short, harga tertinggi dari 15 menit sebelumnya K baris sebagai stop loss.
Ketika 15 menit K garis lagi membuat tinggi baru atau rendah, menyesuaikan stop loss. Jika melakukan lebih banyak, menyesuaikan dengan rendah baru, jika melakukan kosong, menyesuaikan dengan tinggi baru, untuk mencapai stop loss pelacakan dinamis.
Keuntungan terbesar dari strategi ini adalah kemampuan untuk secara dinamis menyesuaikan stop loss, mengunci keuntungan secara maksimal sambil memastikan kontrol risiko, dan mengurangi kemungkinan stop loss terkena dampak.
Keuntungan spesifiknya adalah sebagai berikut:
Berdasarkan operasi tren, dapat menilai pergerakan pasar dan memilih arah perdagangan yang benar pada waktu yang tepat.
Perdagangan di level 15 menit, Anda dapat masuk dan keluar lebih sering, menangkap lebih banyak peluang.
Dinamis menyesuaikan strategi stop loss, yang dapat mengurangi risiko stop loss terkena dampak berdasarkan tinggi baru atau rendah baru.
Pengaturan posisi stop loss yang masuk akal untuk menghindari kerugian yang tidak perlu.
Risiko utama dari strategi ini berasal dari kesalahan dalam penilaian tren. Risiko spesifik adalah sebagai berikut:
Kesalahan dalam menilai tren garis waktu dapat menyebabkan kesalahan arah perdagangan.
Jika ada pergerakan besar dalam waktu singkat, maka kemungkinan besar stop loss 15 menit akan diatasi.
Salah mengidentifikasi titik balik tren dapat menyebabkan kerugian.
Solusi yang sesuai adalah sebagai berikut:
Menambahkan indikator siklus waktu lainnya untuk penilaian komprehensif, menghindari kesalahan hanya dengan satu siklus.
Evaluasi volatilitas pasar, dengan toleransi stop loss yang sesuai jika terjadi fluktuasi yang besar.
Menambahkan mekanisme penilaian titik balik tren, dan melonggarkan posisi tepat waktu sebelum berbalik.
Strategi ini masih memiliki ruang untuk pengoptimalan lebih lanjut:
Menambahkan penilaian indikator siklus lainnya, dan mengoptimalkan penguasaan tren.
Uji berbagai pengaturan stop loss ratio dan pilih parameter optimal.
Meningkatkan indikator kuantitatif untuk menghindari ketidaksetaraan kuantitatif yang menyebabkan kesalahan transaksi.
Menambahkan mekanisme pembalikan tren dan mengoptimalkan titik keluar.
Evaluasi peningkatan nilai Trailing Stop untuk lebih mengurangi probabilitas terjatuhnya stop loss.
Strategi ini secara keseluruhan berjalan dengan baik, ide yang jelas dan mudah dipahami, memiliki keuntungan seperti penyesuaian dinamika stop loss, perdagangan yang sering, pergerakan, dan lain-lain, dapat mengontrol risiko secara efektif dan mengunci keuntungan, layak untuk pengujian dan optimalisasi lebih lanjut. Namun, ada ruang untuk perbaikan tertentu, disarankan untuk memulai dari berbagai sudut pandang penilaian komprehensif, pengaturan parameter yang dioptimalkan, peningkatan penilaian perubahan tren, dan lain-lain untuk meningkatkan stabilitas dan tingkat pengembalian strategi.
/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-15 02:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Anand's Strategy", overlay=true)
// Get the high and low of the previous day's candle
prev_high = request.security(syminfo.tickerid, "D", high[2])
prev_low = request.security(syminfo.tickerid, "D", low[2])
// var float prev_high = na
// var float prev_low = na
prev_close = request.security(syminfo.tickerid, "D", close[1])
getDayIndexedHighLow(_bar) =>
_indexed_high = request.security(syminfo.tickerid, "D", high[_bar])
_indexed_low = request.security(syminfo.tickerid, "D", low[_bar])
[_indexed_high, _indexed_low]
var index = 2
while index >= 0
[indexed_high_D, indexed_low_D] = getDayIndexedHighLow(index)
if prev_close > indexed_high_D or prev_close < indexed_low_D
prev_high := indexed_high_D
prev_low := indexed_low_D
break
// Decrease the index to move to the previous 15-minute candle
index := index - 1
// Determine the trade direction based on the candle criterion
trade_direction = prev_close > prev_high ? 1 : (prev_close < prev_low ? -1 : 0)
// Get the current close from 15-minute timeframe
current_close = request.security(syminfo.tickerid, "15", close[1])
prev_high_15m = request.security(syminfo.tickerid, "15", high[2])
prev_low_15m = request.security(syminfo.tickerid, "15", low[2])
// var float prev_high_15m = na
// var float prev_low_15m = na
getIndexedHighLow(_bar) =>
_indexed_high = request.security(syminfo.tickerid, "15", high[_bar])
_indexed_low = request.security(syminfo.tickerid, "15", low[_bar])
[_indexed_high, _indexed_low]
// Loop through previous 15-minute candles until the condition is met
var i = 2
while i >= 2
[indexed_high_15m, indexed_low_15m] = getIndexedHighLow(i)
if current_close > indexed_high_15m or current_close < indexed_low_15m
prev_high_15m := indexed_high_15m
prev_low_15m := indexed_low_15m
break
// Decrease the index to move to the previous 15-minute candle
i := i - 1
buy_condition = trade_direction == 1 and current_close > prev_high_15m
stop_loss_buy = prev_low_15m
// Sell Trade Criteria in Negative Trend
sell_condition = trade_direction == -1 and current_close < prev_low_15m
stop_loss_sell = prev_high_15m
// Trailing Stop Loss for Buy Trade
// Custom Trailing Stop Function for Buy Trade
var float trail_stop_buy = na
trailing_buy_condition = buy_condition and current_close > trail_stop_buy
if trailing_buy_condition
trail_stop_buy := current_close
// Custom Trailing Stop Function for Sell Trade
var float trail_stop_sell = na
trailing_sell_condition = sell_condition and current_close < trail_stop_sell
if trailing_sell_condition
trail_stop_sell := current_close
// Take Buy Trade with Stop Loss
if (buy_condition)
strategy.entry("Buy", strategy.long)
strategy.exit("Buy Stop Loss", "Buy", stop=stop_loss_buy)
// Take Sell Trade with Stop Loss
if (sell_condition)
strategy.entry("Sell", strategy.short)
strategy.exit("Sell Stop Loss", "Sell", stop=stop_loss_sell)
// Set the background color based on the trade direction
bgcolor(trade_direction == 1 ? color.new(color.green, 90) : trade_direction == -1 ? color.new(color.red, 90) : na)