
この戦略は,単純移動平均 ((SMA) と平均リアル変動率 ((ATR) をベースに動的にストップトラッキングする長線取引戦略である.これは,トレンド追跡とリスク管理の優位性を組み合わせて,引き下げを制御し,利益を最大化することを目的としている.
収束価格が上からSMA200日加減ATR14日時,多入場を行う. 収束価格が下からSMA200日加減ATR14日時,平仓止損する. この戦略はSMA200を使用して大トレンドの方向を判断し,ATRを使用してストップ・ローラインを設定し,ダイナミック・ストップ・ロスを実現する. 具体的には,買入シグナルは,収束価格がSMA200加減ATR14日時を突破し,この突破は,現在上昇傾向にあることを示す. 損失シグナルは,収束価格がSMA200加減ATR14日時を突破し,この突破は,上昇傾向が破られたことを示す.
この戦略は,SMAとATRの2つの指標の優位性を組み合わせている.SMA 200は,市場騒音をフィルターして,長線主方向をロックすることができます.ATR 14日は,最近2週間の変動率に基づいてストップラインを設定して,ダイナミックなストップを追跡する効果を達成することができます.これは,トレンドの中で継続的な利益を実現し,また,反転を効果的に制御することができます.全体的に,この戦略の優位性は次のとおりです.
利回りの高い比率.トレンドに沿って走り,損失をコントロールするリスクをとり,利回りの高い比率を得る.
ATRの動態トラッキングにより,突発事件の影響を軽減し,効果的に撤退を制御する.
参数簡潔 ◎2つの参数のみを使用し,リスクと利益のバランスをとり,過度の最適化を避ける.
この戦略にはいくつかのリスクがあります. 主なリスクは以下の通りです.
トレンド反転リスク.戦略自体はトレンド反転を判断することができないので,突然の転換が起こると大きな損失をもたらす可能性があります.
SMAの遅延リスク.SMAは遅延性があり,トレンドの変化を即座に反映することができない.
ATRパラメータの設定リスク.ATRパラメータの設定が大きすぎたり小さすぎたりすると,戦略のパフォーマンスに影響する.
対応方法:
この戦略は,以下の点で最適化できます.
異なるSMAとATRのパラメータの組み合わせをテストし,最適なパラメータを探します.
MACDのような他の技術指標の判断を逆転させる.
変化の停止,移動の停止などの損失の停止メカニズムを最適化する方法
株の基本指標と組み合わせて,急上昇する見込みのない株を買うのを避けましょう.
この戦略は,トレンド追跡とダイナミックリスク管理の方法を統合し,長線保有期間中のストップ・ロスの最適化を実現する.これは,高損率,回転制御,リスク・利益のバランスの特徴がある.しかし,一定のトレンド・リバース・リスクとパラメータの最適化の困難性もある.全体的に,この戦略は,量化取引がシンプルで効果的な長線取引理念を提供することができ,さらなるテストと最適化の価値があります.
/*backtest
start: 2023-01-30 00:00:00
end: 2024-02-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA+ATR Strategie", overlay=true)
// Benutzer-Inputs für SMA, ATR und die Anzeigeoption
smaLength = input(200, title="SMA Länge")
atrLength = input(14, title="ATR Länge")
showSMAandATR = input(true, title="Zeige SMA und ATR-Bänder")
// Berechnung von SMA und ATR
sma = ta.sma(close, smaLength)
atr = ta.atr(atrLength)
// Kauf- und Verkaufslogik basierend auf SMA und ATR
buyCondition = close > sma + atr
sellCondition = close < sma - atr
// Variable zum Speichern des Eintrittspreises
var float entryPrice = na
// Kauf- und Verkaufssignale
if (buyCondition)
strategy.entry("Buy", strategy.long)
entryPrice := close // Speichere den Eintrittspreis
if (sellCondition)
// Nur wenn ein Kauf stattgefunden hat
if not na(entryPrice)
// Berechne die Performance seit dem Kaufsignal
performanceSinceBuy = ((close - entryPrice) / entryPrice) * 100
// Anzeigen der Performance
// Wähle die Box-Farbe basierend auf dem Vorzeichen der Performance
plColor = performanceSinceBuy >= 0 ? color.green : color.red
// Anzeigen der Performance in der entsprechenden Farbe
plBox = "P/L: " + str.tostring(performanceSinceBuy, "#.##") + "%"
label.new(bar_index, high, text=plBox, color=plColor, textcolor=color.white, style=label.style_label_center, yloc=yloc.price)
// Schließe den Trade und setze den Eintrittspreis zurück
strategy.close("Buy")
entryPrice := na
// Optionale Anzeige von SMA und ATR-Band
plot(showSMAandATR ? sma : na, color=color.blue, title="SMA 200")
plot(showSMAandATR ? sma + atr : na, color=color.green, title="SMA 200 + ATR")
plot(showSMAandATR ? sma - atr : na, color=color.red, title="SMA 200 - ATR")