Strategi ini adalah strategi perdagangan kuantum sederhana yang memanfaatkan time-stepped pyramiding. Ide utamanya adalah untuk membuka posisi panjang setiap hari pada waktu yang ditetapkan, dan menetapkan tingkat mengambil keuntungan dan stop loss yang berbeda untuk setiap posisi untuk mewujudkan profit batch taking dan stop loss.
Strategi ini didasarkan pada tiga logika utama:
Piramida berkala
GunakansessionTime
parameter untuk mengatur jendela waktu perdagangan harian, posisi panjang piramida langkah demi langkah di pasar terbuka selama jendela ini.
Keuntungan individu dan penghentian kerugian
Set yang sesuai dengan tingkat mengambil keuntungantakeProfit
dan level stop lossstopLoss
untuk setiap posisi terbuka, sehingga setiap posisi memiliki keuntungan sendiri mengambil dan menghentikan logika kerugian untuk mewujudkan eksekusi batch.
Tutup semua posisi saat jendela waktu berakhir
Pilih apakah untuk menutup semua posisi yang dibuka selama jendela waktu di akhir jendela.
Strategi ini memiliki keuntungan berikut:
Diversifikasi risiko: alokasikan modal secara merata ke posisi yang berbeda untuk secara efektif mengendalikan kerugian posisi tunggal.
Batch profit taking dan stop loss. Posisi yang berbeda memiliki logika independen untuk menghindari stop loss massal.
Konfigurasi yang fleksibel. Parameter yang dapat disesuaikan seperti waktu piramida maksimum, jendela waktu harian, rasio profit taking/stop loss dll.
Logika yang sederhana dan jelas.
Ada juga beberapa risiko:
Risiko seluruh modal terjebak jika semua posisi memicu stop loss sebelum mengambil keuntungan.
Tidak ada batas pada total modal posisi terbuka per hari. terlalu banyak posisi dapat melebihi kapasitas modal jika menghadapi situasi pasar yang tidak biasa. Pertimbangkan untuk menambahkan total modal posisi maksimum per hari.
Konfigurasi jendela waktu yang tidak benar dapat kehilangan peluang perdagangan.
Strategi dapat ditingkatkan dari aspek berikut:
Tambahkan kondisi posisi terbuka berdasarkan indikator teknis untuk menghindari piramida sembrono.
Tambahkan batas modal total posisi terbuka harian untuk mencegah melebihi kapasitas modal.
Menetapkan rasio profit/stop loss yang berbeda untuk posisi yang berbeda untuk mewujudkan profit taking dan stop loss yang berbeda.
Tambahkan logika untuk menghubungkan jumlah posisi dengan saldo pool modal.
Sebagai kesimpulan, ini adalah templat strategi perdagangan kuantum yang sangat sederhana menggunakan metodologi piramida berlangkah waktu. Logika sederhana dan jelas sementara ada juga beberapa risiko dan ruang untuk peningkatan. Pengembang dapat mengoptimalkannya dengan benar untuk menjadikannya strategi kuantum yang relatif stabil dan andal.
/*backtest start: 2022-12-20 00:00:00 end: 2023-12-26 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/ // © A3Sh //@version=5 strategy("Simple_Pyramiding", overlay=true, pyramiding=99, initial_capital=500, default_qty_type=strategy.percent_of_equity, commission_type=strategy.commission.percent, commission_value=0.075, close_entries_rule='FIFO') // Study of a Simple DCA strategy that opens a position every day at a specified time. // A position is opened at the start time of the Timeframe. // Positions exit individually when the take profit level is triggered. // Option to activate Stop Loss and/or Position exit at the end of the Timeframe // Backtest Window start_time = input(defval=timestamp("01 April 2021 20:00"), group = "Backtest Window", title="Start Time") end_time = input(defval=timestamp("01 Aug 2022 20:00"), group = "Backtest Window", title="End Time") window() => true // Inputs posCount = input.int (6, group = "Risk", title = "Max Amount of DCA Entries") takeProfit = input.float (2.5, group = "Risk", title = "Take Profit %") slSwitch = input.bool (true, group = "Risk", title = "Activate Stop Loss") stopLoss = input.float (9, group = "Risk", title = "Stop Loss %") sessionTime = input("1800-1700", group = "DCA Settings", title = "DCA Order Timeframe", tooltip="Open order at the start/If ativated, close order at the end") exitDCA = input.bool (false, group = "DCA Settings", title = "Exit DCA Entry at end of Timeframe") // Order size based on max amount of pyramid orders q = (strategy.equity / posCount) / open // Timeframe for opening and closing a DCA order // example taken from https://stackoverflow.com/questions/69230164/pinescript-basic-question-open-a-trade-at-a-set-time-each-day t = time("D", sessionTime) isStart = na(t[1]) and not na(t) or t[1] < t isEnd = na(t) and not na(t[1]) or t[1] < t bgcolor(t ? color.new(color.blue,95) : na, title = " TimeFrame Color") // Create DCA Entries entry_price = 0.0 if isStart and window() for i = 0 to strategy.opentrades if strategy.opentrades == i entry_price := close entry_id = "PE_" + str.tostring(i + 1) strategy.entry(id = entry_id, direction=strategy.long, limit=entry_price, qty=q) if strategy.opentrades == posCount break //Exit DCA Entries when take profit or stop loss is triggered if strategy.opentrades > 0 and window() for i = 0 to strategy.opentrades exit_from = "PE_" + str.tostring(i + 1) exit_id = "Exit_" + str.tostring(i + 1) strategy.exit(id= exit_id, from_entry= exit_from, profit = close * takeProfit / 100 / syminfo.mintick, loss = slSwitch ? close * stopLoss /100 / syminfo.mintick :na) //Exit DCA Entries at end of DCA Timeframe if strategy.opentrades > 0 and exitDCA and isEnd and window() for i = 0 to strategy.opentrades exit_from = "PE_" + str.tostring(i + 1) exit_id = "Exit_" + str.tostring(i + 1) strategy.exit(id= exit_id, from_entry= exit_from, stop = close)