この戦略は,二重移動平均クロスオーバーシグナルに基づいた定量的な取引戦略である.この戦略は,2つの移動平均を採用しており,一つはメイン信号ライン,もう一つはスムージング信号ラインである.スムージング信号ラインで価格クロスオーバーをモニタリングすることによって取引信号を生成し,市場のトレンドを把握し,モメントを追跡することを可能にします.この戦略の核心強みは,シンプルで効果的な信号生成メカニズムと柔軟なパラメータ構成オプションにあります.
この戦略は,移動平均計算の2つのレベルを利用している.まずは基本的な移動平均 (デフォルト期9),次に二次的なスムージングプロセス (デフォルト期5). 戦略は,単純な移動平均 (SMA),指数的な移動平均 (EMA),スムージングムービング平均 (SMMA),重量移動平均 (WMA),ボリューム重量移動平均 (VWMA) など様々な移動平均計算方法を提供しています. 閉値がスムージング信号線を超えるとロング信号が生成され,閉値がその下を横切るとショート信号が生成されます.
この戦略は,二層移動平均設計を通じてシンプルさを維持しながら安定性を向上させる古典的なトレンドフォロー戦略の改良版である.この戦略は,パラメータ最適化と機能拡張を通じて異なる市場環境に適応できる良好なスケーラビリティと柔軟性を提供している.しかし,ユーザーは取引コスト制御とリスク管理に注意を払う必要がある.そして,ライブ取引の前に徹底的なバックテストを行うことが推奨される.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-25 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average 1.0 Strategy", overlay=true) // Input for Moving Average Length len = input.int(9, minval=1, title="Length") src = input(close, title="Source") offset = input.int(title="Offset", defval=0, minval=-500, maxval=500) // Calculate the Moving Average out = ta.sma(src, len) // Plot the Moving Average plot(out, color=color.blue, title="MA", offset=offset) // Function to choose the type of moving average ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) // Input for Smoothing Method and Length typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing") smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing") // Calculate the Smoothing Line smoothingLine = ma(out, smoothingLength, typeMA) // Plot the Smoothing Line plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset) // Strategy Logic if (ta.crossover(close, smoothingLine)) strategy.entry("Buy", strategy.long) if (ta.crossunder(close, smoothingLine)) strategy.entry("Sell", strategy.short)