
Die Strategie ist eine einfache Moving Average (SMA) Crossover-Strategie für den Kryptowährungsmarkt. Sie nutzt drei Gruppen von SMAs, Fast, Medium und Slow, um potenzielle Ein- und Ausstiegssignale zu erkennen. Wenn ein schneller SMA einen mittleren SMA durchbricht, erzeugt dies ein Kaufsignal. Wenn ein schneller SMA einen mittleren SMA durchbricht, erzeugt dies ein Verkaufsignal.
Die Strategie erlaubt den Händlern, die folgenden Schlüsselparameter einzustellen:
Die Schnell-SMA, die Mittelschnell-SMA und die Langzeit-SMA werden je nach der vom Benutzer eingestellten SMA berechnet.
Wenn der schnelle SMA über den mittleren SMA geht, erzeugt er ein Kaufsignal; wenn der schnelle SMA unter dem mittleren SMA geht, erzeugt er ein Verkaufssignal.
Die Strategie kombiniert das Konto-Fonds mit dem Risiko-Ratio für jeden Handel und berechnet die Nominalbasis für jeden Handel. Die Strategie kombiniert das ATR mit der Stop-Loss-Marge, um die spezifische Position für jeden Handel zu bestimmen.
Dies kann durch eine angemessene Verkürzung der SMA-Zyklen und die Unterstützung anderer Indikatoren optimiert werden.
Die Strategie integriert die Funktionen der SMA-Kreuzentscheidung, des Risikomanagements und der Positionsoptimierung und ist eine Trendverfolgungsstrategie, die für den Krypto-Markt geeignet ist. Händler können die Parameter anpassen und Optimierungen implementieren, die auf ihre eigenen Handelsstile und Marktumgebungen basieren.
/*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")