この戦略は,暗号通貨市場に適したシンプルな移動平均 (SMA) クロスオーバー戦略である. 潜在的なエントリーと出口信号を識別するために,高速,中間,遅いSMAを使用する.高速SMAが中間SMAを横切ると,購入信号が生成される.高速SMAが中間SMAを横切ると,販売信号が生成される.
戦略は,トレーダーに以下のキーパラメータを設定することを可能にします.
高速SMA,中間SMA,遅いSMAは,ユーザが設定したSMA長度に基づいて計算されます.
速いSMAが中程度のSMAを横切ると,買い信号が生成される.速いSMAが中程度のSMAを横切ると,売り信号が生成される.
この戦略は,取引先の名額本金と取引先の可許リスクパーセントをベースに計算し,その後ATRを使用してストップロスの範囲を計算し,最終的に各取引先のポジションサイズを決定します.
SMA期間を短縮したり,他の指標を追加したりして最適化することができます.
この戦略は,SMAクロスオーバールール,リスク管理,ポジションサイジングを統合し,暗号市場に適した強力なトレンドフォローシステムを提供します.トレーダーは,取引スタイル,市場条件などのパラメータを調整してカスタマイズし最適化することができます.
/*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")