Strategi ini adalah strategi crossover rata-rata bergerak (SMA) sederhana yang cocok untuk pasar cryptocurrency. Ini menggunakan SMA cepat, menengah dan lambat untuk mengidentifikasi sinyal masuk dan keluar potensial. Ketika SMA cepat melintasi SMA menengah, sinyal beli dihasilkan. Ketika SMA cepat melintasi SMA menengah, sinyal jual dihasilkan.
Strategi ini memungkinkan pedagang untuk menetapkan parameter kunci berikut:
SMA cepat, SMA menengah dan SMA lambat dihitung berdasarkan panjang SMA yang ditetapkan oleh pengguna.
Ketika SMA cepat melintasi SMA menengah, sinyal beli dihasilkan. Ketika SMA cepat melintasi SMA menengah, sinyal jual dihasilkan.
Strategi ini menghitung modal nominal per perdagangan berdasarkan dana akun dan persentase risiko yang dapat diterima per perdagangan. kemudian menggunakan ATR untuk menghitung rentang stop loss dan akhirnya menentukan ukuran posisi untuk setiap perdagangan.
Dapat mengoptimalkan dengan memperpendek periode SMA, menambahkan indikator lain dll.
Strategi ini mengintegrasikan aturan crossover SMA, manajemen risiko dan ukuran posisi untuk sistem tren berikut yang kuat yang cocok untuk pasar crypto. Pedagang dapat mengubah parameter seperti gaya perdagangan, kondisi pasar dll untuk menyesuaikan dan mengoptimalkan.
/*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")