Strategi perdagangan ayunan kuantitatif berdasarkan beberapa kerangka waktu


Tanggal Pembuatan: 2023-12-01 13:50:02 Akhirnya memodifikasi: 2023-12-01 13:50:02
menyalin: 0 Jumlah klik: 767
1
fokus pada
1619
Pengikut

Strategi perdagangan ayunan kuantitatif berdasarkan beberapa kerangka waktu

Ringkasan

Strategi ini memungkinkan identifikasi band harga Bitcoin dengan kombinasi indikator kuantitatif dari berbagai kerangka waktu, sehingga dapat melacak transaksi. Strategi ini menggunakan kerangka waktu 5 menit, dan memiliki keuntungan dalam jangka panjang.

Prinsip Strategi

  1. Indikator RSI yang didasarkan pada kerangka waktu Sunshine, diperhitungkan dengan volume transaksi yang dipertimbang, dan disaring dengan false breakout.
  2. EMA smoothed untuk Sunline RSI, untuk membangun indikator gelombang kuantitatif.
  3. Dalam jangka waktu 5 menit, indikator regressi linier dan indikator HMA digunakan untuk membangun sinyal perdagangan.
  4. Strategi ini memungkinkan penggabungan antara frame waktu yang berbeda dengan mengidentifikasi gelombang panjang di tengah harga melalui kombinasi indikator dan sinyal perdagangan dalam rentang waktu kuantitatif.

Analisis Keunggulan

  1. Dengan menggunakan indikator RSI dengan bobot transaksi, dapat secara efektif mengidentifikasi gelombang yang benar, memfilter terobosan palsu.
  2. Indikator HMA lebih sensitif terhadap perubahan harga dan dapat menangkap pergeseran tepat waktu.
  3. Kombinasi dari beberapa kerangka waktu, dapat mengidentifikasi gelombang panjang dan menengah dengan lebih akurat.
  4. Dalam waktu 5 menit, transaksi dilakukan dengan frekuensi yang lebih tinggi.
  5. Strategi pelacakan band, tidak perlu memilih titik yang tepat, tahan lebih lama.

Analisis risiko

  1. Indikator kuantitatif dapat memberikan sinyal yang salah, dianjurkan untuk menggabungkan analisis fundamental.
  2. Band ini mungkin akan berbalik di tengah jalan, maka harus ada mekanisme stop loss exit.
  3. Sinyal perdagangan terlambat, mungkin kehilangan titik masuk terbaik.
  4. Bagian yang menguntungkan membutuhkan periode kepemilikan yang lebih lama dan harus menanggung tekanan keuangan tertentu.

Arah optimasi

  1. Uji efek indikator RSI dari berbagai parameter.
  2. Cobalah untuk memperkenalkan indikator band tambahan lainnya.
  3. Optimalkan parameter panjang indikator HMA.
  4. Menambahkan strategi stop loss dan stop loss.
  5. Siklus kepemilikan yang disesuaikan untuk transaksi pita gelombang.

Meringkaskan

Strategi ini memungkinkan penangkapan yang efektif dari tren long-line dalam Bitcoin melalui penggabungan multi-frame dan pelacakan gelombang. Dibandingkan dengan perdagangan short-line, retracement dalam perdagangan medium-long-wave lebih kecil dan ruang keuntungan lebih besar. Selanjutnya, dengan penyesuaian parameter dan penambahan strategi manajemen risiko, diharapkan untuk meningkatkan tingkat keuntungan dan stabilitas strategi lebih lanjut.

Kode Sumber Strategi
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-30 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy(title='Pyramiding BTC 5 min', overlay=true, pyramiding=5, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=20, commission_type=strategy.commission.percent, commission_value=0.075)
//the pyramide based on this script  https://www.tradingview.com/script/7NNJ0sXB-Pyramiding-Entries-On-Early-Trends-by-Coinrule/
//
fastLength = input(250, title="Fast filter length ", minval=1)
slowLength = input(500,title="Slow filter length",  minval=1)
source=close
v1=ema(source,fastLength)
v2=ema(source,slowLength)
//
//Backtest dates
fromMonth = input(defval=1, title="From Month")
fromDay = input(defval=10, title="From Day")
fromYear = input(defval=2020, title="From Year")
thruMonth = input(defval=1, title="Thru Month")
thruDay = input(defval=1, title="Thru Day")
thruYear = input(defval=2112, title="Thru Year")

showDate = input(defval=true, title="Show Date Range")

start = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59)  // backtest finish window
window() =>  // create function "within window of time"
    time >= start and time <= finish ? true : false


leng=1
p1=close[1]

len55 = 10
//taken from https://www.tradingview.com/script/Ql1FjjfX-security-free-MTF-example-JD/
HTF = input("1D", type=input.resolution)
ti = change( time(HTF) ) != 0
T_c = fixnan( ti ? close : na )

vrsi = rsi(cum(change(T_c) * volume), leng)
pp=wma(vrsi,len55)

d=(vrsi[1]-pp[1])
len100 = 10
x=ema(d,len100)
//
zx=x/-1
col=zx > 0? color.lime : color.orange

//

tf10 = input("1", title = "Timeframe", type = input.resolution, options = ["1", "5", "15", "30", "60","120", "240","360","720", "D", "W"])

length = input(50, title = "Period", type = input.integer)
shift = input(1, title = "Shift", type = input.integer)

hma(_src, _length)=>
    wma((2 * wma(_src, _length / 2)) - wma(_src, _length), round(sqrt(_length)))
    
hma3(_src, _length)=>
    p = length/2
    wma(wma(close,p/3)*3 - wma(close,p/2) - wma(close,p),p)

b =security(syminfo.tickerid, tf10, hma3(close[1], length)[shift])
//plot(a,color=color.gray)
//plot(b,color=color.yellow)
close_price = close[0]
len = input(25)

linear_reg = linreg(close_price, len, 0)


filter=input(true)

buy=crossover(linear_reg, b)

longsignal = (v1 > v2 or filter == false ) and buy and window()

//set take profit

ProfitTarget_Percent = input(3)
Profit_Ticks = close * (ProfitTarget_Percent / 100) / syminfo.mintick

//set take profit

LossTarget_Percent = input(10)
Loss_Ticks = close * (LossTarget_Percent / 100) / syminfo.mintick


//Order Placing

strategy.entry("Entry 1", strategy.long, when=strategy.opentrades == 0 and longsignal)

strategy.entry("Entry 2", strategy.long, when=strategy.opentrades == 1 and longsignal)

strategy.entry("Entry 3", strategy.long, when=strategy.opentrades == 2 and longsignal)

strategy.entry("Entry 4", strategy.long, when=strategy.opentrades == 3 and longsignal)

strategy.entry("Entry 5", strategy.long, when=strategy.opentrades == 4 and longsignal)





if strategy.position_size > 0
    strategy.exit(id="Exit 1", from_entry="Entry 1", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 2", from_entry="Entry 2", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 3", from_entry="Entry 3", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 4", from_entry="Entry 4", profit=Profit_Ticks, loss=Loss_Ticks)
    strategy.exit(id="Exit 5", from_entry="Entry 5", profit=Profit_Ticks, loss=Loss_Ticks)