
Strategi ini adalah strategi simpulan bergerak rata-rata (SMA) yang digunakan untuk pasaran cryptocurrency. Ia menggunakan tiga set SMA cepat, sederhana dan perlahan untuk mengenal pasti isyarat masuk dan keluar yang berpotensi. Apabila SMA cepat naik melalui SMA sederhana, ia menghasilkan isyarat beli; apabila SMA cepat turun melalui SMA sederhana, ia menghasilkan isyarat jual.
Strategi membolehkan peniaga menetapkan parameter utama berikut:
Berdasarkan panjang SMA yang ditetapkan oleh pengguna, SMA pantas, SMA sederhana dan SMA perlahan dikira.
Apabila SMA cepat di atas menembusi SMA sederhana, ia menghasilkan isyarat beli; apabila SMA cepat di bawah menembusi SMA sederhana, ia menghasilkan isyarat jual.
Strategi ini menggabungkan dana akaun dan nisbah risiko yang ditanggung oleh setiap urus niaga, untuk mengira modal nominal setiap urus niaga. Kemudian menggabungkan ATR untuk mengira marjin stop loss, akhirnya menentukan kedudukan khusus untuk setiap urus niaga.
Ia boleh dioptimumkan dengan cara memendekkan kitaran SMA dengan betul dan membantu penunjuk lain.
Strategi ini mengintegrasikan pelbagai fungsi penilaian silang SMA, pengurusan risiko dan pengoptimuman kedudukan, merupakan strategi pengesanan trend yang sesuai untuk pasaran kripto. Pedagang boleh menyesuaikan parameter dan melaksanakan pengoptimuman mengikut gaya perdagangan dan persekitaran pasaran mereka sendiri.
/*backtest
start: 2024-01-05 00:00:00
end: 2024-02-04 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Onchain Edge Trend SMA Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Configuration Parameters
priceSource = input(close, title="Price Source")
includeIncompleteBars = input(true, title="Consider Incomplete Bars")
maForecastMethod = input(defval="flat", options=["flat", "linreg"], title="Moving Average Prediction Method")
linearRegressionLength = input(3, title="Linear Regression Length")
fastMALength = input(7, title="Fast Moving Average Length")
mediumMALength = input(30, title="Medium Moving Average Length")
slowMALength = input(50, title="Slow Moving Average Length")
tradingCapital = input(100000, title="Trading Capital")
tradeRisk = input(1, title="Trade Risk (%)")
// Calculation of Moving Averages
calculateMA(source, period) => sma(source, period)
predictMA(source, forecastLength, regressionLength) =>
maForecastMethod == "flat" ? source : linreg(source, regressionLength, forecastLength)
offset = includeIncompleteBars ? 0 : 1
actualSource = priceSource[offset]
fastMA = calculateMA(actualSource, fastMALength)
mediumMA = calculateMA(actualSource, mediumMALength)
slowMA = calculateMA(actualSource, slowMALength)
// Trading Logic
enterLong = crossover(fastMA, mediumMA)
exitLong = crossunder(fastMA, mediumMA)
// Risk and Position Sizing
riskCapital = tradingCapital * tradeRisk / 100
lossThreshold = atr(14) * 2
tradeSize = riskCapital / lossThreshold
if (enterLong)
strategy.entry("Enter Long", strategy.long, qty=tradeSize)
if (exitLong)
strategy.close("Enter Long")
// Display Moving Averages
plot(fastMA, color=color.blue, linewidth=2, title="Fast Moving Average")
plot(mediumMA, color=color.purple, linewidth=2, title="Medium Moving Average")
plot(slowMA, color=color.red, linewidth=2, title="Slow Moving Average")