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.
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 ((
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.
Strategi jaringan tetap memiliki keuntungan berikut:
Mencapai harga jual murah tanpa waktu pasar, mengurangi kesulitan perdagangan.
Menetapkan jarak grid yang tepat secara efektif mengendalikan risiko dan menghindari pengejaran.
Menguntungkan apakah pasar naik atau turun.
Fleksibilitas untuk menyesuaikan parameter jaringan untuk kondisi pasar yang berbeda.
Meningkatkan ukuran posisi dengan menambahkan lapisan grid.
Menggabungkan stop loss menghindari kerugian besar dalam peristiwa pasar ekstrem.
Strategi ini juga memiliki beberapa risiko:
Biaya perdagangan memakan keuntungan selama pasar rentang terikat.
Harga awal yang salah dan pengaturan grid menyebabkan kerugian.
Perbedaan harga dapat menyebabkan kerugian selama peristiwa ekstrem.
Perdagangan mekanis memiliki risiko penempatan order.
Kejadian terkonsentrasi dapat memperkuat kerugian.
Solusi:
Mengoptimalkan parameter grid untuk memastikan keuntungan > biaya.
Backtest untuk menemukan harga awal yang optimal dan jarak grid.
Tambahkan stop loss untuk mengontrol risiko.
Rilakkan harga order untuk menghindari penyisipan.
Atur kontrol risiko untuk membatasi kerugian maksimum.
Strategi dapat ditingkatkan dengan cara berikut:
Sesuaikan jarak grid secara dinamis berdasarkan volatilitas.
Menghitung kisaran harga untuk mengatur harga awal secara dinamis.
Tambahkan model ML untuk memprediksi harga dan menyesuaikan grid.
Optimalkan stop loss berdasarkan titik stop loss historis.
Masukkan ukuran posisi berdasarkan tingkat keuntungan.
Mengoptimalkan manajemen posisi untuk memaksimalkan pemanfaatan modal.
Meningkatkan pelaksanaan menggunakan TWAP untuk mengurangi biaya dampak.
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)