戦略をフォローするダブルSMAトレンド

作者: リン・ハーンチャオチャン開催日:2023年9月20日11時35分30秒
タグ:

概要

この戦略は,トレンド指向のためのスローSMAとエントリーシグナルのための高速SMAで,わずか2つのSMAラインを使用する.キャンドルスティック色の決定と組み合わせると,長および短信号を生成する.この戦略は,高値または低値での統合に適した中期トレンドに従う.

戦略の論理

価格チャネルのミッドラインとともに,高速と遅い2つのSMAラインが計算されます.高速線は5の期間があり,スローラインは20の期間があります.価格チャネルのミッドラインの上は上昇傾向とみなされ,スローラインの上を高速線を横切る上で長くなる機会が求められます.中間線下はダウントレンドで,スローラインの下を高速線を横切る上で短くなる機会が求められます.

また,キャンドルスタイルのボディカラーも組み込まれている.アップトレンドでは,速い線がスローラインを横切ったときにロングに行く前に,底部を見た後に,少なくとも2つの連続した赤いキャンドルスタイルの必要があり,ダウントレンドでは,速い線がスローラインを横切ったときにショートに行く前に,トップを見た後に少なくとも2つの連続した緑色のキャンドルが必要である.

利点分析

2つのSMAラインと価格チャネルは,誤ったブレイクを避けるためにトレンド方向を決定するのに役立ちます.キャンドルスタックカラーフィルターは誤ったシグナルをさらに排除します.ヘッジのために長短のシグナルの両方が存在します.この戦略は中期トレンドを効果的に追跡します.

調整可能なパラメータにより,長/短条件を柔軟に設定できます.バックテストは,高値と低値の両方で統合で適正な収益を示しています.

リスク分析

SMA線への過度な依存は,レンジング中に過剰な偽信号を生む可能性がある.価格要因は考慮され,ボリュムは無視される.

SMA期間を調整したり,他の技術指標を組み込むことがシグナルをフィルタリングすることができます.ボリューム指標はまた,追加の洞察を提供することもできます. ポジションサイズも,市場の状況に基づいて最適化できます.

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

  1. 最適なパラメータを見つけるために 異なる高速および遅い SMA 組み合わせをテストします

  2. 音量および信号検証のための他の指標を追加する.

  3. 他の技術指標を組み込み,総合戦略を形成する.

  4. 資本管理を最適化するために 動的ポジションサイズを設定します

  5. 価格動向と転換点を予測するために 機械学習を適用します

  6. ストップ・ロスの戦略を最適化して 損失を制限する

概要

トレンド決定のためのダブルSMAシステムは論理的に明確で一般的に使用されています. しかし,移動平均値だけに過剰依存することは,誤った信号を生成し,強化のために他の指標を必要とします. より定量的かつ定量的な検証により,戦略はより堅牢になります. 全体的に,それはシンプルで信頼できるトレンドフォローテンプレートを提供します.


/*backtest
start: 2023-08-20 00:00:00
end: 2023-09-19 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Noro's Trend SMA Strategy v1.4", shorttitle = "Trend SMA str 1.4", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

needlong = input(true, "long")
needshort = input(true, "short")
usefastsma = input(true, "Use fast SMA")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast SMA Period")
slowlen = input(20, defval = 20, minval = 2, maxval = 200, title = "slow SMA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")

fastsma = ema(close, fastlen)
slowsma = ema(close, slowlen)

//PriceChannel
src = ohlc4
lasthigh = highest(src, slowlen)
lastlow = lowest(src, slowlen)
center = (lasthigh + lastlow) / 2

trend = low > center ? 1 : high < center ? -1 : trend[1]

bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0

up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0

colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast SMA")
plot(center, color = blue, title = "Price Channel")

longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

もっと