
Strategi pelaburan tetap berjadual pintar adalah sistem perdagangan jangka panjang berdasarkan kos purata dolar (DCA) yang mengoptimumkan proses pengumpulan aset dengan menetapkan kombinasi pesanan asas dan pesanan keselamatan. Strategi ini secara automatik meningkatkan input pembelian apabila pasaran turun, dan mencapai keuntungan berkala apabila sasaran keuntungan yang ditetapkan dicapai. Reka bentuk teras strategi ini merangkumi kemasukan jumlah tetap awal, pesanan keselamatan bertingkat, pengiraan kos purata bergerak untuk melengkapi pergudangan, dan mekanisme penarikan diri yang tepat, yang sangat sesuai untuk pengumpulan aset jangka panjang di pasaran yang tidak menentu.
Strategi ini adalah berasaskan kepada konsep asas kos rata-rata, tetapi dengan peningkatan yang ketara melalui mekanisme pesanan keselamatan bertingkat-tingkat. Proses pelaksanaan strategi adalah seperti berikut:
Pesanan asas masukApabila tidak memegang kedudukan, sistem membeli dengan jumlah dolar tetap yang telah ditetapkan (baseOrderSize) pada harga semasa, dan mencatat harga dan kuantiti masuk.
Mekanisme pemicu perintah keselamatanSemasa memegang kedudukan, jika harga turun melebihi peratusan penyimpangan yang diingini (priceDeviation) dan belum mencapai had jumlah pesanan keselamatan maksimum, sistem akan mencetuskan penambahan kedudukan.
Penyesuaian saiz pesanan dinamikUkuran setiap pesanan keselamatan diperluaskan secara dinamik dengan penggandaan, yang dikira dengan formula: baseOrderSize * orderSizeMultiplier^(safetyOrderCount+1) 。
Pengiraan kos purataSistem ini menjejaki kos dan kuantiti dalam masa nyata, dan secara dinamik mengira harga kemasukan purata melalui kos dan kuantiti yang dibahagikan.
Mekanisme penarikan diriApabila harga pasaran meningkat kepada kos purata ditambah dengan peratusan sasaran keuntungan yang ditetapkan, sistem secara automatik melonggarkan semua pegangan dan menyelesaikan satu kitaran perdagangan yang lengkap.
Strategi ini menggunakan reka bentuk kitaran, dengan semua meter dan pemantauan pembolehubah diset semula selepas setiap setoran kosong, bersiap sedia untuk memulakan kitaran dagangan seterusnya.
Maksimumkan Kesan Purata KosSistem ini secara automatik meningkatkan pembelian apabila harga turun, mengurangkan kos pemegang purata secara ketara, dan meningkatkan ruang untuk keuntungan masa depan.
Automasi kawalan risikoMelalui mekanisme pesanan selamat yang disediakan, strategi ini dapat melaksanakan kedudukan semula mengikut rancangan yang telah ditentukan semasa penurunan pasaran, mengelakkan keputusan emosi.
Mengoptimumkan kecekapan penggunaan danaDengan reka bentuk penggandaan saiz pesanan, strategi ini membolehkan pelaburan lebih banyak apabila harga turun, dan mengumpul lebih banyak aset pada titik harga yang lebih baik.
Pengurusan objektif keuntungan yang tepatMekanisme berhenti dinamik berdasarkan harga kemasukan purata, memastikan setiap kitaran perdagangan dapat mengunci keuntungan apabila mencapai sasaran keuntungan yang ditetapkan.
Kustomisasi yang tinggiPengguna boleh menyesuaikan saiz pesanan asas, peratusan bias, jumlah pesanan keselamatan maksimum, penggandaan saiz pesanan dan sasaran keuntungan mengikut keadaan pasaran yang berbeza dan keutamaan risiko peribadi.
Rujukan perdagangan visualStrategi: menyediakan visibiliti dalam masa nyata mengenai harga permulaan purata, harga sasaran berhenti, dan harga yang dicetuskan oleh pesanan keselamatan untuk memudahkan keputusan perdagangan.
Penurunan penggunaan modal pasaranDalam pasaran yang terus menurun, strategi ini boleh cepat menghabiskan dana yang tersedia, terutamanya apabila menetapkan saiz pesanan yang lebih tinggi. Penyelesaian adalah menetapkan jumlah pesanan keselamatan maksimum yang munasabah dan menyesuaikan saiz pesanan asas mengikut kitaran pasaran.
Mekanisme tanpa kerosakanTidak ada mekanisme hentian kerugian dalam reka bentuk strategi semasa, yang boleh menyebabkan kerugian besar dalam keadaan pasaran yang melampau. Ia disyorkan untuk memperkenalkan hentian bersyarat atau hentian berdasarkan masa untuk mengehadkan kerugian yang berpotensi.
Kepekaan ParameterPrestasi strategi sangat bergantung kepada tetapan parameter, kombinasi parameter yang tidak sesuai boleh menyebabkan kesan yang buruk. Adalah disyorkan untuk mencari kombinasi parameter yang optimum melalui pengulangan data sejarah.
Tidak mengenal pasti trend pasaranStrategi ini tidak mengandungi mekanisme pengenalan trend, mungkin masuk awal dalam trend penurunan yang kuat. Anda boleh mempertimbangkan untuk menggabungkan indikator trend sederhana sebagai syarat penapisan masuk.
Risiko kecairanDalam pasaran yang kurang kecairan, pesanan keselamatan besar-besaran mungkin menghadapi titik tergelincir atau kesukaran transaksi. Ia disyorkan untuk menggunakan atau menambah mekanisme pemeriksaan kecairan dalam pasaran yang tinggi.
Integrasi penapis trendMengintegrasikan indikator pengiktirafan trend yang mudah (seperti penyambungan purata bergerak atau indeks kekuatan relatif) ke dalam logik masuk untuk mengelakkan kedudukan yang terlalu awal dalam trend penurunan yang kuat. Pengoptimuman seperti ini dapat meningkatkan pulangan penyesuaian risiko strategi dengan ketara.
Peratusan perbezaan dinamikPeratusan bias pemicu pesanan keselamatan yang disesuaikan berdasarkan pergerakan turun naik pasaran, dengan bias yang lebih besar pada pasaran turun naik yang tinggi, dan bias yang lebih kecil pada pasaran turun naik yang rendah, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Mekanisme penangguhan separaMemperkenalkan mekanisme penangguhan berturut-turut yang membenarkan penarikan sebahagian daripada keuntungan apabila tahap keuntungan tertentu dicapai, dan bukannya penarikan sepenuhnya, untuk mengunci sebahagian daripada keuntungan sambil mengekalkan peluang pasaran.
Pengurusan risiko yang lebih baik: Tambahkan penutupan bersyarat berdasarkan masa atau harga, dan had kerugian maksimum, untuk mengelakkan kerugian berlebihan dalam keadaan pasaran yang melampau.
Pengurusan wang yang lebih baik: Melaksanakan algoritma pengurusan wang yang lebih kompleks, menyesuaikan saiz pesanan mengikut saiz akaun, turun naik pasaran dan keadaan kerugian semasa, dan bukannya hanya menggunakan pengganda tetap.
Penghapusan kawalan: Menambah mekanisme penyesuaian parameter penyesuaian sendiri berdasarkan analisis penarikan balik sejarah, secara automatik mengurangkan saiz pesanan atau meningkatkan peratusan penyimpangan apabila penarikan balik besar dikesan, untuk mengurangkan tekanan dana di pasaran turun.
Strategi pelaburan fiksyen yang bijak menyediakan kaedah yang sistematik untuk pengumpulan aset jangka panjang dengan menggabungkan kemasukan pesanan asas dan mekanisme pelunasan pesanan keselamatan bertingkat. Strategi ini sangat sesuai untuk pasaran yang mempunyai turun naik berkala, yang dapat memanfaatkan penyesuaian harga dengan berkesan untuk mengumpul lebih banyak aset dan mengunci keuntungan ketika bangkit.
Kelebihan utama strategi adalah mekanisme pengoptimuman kos rata-rata yang mudah dan kuat dan pengurusan sasaran keuntungan yang jelas, tetapi juga menghadapi risiko seperti pembiakan modal pasaran turun dan kekurangan mekanisme berhenti kerugian. Dengan mengintegrasikan penapis trend, penyesuaian parameter dinamik dan fungsi pengurusan risiko yang dipertingkatkan, strategi ini dapat dioptimumkan lebih lanjut untuk meningkatkan kesesuaian dan prestasinya dalam pelbagai keadaan pasaran.
Bagi pelabur yang mencari kaedah sistematik untuk mengumpul aset dan menguruskan risiko dalam pasaran yang bergelombang, strategi DCA yang dipertingkatkan ini menyediakan rangka kerja yang boleh dipercayai dan disesuaikan, yang sangat sesuai untuk jangka masa pelaburan jangka menengah dan panjang.
/*backtest
start: 2025-06-13 00:00:00
end: 2025-07-13 00:00:00
period: 15m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":200000}]
*/
//@version=5
strategy("Simple DCA Strategy", overlay=true)
// --- Strategy Inputs ---
baseOrderSize = input.float(10, "Base Order Size (USD/Quote Currency)", minval=0.01)
priceDeviation = input.float(1.0, "Price Deviation for Safety Order (%)", minval=0.1) / 100
maxSafetyOrders = input.int(5, "Maximum Safety Orders", minval=0)
takeProfit = input.float(1.0, "Take Profit (%)", minval=0.1) / 100
orderSizeMultiplier = input.float(1.5, "Order Size Multiplier", minval=1.0)
// --- Internal Variables ---
var float lastEntryPrice = na
var int safetyOrderCount = 0
var float totalQuantity = 0.0
var float totalCost = 0.0
var float averageEntryPrice = na
// --- Reset Logic for New Cycles ---
// Reset variables when no open positions (or when strategy is initialized)
if strategy.position_size == 0
lastEntryPrice := na
safetyOrderCount := 0
totalQuantity := 0.0
totalCost := 0.0
averageEntryPrice := na
// --- Entry Logic (Base Order and Safety Orders) ---
// Base Order
if strategy.position_size == 0
// Enter a long position with the base order size
strategy.entry("Base Order", strategy.long, qty=baseOrderSize / close) // Convert USD/Quote Currency to quantity
lastEntryPrice := close
totalQuantity := baseOrderSize / close
totalCost := baseOrderSize
averageEntryPrice := close
safetyOrderCount := 0
else
// Safety Order Logic
// Check if price has deviated enough and we haven't reached max safety orders
if low < lastEntryPrice * (1 - priceDeviation) and safetyOrderCount < maxSafetyOrders
currentOrderSize = baseOrderSize * math.pow(orderSizeMultiplier, safetyOrderCount + 1) // Calculate next order size
strategy.entry("SO " + str.tostring(safetyOrderCount + 1), strategy.long, qty=currentOrderSize / close)
// Update tracking variables
lastEntryPrice := close
totalQuantity := totalQuantity + (currentOrderSize / close)
totalCost := totalCost + currentOrderSize
averageEntryPrice := totalCost / totalQuantity // Recalculate average entry price
safetyOrderCount := safetyOrderCount + 1
// --- Exit Logic (Take Profit) ---
if strategy.position_size > 0
// Calculate the target price for take profit
targetPrice = averageEntryPrice * (1 + takeProfit)
// Close the position if the current price reaches the target price
if high >= targetPrice
strategy.close_all()
// --- Plotting for Visualization ---
plot(averageEntryPrice, "Average Entry Price", color=color.blue, style=plot.style_linebr)
plot(strategy.position_size > 0 ? averageEntryPrice * (1 + takeProfit) : na, "Take Profit Target", color=color.green, style=plot.style_linebr)
plot(strategy.position_size > 0 ? lastEntryPrice * (1 - priceDeviation) : na, "saftyorder", color=color.rgb(175, 91, 76), style=plot.style_linebr)