資源の読み込みに... 荷物...

長期トレンドSMAクロスオーバー量的な戦略

作者: リン・ハーンチャオチャン開催日:2025-01-06 17:01:08
タグ:SMAエイマ

img

概要

この戦略は,多期間のシンプル・ムービング・アベア (SMA) クロスオーバー・シグナルに基づいた定量的な取引システムである.主に長期の上昇傾向内の引き下げ機会を特定する.この戦略は,5つの異なる期間の (5,10,20,60日および120日) SMAを使用して,相対的なポジションとクロスオーバー・シグナルを通じて市場動向と取引機会を決定する.

戦略の原則

基本的な論理にはいくつかの重要な要素が含まれます.

  1. SMA20とSMA60の相対位置による長期トレンドの特定,SMA20がSMA60を超えると上昇傾向が確認される.
  2. 短期のSMA5が引き下げ後SMA20を超えると買い信号が発信され,上向きのリバウンドを示します.
  3. SMA20がSMA5を超えると出口信号が発信され,短期的な勢力の弱まりを示唆する.
  4. この戦略には,バックテスト期間を制限するタイムフィルター機能が含まれ,柔軟性を高めます.

戦略 の 利点

  1. わかりやすく実行しやすい シンプルな論理で 複雑な計算を避けます
  2. 多期移動平均値を用いて効果的ノイズフィルタリングにより,信号の信頼性を向上させる.
  3. トレンド市場における引き下げ機会に焦点を当て,トレンド追跡の基本原則に準拠する.
  4. EMA の代わりに SMA を使えば,価格感受性が低下し,誤った信号が発信される.
  5. 明確なエントリー・アウトリーグは実行とリスク管理を容易にする.

戦略リスク

  1. 移動平均システムにおける固有の遅延は,不適正なエントリーと出口タイミングにつながる可能性があります.
  2. 市場差で頻繁にクロスオーバーが起きると 過剰な誤った信号が生じる可能性があります.
  3. 波動性フィルタリングメカニズムの欠如により,戦略は波動性の高い時期において,有意な引き上げリスクにさらされる.
  4. 音量確認がなければ信号の信頼性が損なわれる可能性があります.
  5. 固定移動平均のパラメータは全ての市場条件に合致しない可能性があります.

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

  1. 波動性の高い期間に取引を避けるため,波動性フィルタリングのためのATR指標を導入する.
  2. 信号の信頼性を高めるため,音量確認メカニズムを組み込む.
  3. 適応可能な移動平均期を 開発し,異なる市場環境に より適しています.
  4. ADX インディケーターなどのトレンド強度フィルターを追加し,強いトレンドでの取引のみを保証します.
  5. リスク管理の改善のために,ストップ・ロスのメカニズム,トラッキング・ストップを含むものを強化する.

概要

この戦略は,複数の期間のSMAの協調的な使用を通じて,長期的な上昇傾向における引き下げ機会を捕獲することに焦点を当てた取引システムを構築する.その設計は実用的で直接的で,理解し実行可能性が良好である.戦略の堅牢性と信頼性は,変動フィルタリング,ボリューム確認,および他の最適化措置の導入によってさらに強化することができる.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Long-Term Growing Stock Strategy", overlay=true)
// Date Range
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2014"),title="Start Date", group="Backtest Time Period",tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " +"zone of the chart or of your computer.")
backtestEndDate = input(timestamp("31 Dec 2024"), title="End Date", group="Backtest Time Period")
// STEP 2. See if current bar falls inside the date range
inTradeWindow = true


// Calculate EMAs
// ema20 = ta.ema(close, ema20_length)
// ema60 = ta.ema(close, ema60_length)
// ema120 = ta.ema(close, ema120_length)
sma5 = ta.sma(close, 5)
sma10 = ta.sma(close, 10)
sma20 = ta.sma(close, 20)
sma60 = ta.sma(close, 60)
sma120 = ta.sma(close, 120)

// Long-term growth condition: EMA 20 > EMA 60 > EMA 120
longTermGrowth = sma20 > sma60
//  and ema60 > ema120

// Entry condition: Stock closes below EMA 20 and then rises back above EMA 10

// entryCondition = ta.crossover(close, ema20) or (close[1] < ema20[1] and close > ema20)
entryCondition =  sma5[1] <= sma20[1] and sma5 > sma20
// ta.crossover(sma5, sma20)

// Exit condition: EMA 20 drops below EMA 60
// exitCondition = ema5 < ema60 or (year == 2024 and month == 12 and dayofmonth == 30)
exitCondition = ta.crossover(sma20, sma5)

// Execute trades
if entryCondition and inTradeWindow
    strategy.entry("Long Entry", strategy.long)

if exitCondition and inTradeWindow
    strategy.close("Long Entry")
// plotchar(true, char="sma5: " + str.tostring(sma5))
// plotchar(true, char="sma5: " + sma20)
// label.new(x=bar_index, y=high + 10, text="SMA 5: " + str.tostring(sma5), color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.small)
// label.new(x=bar_index, y=low, text="SMA 20: " + str.tostring(sma20), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)


// x = time + (time - time[1]) * offset_x

//     var label lab = na
//     label.delete(lab)
//     lab := label.new(x=x, y=0, text=txt, xloc=xloc.bar_time, yloc=yloc.belowbar, color=color.red, textcolor=color.black, size=size.normal, style=label.style_label_up)
//     label.set_x(lab, x)



// Plot EMAs for visualization
// plot(ema20, color=color.red, title="EMA 20")
// plot(ema60, color=color.green, title="EMA 60")
// plot(ema120, color=color.blue, title="EMA 120")

関連性

もっと