Strategi ini adalah strategi crossover purata bergerak (SMA) yang mudah sesuai untuk pasaran mata wang kripto. Ia menggunakan SMA pantas, sederhana dan perlahan untuk mengenal pasti isyarat masuk dan keluar yang berpotensi. Apabila SMA pantas melintasi SMA sederhana, isyarat beli dihasilkan. Apabila SMA pantas melintasi di bawah SMA sederhana, isyarat jual dihasilkan.
Strategi ini membolehkan peniaga menetapkan parameter utama berikut:
SMA pantas, SMA sederhana dan SMA perlahan dikira berdasarkan panjang SMA yang ditetapkan oleh pengguna.
Apabila SMA pantas melintasi SMA sederhana, isyarat beli dihasilkan. Apabila SMA pantas melintasi di bawah SMA sederhana, isyarat jual dihasilkan.
Strategi ini mengira pokok nominal setiap perdagangan berdasarkan dana akaun dan peratusan risiko yang boleh diterima setiap perdagangan. ia kemudian menggunakan ATR untuk mengira julat stop loss dan akhirnya menentukan saiz kedudukan untuk setiap perdagangan.
Boleh mengoptimumkan dengan memendekkan tempoh SMA, menambah penunjuk lain dll.
Strategi ini mengintegrasikan peraturan silang SMA, pengurusan risiko dan ukuran kedudukan untuk sistem trend berikut yang kukuh yang sesuai untuk pasaran kripto.
/*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")