Strategi Perdagangan Saluran Donchian Wave


Tarikh penciptaan: 2023-11-08 12:31:56 Akhirnya diubah suai: 2023-11-08 12:31:56
Salin: 0 Bilangan klik: 693
1
fokus pada
1617
Pengikut

Strategi Perdagangan Saluran Donchian Wave

Gambaran keseluruhan

Strategi dagangan saluran turun naik Dongxian menilai trend harga semasa dengan mengira saluran harga tertinggi dan terendah dalam tempoh tertentu, dan berdagang panjang dan pendek dengan menggabungkan saluran pecah. Strategi ini sesuai untuk perdagangan saham dan mata wang digital yang bergelombang tinggi.

Prinsip Strategi

Strategi ini membina saluran dengan mengira harga tertinggi pcmax dan harga terendah pcmin dalam tempoh terakhir (history).

Jalur atasyh = pcmax - (pcmax - pcmin) * (100 - percentDev)/100

Jalur bawahyl = pcmin + (pcmax - pcmin) * percentDev/100

Daripadanya, 13 peratus berpendapat bahawa ia adalah salah.

Apabila harga menembusi ke arah atas, ia menghasilkan isyarat panjang; apabila harga menembusi ke arah bawah, ia menghasilkan isyarat pendek.

Keputusan untuk menghasilkan isyarat dagangan tertentu adalah seperti berikut:

  1. boundup = high > yh untuk menentukan sama ada keretakan di atas landasan

  2. bounddn = low < yl untuk menentukan sama ada terjatuh

  3. upsign = sma(bounddn, 2) == 1 Berdasarkan garis purata bounddn, terus menerus menembusi bawah landasan

  4. dnsign = sma(boundup, 2) == 1 Berdasarkan garis purata boundup, terus menerus menembusi landasan

  5. exitup = dnsign Menembusi atas landasan menghasilkan isyarat imbang

  6. exitdn = upsign Meletupkan bawah landasan menghasilkan isyarat kedudukan rata

  7. if upsign Menembusi Laluan Bawah

  8. if dnsign Menembusi Laluan Terbuka Mencipta Isyarat Keluar

Strategi ini juga menetapkan waktu permulaan perdagangan untuk mengelakkan kedudukan malam yang tidak perlu.

Kelebihan Strategik

  1. Menggunakan Saluran Dongxian untuk menilai trend, pengukuran semula lebih baik

  2. Anda boleh menukar mata wang dengan cara yang sama.

  3. Usahakan untuk mengesan isyarat dengan penapisan linear untuk mengelakkan perdagangan yang salah

  4. Tetapkan pilihan untuk menghentikan kerugian dan mengawal risiko

  5. Tetapkan waktu mula dan berhenti untuk mengelakkan risiko kedudukan semalaman

Risiko Strategik

  1. Saluran Dongjian sensitif terhadap parameter history dan percentDev, memerlukan parameter yang dioptimumkan untuk menyesuaikan diri dengan pelbagai jenis

  2. Sinyal yang salah boleh berlaku semasa gempa bumi

  3. Tidak mengambil kira faktor pengurusan pesanan yang mungkin memberi kesan kepada keuntungan dalam bentuk fizikal

  4. Tidak mengambil kira faktor pengurusan kedudukan, mungkin terdapat risiko terlalu banyak kedudukan dalam cakera

  5. Tidak mempertimbangkan pengurusan dana, dana dagangan perlu diletakkan dengan munasabah di dalam simpanan

Arah pengoptimuman strategi

  1. Pengoptimuman parameter sejarah dan peratusan Dev untuk menyesuaikan dengan pelbagai jenis

  2. Menambah penapis untuk mengelakkan isyarat salah semasa gegaran

  3. Menambah modul pengurusan kedudukan untuk mengawal peratusan dana yang diambil oleh kedudukan tunggal

  4. Menambah modul pengurusan wang, mengehadkan peratusan wang yang diambil oleh kedudukan keseluruhan

  5. Menambah fungsi pengurusan pesanan untuk mengoptimumkan cara pesanan

ringkaskan

Strategi perdagangan saluran turun naik Dongxian menilai trend dan isyarat perdagangan melalui terobosan saluran, pengukuran semula yang baik, dan mempunyai keupayaan perdagangan dua hala. Tetapi strategi ini juga mempunyai beberapa risiko, memerlukan pengoptimuman parameter, penapis, pengurusan kedudukan, pengurusan dana, pengurusan pesanan dan sebagainya untuk mendapatkan keuntungan yang stabil di pasaran. Secara keseluruhan, strategi ini adalah strategi mengikuti trend yang lebih tradisional, dan setelah pengoptimuman, ia boleh menjadi strategi perdagangan kuantitatif yang boleh dipercayai.

Kod sumber strategi
/*backtest
start: 2023-10-31 00:00:00
end: 2023-11-07 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////////////////////////
//  Copyright by AlexInc v1.0 02/07/2018  @aav_1980
// PriceChannel strategy
// If you find this script helpful, you can also help me by sending donation to 
// BTC 16d9vgFvCmXpLf8FiKY6zsy6pauaCyFnzS
// LTC LQ5emyqNRjdRMqHPHEqREgryUJqmvYhffM
////////////////////////////////////////////////////////////
//@version=3
strategy("AlexInc PriceChannel Str", overlay=false)
history = input(20)
percentDev = input(13)
capital = input(100)

needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
usestoploss = input(true, defval = true, title = "Stop Loss")
stoplossmult = input(3.8, defval = 3.8, minval = 1, maxval = 10, title = "Stop loss multiplicator")


fromyear = input(2018, defval = 2018, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

bodymin = min( open, close)
bodymax = max(open, close)

pcmax = highest(bodymax, history)
pcmin = lowest(bodymin, history)

yh = ((pcmax - pcmin) / 100 * (100 - percentDev)) + pcmin
yl = ((pcmax - pcmin) / 100 * percentDev) + pcmin

plot(pcmax)
plot(pcmin)
plot(yh)
plot(yl)

//1
bounddn = low < yl ? 1 : 0
boundup = high > yh ? 1 : 0
upsign = sma(bounddn, 2) == 1
dnsign = sma(boundup, 2) == 1
//2
//upsign = crossover(bodymin, yl)
//dnsign = crossunder(bodymax , yh)


exitup = dnsign
exitdn = upsign

lot = strategy.equity / close * capital / 100


xATR = atr(history)
nLoss = usestoploss ? stoplossmult * xATR : na

stop_level_long = 0.0
stop_level_long := nz(stop_level_long[1])

stop_level_short = 0.0
stop_level_short := nz(stop_level_short[1])

pos = strategy.position_size
if pos >0 and pos[1] <= 0 //crossover(pos, 0.5)
    stop_level_long = strategy.position_avg_price - nLoss
if pos < 0 and pos[1] >= 0 //crossunder(pos, -0.5)
    stop_level_short = strategy.position_avg_price + nLoss
if pos == 0    
    stop_level_long = bodymin - nLoss
    stop_level_short = bodymax + nLoss

//plot(bodymax + nLoss, color=red)
//plot(bodymin - nLoss, color=red)
plot(stop_level_long, color=red)
plot(stop_level_short, color=red)

if upsign
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot)

if dnsign
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

if true
    strategy.close_all()


//if strategy.position_size != 0
//    strategy.exit("Exit Long", from_entry = "Long", stop = stop_level_long)
//    strategy.exit("Exit Short", from_entry = "Short", stop = stop_level_short)