
Strategi ini adalah strategi crossover rata-rata bergerak sederhana (SMA) yang berlaku untuk pasar cryptocurrency. Strategi ini menggunakan tiga set SMA cepat, menengah, dan lambat untuk mengidentifikasi sinyal masuk dan keluar yang potensial. Ketika SMA cepat naik melewati SMA menengah, menghasilkan sinyal beli; Ketika SMA cepat turun melewati SMA menengah, menghasilkan sinyal jual.
Strategi memungkinkan trader untuk mengatur parameter-parameter penting berikut:
SMA cepat, SMA menengah, dan SMA lambat dihitung berdasarkan panjang SMA yang ditetapkan pengguna.
Ketika SMA cepat di atas melewati SMA menengah, menghasilkan sinyal beli; ketika SMA cepat di bawah melewati SMA menengah, menghasilkan sinyal jual.
Strategi ini menggabungkan dana akun dan rasio risiko yang ditanggung untuk setiap transaksi, untuk menghitung modal nominal untuk setiap transaksi. Kemudian menggabungkan ATR untuk menghitung margin stop loss, dan akhirnya menentukan posisi spesifik untuk setiap transaksi.
Hal ini dapat dioptimalkan dengan cara memendekkan siklus SMA, atau dengan cara lain.
Strategi ini mengintegrasikan beberapa fungsi penilaian silang SMA, manajemen risiko, dan optimasi posisi, merupakan strategi pelacakan tren yang cocok untuk pasar crypto. Pedagang dapat menyesuaikan parameter dan menerapkan optimasi sesuai dengan gaya perdagangan mereka sendiri, lingkungan pasar, dan faktor lainnya.
/*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")