Strategi perdagangan ayunan kuantitatif berdasarkan pelbagai rangka masa


Tarikh penciptaan: 2023-12-01 13:50:02 Akhirnya diubah suai: 2023-12-01 13:50:02
Salin: 0 Bilangan klik: 420
1
fokus pada
1166
Pengikut

Strategi perdagangan ayunan kuantitatif berdasarkan pelbagai rangka masa

Gambaran keseluruhan

Strategi ini menggunakan pengukuran kuantitatif yang digabungkan dalam pelbagai bingkai masa untuk mengenal pasti segmen harga bitcoin dan untuk mengesan transaksi. Strategi ini menggunakan bingkai masa 5 minit untuk memegang keuntungan segmen jangka panjang.

Prinsip Strategi

  1. Indeks RSI berdasarkan jangka masa Sunshine, menggunakan kuantiti transaksi untuk pengiraan berat, penapis pecah palsu.
  2. Pengolahan halus EMA pada RSI Sunline untuk membina tanda gelombang kuantitatif.
  3. Rangka masa 5 minit menggunakan indikator regresi linear dan indikator HMA untuk membina isyarat perdagangan.
  4. Strategi untuk mengenal pasti gelombang panjang dalam harga melalui gabungan indikator dan isyarat dagangan dalam tempoh kuantitatif.

Analisis kelebihan

  1. Menggunakan RSI yang bertimbangan kuantiti, ia dapat mengenal pasti gelombang sebenar dan menyaring pecah palsu.
  2. Indeks HMA lebih sensitif terhadap perubahan harga dan dapat menangkap perubahan pada masa yang tepat.
  3. Dengan menggunakan pelbagai kerangka masa, pengiktirafan gelombang panjang dan tengah lebih tepat.
  4. 5 minit untuk berdagang, lebih kerap.
  5. Strategi pengesanan gelombang, tidak perlu memilih titik yang tepat, dan tahan lebih lama.

Analisis risiko

  1. Indeks kuantitatif mungkin memberi isyarat yang salah, dianjurkan untuk menggabungkan analisis asas.
  2. Ia mungkin berbalik arah di tengah-tengah gelombang, dan anda harus menetapkan mekanisme penarikan diri dari kerugian.
  3. Isyarat perdagangan terlewat, mungkin terlepas titik masuk terbaik.
  4. Bahagian yang menguntungkan memerlukan tempoh pegangan yang lebih lama dan memerlukan tekanan kewangan tertentu.

Arah pengoptimuman

  1. Uji kesan RSI dengan pelbagai parameter.
  2. Cuba masukkan tanda-tanda lain yang membantu.
  3. Mengoptimumkan parameter panjang bagi HMA.
  4. Tambah strategi berhenti dan hentikan kerugian.
  5. Memperbaiki kitaran pegangan untuk perdagangan jalur gelombang.

ringkaskan

Strategi ini berjaya menangkap trend panjang dalam Bitcoin dengan cara menggabungkan pelbagai kerangka masa dan pengesanan gelombang. Perbandingan dengan perdagangan garis pendek, pengunduran perdagangan dalam gelombang panjang dan menengah lebih kecil dan ruang keuntungan lebih besar. Langkah seterusnya, dengan penyesuaian parameter dan penambahan strategi pengurusan risiko, diharapkan untuk meningkatkan kadar keuntungan dan kestabilan strategi.

Kod 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)