Strategi ini adalah strategi perdagangan kuant yang mudah yang menggunakan piramid masa. Idea utama adalah untuk membuka kedudukan panjang setiap hari pada masa yang ditetapkan, dan menetapkan tahap mengambil keuntungan dan menghentikan kerugian yang berbeza untuk setiap kedudukan untuk merealisasikan pengambilan keuntungan dan menghentikan kerugian.
Strategi ini berdasarkan tiga logik utama:
Piramida langkah masa
GunakansessionTime
parameter untuk menetapkan tetingkap masa dagangan harian, kedudukan panjang piramid langkah demi langkah di pasaran terbuka semasa tetingkap ini.
Keuntungan individu dan penghentian kerugian
Set yang sepadan mengambil tahap keuntungantakeProfit
dan tahap stop lossstopLoss
untuk setiap kedudukan dibuka, supaya setiap kedudukan mempunyai keuntungan sendiri mengambil dan menghentikan kerugian logik untuk merealisasikan batch pelaksanaan.
Tutup semua kedudukan apabila tetingkap masa berakhir
Pilih sama ada untuk menutup semua kedudukan dibuka semasa tetingkap masa di akhir tetingkap.
Strategi ini mempunyai kelebihan berikut:
Pembahagian risiko: Peruntukkan modal secara merata kepada kedudukan yang berbeza untuk mengawal kerugian kedudukan tunggal dengan berkesan.
Mengambil keuntungan kumpulan dan menghentikan kerugian. Posisi yang berbeza mempunyai logik bebas untuk mengelakkan kerugian menghentikan besar-besaran.
Konfigurasi fleksibel. Parameter yang boleh disesuaikan seperti masa piramid maksimum, tingkap masa harian, nisbah mengambil keuntungan / menghentikan kerugian dll.
Logik yang mudah difahami.
Terdapat juga beberapa risiko:
Risiko modal penuh terjebak jika semua kedudukan mencetuskan stop loss sebelum mengambil keuntungan.
Tidak ada had kepada jumlah modal kedudukan terbuka setiap hari. terlalu banyak kedudukan boleh melebihi modal yang boleh ditanggung jika menghadapi keadaan pasaran yang tidak biasa. Pertimbangkan untuk menambah jumlah modal kedudukan maksimum setiap hari.
Konfigurasi tetingkap masa yang tidak betul boleh kehilangan peluang perdagangan.
Strategi ini boleh ditingkatkan dari aspek berikut:
Tambah keadaan kedudukan terbuka berdasarkan penunjuk teknikal untuk mengelakkan piramida yang sembrono.
Tambah had modal kedudukan terbuka harian untuk mengelakkan melebihi kapasiti modal.
Tetapkan nisbah mengambil keuntungan / menghentikan kerugian yang berbeza untuk kedudukan yang berbeza untuk merealisasikan mengambil keuntungan yang berbeza dan menghentikan kerugian.
Tambah logik untuk menghubungkan jumlah kedudukan dengan baki kumpulan modal.
Kesimpulannya, ini adalah templat strategi perdagangan kuant yang sangat mudah dengan menggunakan metodologi piramid berlangkah masa. Logiknya mudah dan jelas sementara terdapat juga beberapa risiko dan ruang untuk peningkatan.
/*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)