動的SMAクロストレンド戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-05 12:14:12
タグ:

img

概要

この戦略は,暗号通貨市場に適したシンプルな移動平均 (SMA) クロスオーバー戦略である. 潜在的なエントリーと出口信号を識別するために,高速,中間,遅いSMAを使用する.高速SMAが中間SMAを横切ると,購入信号が生成される.高速SMAが中間SMAを横切ると,販売信号が生成される.

戦略の論理

パラメータ設定

戦略は,トレーダーに以下のキーパラメータを設定することを可能にします.

  • 価格源: 閉店価格または他の価格
  • 欠陥バーを考慮するか否か
  • SMA予測方法:シフト予測または線形回帰予測
  • スピード SMA 長さ: デフォルト 7
  • 中間SMA長さ:デフォルト30
  • スロー SMA 長さ: デフォルト 50
  • 口座の資金
  • 取引に対するリスクの割合

SMA 計算

高速SMA,中間SMA,遅いSMAは,ユーザが設定したSMA長度に基づいて計算されます.

トレーディング シグナル

速いSMAが中程度のSMAを横切ると,買い信号が生成される.速いSMAが中程度のSMAを横切ると,売り信号が生成される.

リスクとポジションのサイズ

この戦略は,取引先の名額本金と取引先の可許リスクパーセントをベースに計算し,その後ATRを使用してストップロスの範囲を計算し,最終的に各取引先のポジションサイズを決定します.

利点分析

  • 複数のSMAを用い,より確実な傾向を特定する.
  • 適性強化のためのオプションのSMA予測方法
  • シンプルで明確な取引信号
  • 科学的リスクとポジション管理を含みます

リスク分析

  • SMA の遅滞性 は,価格逆転点を逃す可能性があります.
  • 基本的要素を組み合わせることなく,技術的指標のみを考慮する.
  • 突発的な出来事の影響は考慮されません

SMA期間を短縮したり,他の指標を追加したりして最適化することができます.

オプティマイゼーションの方向性

  • 偽信号をフィルタリングするために他の指標を追加
  • 基本分析を組み込む
  • 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")


もっと