Strategi Perdagangan Saluran Gelombang Donchian


Tanggal Pembuatan: 2023-11-08 12:31:56 Akhirnya memodifikasi: 2023-11-08 12:31:56
menyalin: 0 Jumlah klik: 693
1
fokus pada
1617
Pengikut

Strategi Perdagangan Saluran Gelombang Donchian

Ringkasan

Strategi perdagangan saluran bergelombang Dongxian menilai tren harga saat ini dengan menghitung saluran dengan harga tertinggi dan terendah dalam periode tertentu, dan melakukan perdagangan panjang dan pendek dalam kombinasi dengan saluran terobosan. Strategi ini cocok untuk perdagangan saham dan mata uang digital yang bergelombang tinggi.

Prinsip Strategi

Strategi ini membangun saluran dengan menghitung harga tertinggi pcmax dan harga terendah pcmin dalam siklus last (history).

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

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

Dari jumlah tersebut, 13 persen adalah pendapat dari Dev Moor.

Ketika harga menembus tren naik, sinyal long dihasilkan; ketika harga menembus tren turun, sinyal short dihasilkan.

Cara menentukan sinyal perdagangan spesifik adalah sebagai berikut:

  1. boundup = high > yh untuk menentukan apakah ada penembusan

  2. bounddn = low < yl untuk menentukan apakah terjatuh dari jalur

  3. upsign = sma(bounddn, 2) == 1 Berdasarkan garis rata-rata dari bounddn, terus menerus menerobos rel

  4. dnsign = sma(boundup, 2) == 1 Berdasarkan garis rata-rata dari boundup terus menerus menerobos jalur

  5. exitup = dnsign Menerobos jalur dan menghasilkan sinyal imbang

  6. exitdn = upsign Menembus rel dan menghasilkan sinyal posisi kosong

  7. if upsign Menembus rel bawah menghasilkan sinyal multipel

  8. if dnsign Menerobos jalur menghasilkan sinyal kosong

Strategi ini juga mengatur waktu trading stop untuk menghindari posisi overnight yang tidak perlu.

Keunggulan Strategis

  1. Menggunakan Saluran Dongxian untuk menilai tren, hasil pengukuran lebih baik

  2. Anda dapat melakukan perdagangan dua arah dengan mengatur sinyal plus dan minus.

  3. Filter rata untuk menilai sinyal dan menghindari perdagangan yang salah

  4. Pengaturan Stop Loss Opsional, Pengendalian Risiko

  5. Menetapkan waktu mulai dan berhenti trading untuk menghindari risiko posisi overnight

Risiko Strategis

  1. Saluran Tongxian sensitif terhadap parameter history dan percentDev, perlu mengoptimalkan parameter untuk menyesuaikan dengan varietas yang berbeda

  2. Sinyal-sinyal yang salah dapat terjadi pada saat gempa.

  3. Tidak mempertimbangkan faktor manajemen pesanan, yang dapat berdampak pada keuntungan di dalam perseroan

  4. Tidak mempertimbangkan faktor manajemen posisi, mungkin ada risiko terlalu banyak posisi di kasir

  5. Tidak mempertimbangkan faktor manajemen dana, dana transaksi harus diatur secara wajar di dalam kas.

Arah optimasi strategi

  1. Optimalkan parameter history dan percentDev agar lebih cocok untuk varietas yang berbeda

  2. Menambahkan filter untuk menghindari sinyal yang salah saat bergoyang

  3. Tambahkan modul manajemen posisi untuk mengontrol persentase modal yang digunakan dalam posisi tunggal

  4. Menambahkan Modul Manajemen Uang untuk membatasi persentase total posisi yang dikuasai

  5. Menambahkan fitur manajemen pesanan untuk mengoptimalkan cara pemesanan

Meringkaskan

Strategi perdagangan saluran yang berfluktuasi dengan strategi yang lebih tradisional untuk mengikuti tren dan sinyal perdagangan melalui terobosan saluran, pengukuran yang lebih baik, dan kemampuan perdagangan dua arah. Namun, strategi ini juga memiliki beberapa risiko, perlu mengoptimalkan parameter, filter, manajemen posisi, manajemen dana, manajemen pesanan, dan lain-lain untuk mendapatkan keuntungan yang stabil di pasar nyata. Secara keseluruhan, strategi ini adalah strategi yang lebih tradisional untuk mengikuti tren, setelah pengoptimalan dan perbaikan, dapat menjadi strategi perdagangan kuantitatif yang dapat diandalkan.

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