
Strategi skrip Pine ini mewujudkan strategi kos purata harian pada platform TradingView, dan pada masa yang sama menggabungkan isyarat sentuh indikator EMA untuk menentukan titik masuk. Strategi ini mengikuti undang-undang pelaburan kos purata, membeli setiap hari dengan jumlah tetap, untuk menyebarkan risiko. Pada masa yang sama, dengan isyarat sentuh EMA untuk membimbing masa masuk tertentu.
Strategi ini mempunyai beberapa ciri utama:
Undang-undang pelaburan kos purata harian
Indeks EMA menentukan titik masuk
Mekanisme Hentikan Kerosakan Dinamik
Had kedudukan maksimum
Khususnya, strategi ini melabur dalam jumlah tetap setiap hari, dengan mengira jumlah saham yang boleh dibeli berdasarkan harga penutupan pada hari itu. Atas dasar ini, jika harga penutupan pada hari itu melintasi mana-mana EMA seperti hari ke-5, ke-10 dan ke-20, isyarat pembelian akan dicetuskan.
Strategi ini mempunyai beberapa kelebihan:
Penyebaran pelaburan, mengurangkan risiko pelaburan tunggal
EMA menggabungkan, mengelakkan penyesuaian jangka pendek
Hentikan Kerosakan Dinamis
Had Had Kedudukan Maksimum, Kawalan Risiko
EMA yang intuitif menunjukkan bahawa ia adalah mudah untuk menilai
Ketinggian disesuaikan
Strategi ini juga mempunyai risiko yang perlu diperhatikan:
Risiko Sistematik yang Tidak Boleh Dihindari
Risiko dengan jumlah pelaburan tetap
EMA tidak dapat bertindak balas terhadap situasi yang melampau
Had kedudukan juga mengehadkan ruang untuk keuntungan
Pengaturan titik henti memerlukan pengalaman dan kemahiran
Strategi ini mempunyai ruang untuk pengoptimuman yang lebih lanjut:
Peningkatan penyesuaian dinamik dalam jumlah harian
Menerusi lebih banyak kriteria kemasukan
Indeks purata bergerak
Dinamika penyesuaian kedudukan maksimum
Menggunakan kemusnahan beransur-ansur
Secara keseluruhannya, strategi kos purata harian ini menggabungkan isyarat sentuhan EMA, mewujudkan idea untuk pelaburan berturut-turut dalam jangka masa panjang. Berbanding dengan pembukaan pos tunggal, risiko dapat disebarkan, mengelakkan perayaan pada titik tertinggi. Keikutsertaan EMA juga mengelakkan risiko yang dibawa oleh penyesuaian jangka pendek, mengambil langkah berhenti untuk mengawal kerugian maksimum.
/*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")