Strategi Perdagangan Grid Tetap

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

img

Ringkasan

Strategi ini menggunakan pendekatan perdagangan grid tetap dengan menetapkan harga permulaan dan peratusan antara setiap lapisan grid. Kemudian ia mengira 10 harga beli dan jual tetap berdasarkan peratusan untuk melaksanakan strategi perdagangan grid pembelian rendah-penjualan tinggi.

Logika Strategi

Strategi ini mula-mula menetapkan harga permulaan dan peratusan jarak gridperatusan grid.

Rumus harga beli:

b1=sprice-(sprice*p1)

b2=sprice-(sprice*p2)

b3=sprice-(sprice*p3)

Di mana p1 ~ p10 adalah peratusan yang dikira lapisan demi lapisan berdasarkan gridpercent.

Rumus harga jual:

s1=b1+(sprice*p1)

s2=b2+(sprice*p1)

s3=b3+(sprice*p1)

Keadaan beli akan diaktifkan apabila harga penutupan lebih rendah daripada harga beli:

jika (dekat

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

Begitu juga, syarat jual mencetuskan apabila harga penutupan lebih tinggi daripada harga jual:

jika (dekat>s1)

strategy.exit("b1", apabila=(dekat>s1))

Ini melaksanakan strategi perdagangan grid pembelian rendah-penjualan tinggi.

Kelebihan

Strategi grid tetap mempunyai kelebihan berikut:

  1. Memperoleh auto rendah-beli-tinggi-jual tanpa masa pasaran, mengurangkan kesukaran perdagangan.

  2. Menetapkan jarak grid yang betul berkesan mengawal risiko dan mengelakkan mengejar.

  3. Mendapat keuntungan sama ada pasaran naik atau turun.

  4. Fleksibiliti untuk menyesuaikan parameter grid untuk keadaan pasaran yang berbeza.

  5. Meningkatkan saiz kedudukan dengan menambah lapisan grid.

  6. Memasukan stop loss mengelakkan kerugian besar dalam peristiwa pasaran yang melampau.

Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Bayaran dagangan memakan keuntungan semasa pasaran yang terhad.

  2. Harga permulaan yang tidak betul dan tetapan grid membawa kepada kerugian.

  3. Perbezaan harga boleh menyebabkan kerugian semasa peristiwa yang melampau.

  4. Perdagangan mekanikal mempunyai risiko penyisipan pesanan.

  5. Kejadian tertumpu boleh memperkuat kerugian.

Penyelesaian:

  1. Mengoptimumkan parameter grid untuk memastikan keuntungan > yuran.

  2. Uji balik untuk mencari harga permulaan dan jarak grid yang optimum.

  3. Tambah stop loss untuk mengawal risiko.

  4. Relaks harga pesanan untuk mengelakkan penyisipan.

  5. Tetapkan kawalan risiko untuk mengehadkan kerugian maksimum.

Peningkatan

Strategi ini boleh ditingkatkan dengan cara berikut:

  1. Sesuaikan jarak grid secara dinamik berdasarkan turun naik.

  2. Mengira julat harga untuk menetapkan harga permulaan secara dinamik.

  3. Tambah model ML untuk meramalkan harga dan menyesuaikan grid.

  4. Mengoptimumkan stop loss berdasarkan titik stop loss sejarah.

  5. Menggabungkan saiz kedudukan berdasarkan tahap keuntungan.

  6. Mengoptimumkan pengurusan kedudukan untuk memaksimumkan penggunaan modal.

  7. Meningkatkan pelaksanaan menggunakan TWAP untuk mengurangkan kos kesan.

Kesimpulan

Strategi ini melaksanakan perdagangan grid tetap dengan menetapkan harga beli dan jual berdasarkan harga permulaan dan peratusan grid, mencapai auto-low-buy-high-sell. Adalah penting untuk menguruskan risiko dengan mengoptimumkan parameter, pelarasan dinamik dan stop loss untuk kunci keuntungan dan kawalan kerugian. Menggabungkan teknik ML dan pengurusan wang maju dapat meningkatkan lagi keuntungan strategi dan kadar kemenangan.


/*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 lanjut