Ini adalah strategi perdagangan robot BTC multi-level batch take profit. Ini memasuki posisi panjang dengan menemukan titik terendah dan menetapkan beberapa titik take profit untuk keluar batch. Ini juga menetapkan titik stop loss untuk pengendalian risiko. Strategi ini cocok ketika bullish pada BTC.
Cari sinyal masuk: Menghasilkan sinyal beli ketika indikator CC melintasi di bawah 0. Beli posisi panjang pada titik ini.
Atur stop loss: Atur stop loss persentase melalui input, mengubah ke tingkat harga untuk stop loss.
Atur beberapa titik mengambil keuntungan: 4 titik keluar, menetapkan persentase mengambil keuntungan untuk setiap titik melalui input, mengkonversi ke tingkat harga.
Pengendalian risiko: Tetapkan ukuran posisi maksimum, atur persentase keluar untuk setiap titik keluar melalui input untuk dispersi risiko.
Keuntungan dari strategi ini adalah:
Sinyal masuk yang dapat diandalkan dengan membeli di titik terendah, menghindari membeli di titik tertinggi.
Multi-level mengambil keuntungan kunci dalam keuntungan parsial sementara menjaga beberapa keuntungan berjalan.
Stop loss mengendalikan risiko dan membatasi kerugian ke kisaran tertentu.
Batch exit menyebarkan risiko, menghindari kerugian penuh sekaligus.
Penarikan dapat dikendalikan sampai batas tertentu.
Risiko dari strategi ini adalah:
Indikator CC tidak dapat sepenuhnya menjamin titik terendah, mungkin kehilangan peluang membeli.
Pengaturan stop loss yang tidak benar dapat menyebabkan stop loss yang tidak perlu.
Keluarnya batch yang tidak tepat juga dapat menyebabkan hilangnya keuntungan.
Mengambil keuntungan lebih sulit di berbagai pasar.
Mungkin sulit untuk menghentikan kerugian dalam kemunduran tajam.
Optimasi potensial:
Optimalkan sinyal masuk dengan lebih banyak indikator atau pembelajaran mesin untuk waktu yang lebih baik.
Mengoptimalkan strategi stop loss untuk membuatnya lebih elastis terhadap pergerakan pasar.
Mengoptimalkan jalan keluar untuk adaptasi yang lebih baik di pasar yang berbeda dan tren.
Tambahkan trailing stop untuk mengambil keuntungan yang lebih fleksibel.
Uji aset yang berbeda untuk set parameter terbaik.
Singkatnya, ini adalah strategi perdagangan BTC berdasarkan pembelian pada titik terendah dengan multi-level take profit dan stop loss. Ini memiliki keuntungan tertentu dan juga area yang dapat ditingkatkan. Optimasi lebih lanjut pada pengendalian penarikan dan mengambil keuntungan dapat membuat strategi berkinerja lebih baik. Secara keseluruhan, ini memberikan pendekatan yang layak untuk perdagangan algoritmik BTC.
/*backtest start: 2023-09-17 00:00:00 end: 2023-10-17 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] args: [["v_input_1",2]] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © RafaelZioni // © theCrypster 2020 //@version=4 // strategy(title = "BTC bot", overlay = true, pyramiding=1,initial_capital = 10000, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.075) strat_dir_input = input(title="Strategy Direction", defval="long", options=["long", "short", "all"]) strat_dir_value = strat_dir_input == "long" ? strategy.direction.long : strat_dir_input == "short" ? strategy.direction.short : strategy.direction.all strategy.risk.allow_entry_in(strat_dir_value) //INPUTS higherTF = input("W", type=input.resolution) pc = security(syminfo.tickerid, higherTF, close[1], lookahead=true) ph = security(syminfo.tickerid, higherTF, high[1], lookahead=true) pl = security(syminfo.tickerid, higherTF, low[1], lookahead=true) PP = 0.0,R1 = 0.0, R2 = 0.0, R3 = 0.0,S1 = 0.0, S2 = 0.0, S3 = 0.0 PP := (ph + pl + pc) / 3 R1 := PP + (PP - pl) S1 := PP - (ph - PP) R2 := PP + (ph - pl) S2 := PP - (ph - pl) factor=input(2) R3 := ph + factor * (PP - pl) S3 := pl - 2 * (ph - PP) // length=input(21) // p = close vrsi = rsi(p, length) pp=ema(vrsi,length) d=(vrsi-pp)*5 cc=(vrsi+d+pp)/2 // low1=crossover(cc,0) sell=crossover(close[1],R3) // l = low1 s=sell if l strategy.entry("buy", strategy.long) if s strategy.entry("sell", strategy.short) per(pcnt) => strategy.position_size != 0 ? round(pcnt / 100 * strategy.position_avg_price / syminfo.mintick) : float(na) stoploss=input(title=" stop loss", defval=15, minval=0.01) los = per(stoploss) q1=input(title=" qty_percent1", defval=25, minval=1) q2=input(title=" qty_percent2", defval=25, minval=1) q3=input(title=" qty_percent3", defval=25, minval=1) tp1=input(title=" Take profit1", defval=3, minval=0.01) tp2=input(title=" Take profit2", defval=5, minval=0.01) tp3=input(title=" Take profit3", defval=7, minval=0.01) tp4=input(title=" Take profit4", defval=10, minval=0.01) strategy.exit("x1", qty_percent = q1, profit = per(tp1), loss = los) strategy.exit("x2", qty_percent = q2, profit = per(tp2), loss = los) strategy.exit("x3", qty_percent = q3, profit = per(tp3), loss = los) strategy.exit("x4", profit = per(tp4), loss = los)