この戦略は,平均実際の波動範囲ATRを計算して価格と比較し,価格トレンドの方向を判断し,移動平均と組み合わせて補助判断する.他のトレンド判断方法と比較して,価格変化のトレンドをより早く捕捉し,小回転する.
この戦略は,主に以下のステップで価格の動向を判断します.
最近のN日の平均真波動範囲ATRを計算する.ここでは,Wilderの定義によるATR計算方法が採用され,現在の市場波動状況をよりよく反映することができる.
ATRとatkの調整係数に基づいて上線と下線を計算する。上線=価格−(atk×ATR);下線=価格+(atk×ATR)。その中でatkは通常2-3の間で設定される。
価格と上下軌道線との関係を比較し,トレンドの方向を判断する。価格上上軌道線は看板信号;価格下下軌道線は下落信号。
取引信号が発生すると,オーバーまたは空調する.ここで,移動平均と組み合わせて信号の質を判断する.
リスクコントロールのストップ・ロズ戦略に追加する
行動の色で戦略状態をマークし,判断を補助する.
この戦略は,ATRの優位性を最大限に活用し,価格変化のトレンドを迅速に捉え,低引き下げ操作を実現し,比較的典型的なトレンド追跡戦略である.
この戦略の利点は以下の通りです.
価格の変化に迅速に反応する.ATRは最新の市場状況に迅速に反応し,トレンドの変化を間に合うように役立ちます.
撤回は小さい。上下軌道線には一定のバッファローンがあり,止損が打ち破られる確率を減らして,撤回を低減する。
取引信号は明瞭である。整理範囲の突破は高品質の取引信号であり,明瞭に多空方向を行うことができる。
高度なカスタマイズ性.ATR周期と倍数は,異なる市場環境に適応するために調整できます.
ビジュアル化が強い。 グラフィックツールを採用して戦略状態を表示し,操作は直感的である。
簡単に最適化できる. モバイルストップ,フィルターなどのモジュールが追加され,さらに最適化できる.
総じて,この戦略は,小回転,優勢の突出,トレンド型の動きを追跡するのに適しており,非常に実用的な取引戦略である.
この戦略にはリスクもあります.
トレンド判断の誤差のリスク. 価格の変動時に誤信号が発生する可能性があります.
退出点選択のリスク. 合理的な止損点を選択して,早退を防ぐ必要がある.
パラメータ最適化のリスク.ATR周期と倍数は,繰り返しテスト最適化が必要で,不適切な設定は,戦略のパフォーマンスに影響を与える.
取引頻度が高いリスク. 市場が急激に変動する時には取引頻度が高すぎる可能性があります.
効果の弱さ 利己的リスク 傾向が不明な市場では,効果が弱くなる可能性がある
リアルディスク調整リスク。 リアルディスク操作では,滑り点,手数料などに合わせて調整最適化が必要。
システム上のリスク: システム全体のリスク管理を考慮し,単独で戦略に依存することはできません.
リスクに対して,以下のような対策を講じます.
ATRのパラメータを最適化して判断の正確性を向上させる.
複数のタイムサイクル分析と組み合わせて,トレンドを決定する.
移動式ストップを利用して利潤を固定し,撤回を減らす.
フィルタリング条件を用いて取引頻度を制御する.
異なる市場に対応する戦略のパラメータを調整する.
試作の種類を試し,最適の応用例を模索する
取引のリスクは,現金市場において,完全に考慮されます.
この戦略は以下の点で最適化できます.
平均線などの指標を導入してフィルタリングを行い,誤信号を減らす.MACD,KDJなどの指標の補助判断を添えることができる.
ATRパラメータを最適化する.異なるATR周期パラメータをテストして最適な値を見つける.
倍数パラメータを最適化します.異なる倍数パラメータをテストして,信号の発生感度を決定できます.
モバイル・ストップ・戦略に参加する.ATRまたは波動率に基づいてダイナミック・ストップを行うことで,撤収をさらに低減することができる.
複数の時間枠分析と組み合わせて.より高い時間周期指標判断を加え,偶発的な偽信号をフィルターすることができます.
機械学習による信号判断の強化.RNNなどのモデル訓練による買賣信号モデルの判断.
品種特性に合わせてパラメータを調整する。例えば,波動株のATR周期を適切に縮小することができる。
入場ポイントの最適化 突破と引き戻しなどの方法により,よりよい入場ポイントを見つけることができます.
結合量能指標.交代量などの補助判断信号強度.
トレンドエネルギー指数などによるストップポイントの決定.
この超トレンド戦略は,全体的に非常に実用的で,迅速な応答,小回転,最適化などの優位性があり,典型的なトレンド追跡戦略である.しかし,判断誤りやパラメータ最適化などのリスクにも注意し,実盤で全面的に考慮する必要があります.さらなる最適化により,戦略をより安定させ,より多くの市場でより良い収益を得ることができます.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-10-06 00:00:00
period: 6h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © KivancOzbilgic
//@version=4
strategy("SuperTrend STRATEGY", overlay=true)
Periods = input(title="ATR Period", type=input.integer, defval=10)
src = input(hl2, title="Source")
Multiplier = input(title="ATR Multiplier", type=input.float, step=0.1, defval=3.0)
changeATR= input(title="Change ATR Calculation Method ?", type=input.bool, defval=true)
showsignals = input(title="Show Buy/Sell Signals ?", type=input.bool, defval=false)
highlighting = input(title="Highlighter On/Off ?", type=input.bool, defval=true)
barcoloring = input(title="Bar Coloring On/Off ?", type=input.bool, defval=true)
atr2 = sma(tr, Periods)
atr= changeATR ? atr(Periods) : atr2
up=src-(Multiplier*atr)
up1 = nz(up[1],up)
up := close[1] > up1 ? max(up,up1) : up
dn=src+(Multiplier*atr)
dn1 = nz(dn[1], dn)
dn := close[1] < dn1 ? min(dn, dn1) : dn
trend = 1
trend := nz(trend[1], trend)
trend := trend == -1 and close > dn1 ? 1 : trend == 1 and close < up1 ? -1 : trend
upPlot = plot(trend == 1 ? up : na, title="Up Trend", style=plot.style_linebr, linewidth=2, color=color.green)
buySignal = trend == 1 and trend[1] == -1
plotshape(buySignal ? up : na, title="UpTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.green, transp=0)
plotshape(buySignal and showsignals ? up : na, title="Buy", text="Buy", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.green, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_linebr, linewidth=2, color=color.red)
sellSignal = trend == -1 and trend[1] == 1
plotshape(sellSignal ? dn : na, title="DownTrend Begins", location=location.absolute, style=shape.circle, size=size.tiny, color=color.red, transp=0)
plotshape(sellSignal and showsignals ? dn : na, title="Sell", text="Sell", location=location.absolute, style=shape.labeldown, size=size.tiny, color=color.red, textcolor=color.white, transp=0)
mPlot = plot(ohlc4, title="", style=plot.style_circles, linewidth=0)
longFillColor = highlighting ? (trend == 1 ? color.green : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.red : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
FromMonth = input(defval = 9, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2018, title = "From Year", minval = 999)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 999)
start = timestamp(FromYear, FromMonth, FromDay, 00, 00)
finish = timestamp(ToYear, ToMonth, ToDay, 23, 59)
window() => true
longCondition = buySignal
if (longCondition)
strategy.entry("BUY", strategy.long, when = window())
shortCondition = sellSignal
if (shortCondition)
strategy.entry("SELL", strategy.short, when = window())
buy1= barssince(buySignal)
sell1 = barssince(sellSignal)
color1 = buy1[1] < sell1[1] ? color.green : buy1[1] > sell1[1] ? color.red : na
barcolor(barcoloring ? color1 : na)
//@version=3
//study(title="3 Moving Average Exponential", shorttitle="3 EMA", overlay=true)
//len1 = input(17, minval=1, title="Fast")
//len2 = input(72, minval=1, title="Medium")
len3 = input(305, minval=1, title="Slow")
//src1 = input(close, title="Source Fast")
//src2 = input(close, title="Source Medium")
src3 = input(close, title="Source Slow")
//out1 = ema(src1, len1)
//out2 = ema(src2, len2)
out3 = ema(src3, len3)
//plot(out1, title="EMA1", color=fuchsia)
//plot(out2, title="EMA2", color=orange)
plot(out3, title="EMA3", color=color.blue)