Strategi skrip Pine ini melaksanakan pendekatan purata kos dolar harian pada platform TradingView, menggabungkan isyarat sentuhan EMA untuk menentukan titik masuk. Ia mengikuti metodologi purata kos dolar untuk membuat pelaburan jumlah tetap setiap hari, menyebarkan pembelian dari masa ke masa untuk mengurangkan risiko.
Strategi ini mempunyai ciri utama berikut:
Purata Kos Dolar Harian
EMA untuk isyarat kemasukan
Penghentian Kehilangan Dinamik
Batas Jumlah Dagangan
Secara khusus, setiap hari strategi melabur jumlah tetap dan mengira saham yang akan dibeli berdasarkan harga penutupan. Jika harga penutupan melintasi di atas mana-mana EMA 5-, 10-, 20-hari dan lain-lain, isyarat beli dicetuskan. Sebaik sahaja jumlah perdagangan terkumpul mencapai had 300, tidak ada pembelian lagi yang akan berlaku. Di samping itu, jika harga ditutup di bawah SMA 20-hari atau mencapai tarikh keluar yang telah ditetapkan, semua kedudukan dibersihkan. skrip juga memetakan EMA pada carta harga untuk analisis visual.
Kelebihan strategi ini termasuk:
Kepelbagaian Risiko
Gabungan EMA Mengelakkan Pullback
Pengendalian Peletakan Hentian Dinamik
Kawalan had perdagangan Risiko
Visualisasi EMA intuitif
Sangat Sesuai
Strategi ini juga membawa beberapa risiko untuk diperhatikan:
Risiko Sistemik Masih Ada
Jumlah Pelaburan Tetap
EMA tidak boleh bertindak balas terhadap pergerakan melampau
Batas Perdagangan Potensi Keuntungan
Penempatan Stop Loss memerlukan penjagaan
Pengoptimuman lanjut:
Jumlah pelaburan harian dinamik
Isyarat kemasukan tambahan
Purata Bergerak Eksponen
Had kedudukan dinamik
Penghentian Kerugian
Ringkasnya, strategi DCA harian yang digabungkan EMA ini merealisasikan konsep pelaburan berkala jangka panjang, menyebarkan risiko di beberapa entri kecil berbanding pembelian sekali pakai yang besar. EMA membantu mengelakkan risiko menarik balik jangka pendek hingga tahap tertentu, sementara stop loss mengawal kerugian maksimum. Namun, risiko angsa hitam dan batasan saiz pelaburan tetap perlu diingat. Aspek-aspek ini memberikan arah peningkatan masa depan melalui penyesuaian parameter dan kombinasi penunjuk untuk membina strategi kuantiti yang cekap namun stabil.
/*backtest start: 2024-01-08 00:00:00 end: 2024-01-15 00:00:00 period: 3m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Daily DCA Strategy with Touching EMAs", overlay=true, pyramiding=10000) // Customizable Parameters daily_investment = input(50000, title="Daily Investment") start_year = input(2022, title="Start Year") start_month = input(1, title="Start Month") start_day = input(1, title="Start Day") end_year = input(2023, title="End Year") end_month = input(12, title="End Month") end_day = input(1, title="End Day") trade_count_limit = input(10000, title="Pyramiding Limit") enable_sell = input(true, title="Enable Sell") start_date = timestamp(start_year, start_month, start_day) var int trade_count = 0 // Calculate the number of shares to buy based on the current closing price shares_to_buy = daily_investment / close // Check if a new day has started and after the start date isNewDay = dayofmonth != dayofmonth[1] and time >= start_date // Buy conditions based on EMA crossovers ema5_cross_above = crossover(close, ema(close, 5)) ema10_cross_above = crossover(close, ema(close, 10)) ema20_cross_above = crossover(close, ema(close, 20)) ema50_cross_above = crossover(close, ema(close, 50)) ema100_cross_above = crossover(close, ema(close, 100)) ema200_cross_above = crossover(close, ema(close, 200)) if isNewDay and (ema5_cross_above or ema10_cross_above or ema20_cross_above or ema50_cross_above or ema100_cross_above or ema200_cross_above) and trade_count < trade_count_limit strategy.entry("Buy", strategy.long, qty=shares_to_buy) trade_count := trade_count + 1 // Dynamic sell conditions (optional) sell_condition = true if enable_sell and sell_condition strategy.close_all() // EMA Ribbon for visualization plot(ema(close, 5), color=color.red, title="EMA 5") plot(ema(close, 10), color=color.orange, title="EMA 10") plot(ema(close, 20), color=color.yellow, title="EMA 20") plot(ema(close, 50), color=color.green, title="EMA 50") plot(ema(close, 100), color=color.blue, title="EMA 100") plot(ema(close, 200), color=color.purple, title="EMA 200")