Strategi perdagangan jaringan tetap

Penulis:ChaoZhang, Tanggal: 2023-11-16 17:09:45
Tag:

img

Gambaran umum

Strategi ini mengadopsi pendekatan perdagangan grid tetap dengan menetapkan harga awal dan persentase antara setiap lapisan grid. Kemudian menghitung 10 harga beli dan jual tetap berdasarkan persentase untuk menerapkan strategi perdagangan grid low-buy-high-sell.

Logika Strategi

Strategi ini pertama-tama menetapkan harga awal dan persentase jarak jaringan gridpercent.

Rumus harga beli:

b1 = harga-(harga*p1)

b2 = sprice-(sprice*p2)

b3=sprice-(sprice*p3)

Di mana p1 ~ p10 adalah persentase yang dihitung lapisan demi lapisan berdasarkan gridpercent.

Rumus harga jual:

S1=b1+(sprice*p1)

S2=b2+(sprice*p1)

S3=b3+(sprice*p1)

Kondisi pembelian diaktifkan ketika harga penutupan lebih rendah dari harga pembelian:

jika (dekat

strategi.entry ((b1, strategi.long, when=(close

Demikian pula, kondisi jual memicu ketika harga penutupan lebih tinggi dari harga jual:

jika (dekat>s1)

strategy.exit("b1", ketika=(close>s1))

Ini menerapkan strategi perdagangan jaringan low-buy-high-sell.

Keuntungan

Strategi jaringan tetap memiliki keuntungan berikut:

  1. Mencapai harga jual murah tanpa waktu pasar, mengurangi kesulitan perdagangan.

  2. Menetapkan jarak grid yang tepat secara efektif mengendalikan risiko dan menghindari pengejaran.

  3. Menguntungkan apakah pasar naik atau turun.

  4. Fleksibilitas untuk menyesuaikan parameter jaringan untuk kondisi pasar yang berbeda.

  5. Meningkatkan ukuran posisi dengan menambahkan lapisan grid.

  6. Menggabungkan stop loss menghindari kerugian besar dalam peristiwa pasar ekstrem.

Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Biaya perdagangan memakan keuntungan selama pasar rentang terikat.

  2. Harga awal yang salah dan pengaturan grid menyebabkan kerugian.

  3. Perbedaan harga dapat menyebabkan kerugian selama peristiwa ekstrem.

  4. Perdagangan mekanis memiliki risiko penempatan order.

  5. Kejadian terkonsentrasi dapat memperkuat kerugian.

Solusi:

  1. Mengoptimalkan parameter grid untuk memastikan keuntungan > biaya.

  2. Backtest untuk menemukan harga awal yang optimal dan jarak grid.

  3. Tambahkan stop loss untuk mengontrol risiko.

  4. Rilakkan harga order untuk menghindari penyisipan.

  5. Atur kontrol risiko untuk membatasi kerugian maksimum.

Peningkatan

Strategi dapat ditingkatkan dengan cara berikut:

  1. Sesuaikan jarak grid secara dinamis berdasarkan volatilitas.

  2. Menghitung kisaran harga untuk mengatur harga awal secara dinamis.

  3. Tambahkan model ML untuk memprediksi harga dan menyesuaikan grid.

  4. Optimalkan stop loss berdasarkan titik stop loss historis.

  5. Masukkan ukuran posisi berdasarkan tingkat keuntungan.

  6. Mengoptimalkan manajemen posisi untuk memaksimalkan pemanfaatan modal.

  7. Meningkatkan pelaksanaan menggunakan TWAP untuk mengurangi biaya dampak.

Kesimpulan

Strategi ini mengimplementasikan perdagangan grid tetap dengan menetapkan harga beli dan jual berdasarkan harga awal dan persentase grid, mencapai auto low-buy-high-sell. Penting untuk mengelola risiko dengan mengoptimalkan parameter, penyesuaian dinamis dan stop loss untuk penguncian keuntungan dan pengendalian kerugian.


/*backtest
start: 2022-11-09 00:00:00
end: 2023-11-15 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Lionkind

//@version=5
strategy("Grid HW", overlay = true, margin_long = 1, margin_short = 1)

// Fix 35k price as starting point and 1% as a distance

sprice=input(40500,"Starting price")
gridpercent=input(1,"Percent")

// calculate the % of the 10 layers 

p1=((gridpercent*1)/100)
p2=((gridpercent*2)/100)
p3=((gridpercent*3)/100)
p4=((gridpercent*4)/100)
p5=((gridpercent*5)/100)
p6=((gridpercent*6)/100)
p7=((gridpercent*7)/100)
p8=((gridpercent*8)/100)
p9=((gridpercent*9)/100)
p10=((gridpercent*10)/100)

//set buy prices 

b1=sprice-(sprice*p1)
b2=sprice-(sprice*p2)
b3=sprice-(sprice*p3)
b4=sprice-(sprice*p4)
b5=sprice-(sprice*p5)
b6=sprice-(sprice*p6)
b7=sprice-(sprice*p7)
b8=sprice-(sprice*p8)
b9=sprice-(sprice*p9)
b10=sprice-(sprice*p10)

//set sell prices

s1=b1+(sprice*p1)
s2=b2+(sprice*p1)
s3=b3+(sprice*p1)
s4=b4+(sprice*p1)
s5=b5+(sprice*p1)
s6=b6+(sprice*p1)
s7=b7+(sprice*p1)
s8=b8+(sprice*p1)
s9=b9+(sprice*p1)
s10=b10+(sprice*p1)

//Long conditions

lc1=close<b1
lc2=close<b2
lc3=close<b3
lc4=close<b4
lc5=close<b5
lc6=close<b6
lc7=close<b7
lc8=close<b8
lc9=close<b9
lc10=close<b10

//exit conditions
ec1=close>s1
ec2=close>s2
ec3=close>s3
ec4=close>s4
ec5=close>s5
ec6=close>s6
ec7=close>s7
ec8=close>s8
ec9=close>s9
ec10=close>s10

//long orders
if (lc1)
    strategy.entry("b1", strategy.long, when=(lc1))
    
if (lc2)
    strategy.entry("b2", strategy.long, when=(lc2))
    
if (lc3)
    strategy.entry("b3", strategy.long, when=(lc3))    
if (lc4)
    strategy.entry("b4", strategy.long, when=(lc4))    
if (lc5)
    strategy.entry("b5", strategy.long, when=(lc5))
if (lc6)
    strategy.entry("b6", strategy.long, when=(lc6))
if (lc7)
    strategy.entry("b7", strategy.long, when=(lc7))    
if (lc8)
    strategy.entry("b8", strategy.long, when=(lc8))    
if (lc9)
    strategy.entry("b9", strategy.long, when=(lc9))    
if (lc10)
    strategy.entry("b10", strategy.long, when=(lc10))
    
//exit orders   
if (ec1)
    strategy.exit("b1", when=(ec1), limit=1)
if (ec2)
    strategy.exit("b2", when=(ec2), limit=1)
if (ec3)
    strategy.exit("b3", when=(ec3), limit=1)
if (ec4)
    strategy.exit("b4", when=(ec4), limit=1)
if (ec5)
    strategy.exit("b5", when=(ec5), limit=1)
if (ec6)
    strategy.exit("b6", when=(ec6), limit=1)
if (ec7)
    strategy.exit("b7", when=(ec7), limit=1)
if (ec8)
    strategy.exit("b8", when=(ec8), limit=1)
if (ec9)
    strategy.exit("b9", when=(ec9), limit=1)
if (ec10)
    strategy.exit("b10", when=(ec10), limit=1)
    

plot(b1,color=color.green)
plot(s1, color=color.red)
plot(b2, color=color.purple)

Lebih banyak