
Strategi ini adalah sistem perdagangan yang hanya membeli, menghasilkan sinyal beli berdasarkan crossover rata-rata bergerak dan indeks saluran komoditas berkala (CCI) atau indeks arah rata-rata berkala (ADX). Sinyal beli dihasilkan ketika rata-rata bergerak bergerak melintasi rata-rata bergerak lambat pada rata-rata bergerak cepat dan CCI berkala dan / atau ADX berkala memenuhi kondisi tertentu.
Strategi ini juga memungkinkan re-entry yang dinamis, yang berarti bahwa posisi multihead baru dapat dibuka jika harga melewati tiga rata-rata bergerak lagi. Namun, strategi ini akan meratakan posisi multihead jika harga menutup di bawah rata-rata bergerak ketiga.
Skripsi mendefinisikan kondisi untuk menghasilkan sinyal beli. Skripsi memeriksa dua kondisi untuk menentukan sinyal beli yang valid:
“Saya tidak tahu apa yang terjadi.Jika tidak ada posisi multiples yang belum dipadamkan dan harganya lebih tinggi dari tiga rata-rata bergerak, bukalah posisi multiples baru.
Kondisi untuk keluar:Jika harga penutupan jatuh di bawah Moving Average ketiga, strategi ini akan melunasi posisi overhead.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki risiko sebagai berikut:
Solusi yang sesuai:
Strategi ini dapat dioptimalkan dalam beberapa hal:
Strategi pembelian kembali masuk dinamis ini mengintegrasikan beberapa indikator teknis untuk menentukan waktu pembelian, dan menggunakan desain masuk kembali dinamis, dapat melacak tren secara real time; dan hanya melakukan lebih banyak untuk menghindari risiko tambahan yang dibawa oleh shorting. Dengan pengoptimalan parameter, pengaturan stop loss, dan manajemen posisi, strategi ini dapat digunakan dalam perdagangan real-time untuk mendapatkan keuntungan tambahan sambil mengendalikan risiko.
/*backtest
start: 2022-12-12 00:00:00
end: 2023-12-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Buy Only Strategy with Dynamic Re-Entry and Exit", overlay=true)
// Input Parameters
fast_length = input(20, title="Fast Moving Average Length")
slow_length = input(30, title="Slow Moving Average Length")
third_ma_length = input(100, title="Third Moving Average Length")
cci_period = input(14, title="CCI Period for Weekly CCI")
use_cci = input(true, title="Use CCI for Entry")
use_adx = input(true, title="Use ADX for Entry")
adx_length = input(14, title="ADX Length")
adx_threshold = input(25, title="ADX Threshold")
// Calculate Moving Averages
fast_ma = ta.sma(close, fast_length)
slow_ma = ta.sma(close, slow_length)
third_ma = ta.sma(close, third_ma_length)
// Weekly Commodity Channel Index (CCI) with user-defined period
weekly_cci = request.security(syminfo.tickerid, "W", ta.cci(close, cci_period))
// Weekly Average Directional Index (ADX)
dirmov = hlc3
plus = ta.change(dirmov) > 0 ? ta.change(dirmov) : 0
minus = ta.change(dirmov) < 0 ? -ta.change(dirmov) : 0
trur = ta.rma(ta.tr, adx_length)
plusDI = ta.rma(plus, adx_length) / trur * 100
minusDI = ta.rma(minus, adx_length) / trur * 100
sum = plusDI + minusDI
DX = sum == 0 ? 0 : math.abs(plusDI - minusDI) / sum * 100
ADX = ta.rma(DX, adx_length)
// Entry Conditions (Buy Only and Weekly CCI > 100 and/or Weekly ADX > 25)
cci_condition = use_cci ? (weekly_cci > 100) : false
adx_condition = use_adx ? (ADX > adx_threshold) : false
long_condition = ta.crossover(fast_ma, slow_ma) and (cci_condition or adx_condition)
// Exit Condition and Dynamic Re-Entry
exit_condition = close < third_ma
re_entry_condition = close > fast_ma and close > slow_ma and close > third_ma and weekly_cci > 100
// Entry and Exit Signals
strategy.entry("Long", strategy.long, when=long_condition)
strategy.close("Long", when=exit_condition)
// Dynamic Re-Entry and Exit
if strategy.position_size == 0 and re_entry_condition
strategy.entry("Long", strategy.long)
if strategy.position_size > 0 and close < third_ma
strategy.close("Long")
// Plot Weekly CCI and ADX for reference
plot(weekly_cci, title="Weekly CCI", color=color.orange)
plot(ADX, title="Weekly ADX", color=color.blue)