複数のトレンド追跡戦略

作者: リン・ハーンチャオチャン, 日付: 2023-11-17 17:19:37
タグ:

img

概要

マルチプルトレンドトラッキング戦略は,株の長期および短期間のトレンドを特定し,トレンドトラッキング取引を行うためにMACD,RSI,ATRおよびDEMA4つの指標を包括的に利用しています.この戦略は,短期間でより良いエントリーポイントを見つけながら,長期的なトレンドを把握できるブレイクアウト取引とトレンドトラッキング取引の利点を組み合わせています.

戦略の論理

MACD取引戦略

MACDは,トレンドをフォローする指標である移動平均収束差を意味する.MACDは,高速移動平均線と遅い移動平均線で構成され,通常は12日間のEMAを高速ライン,26日間のEMAをスローライン,およびシグナルラインを9日間のEMAとして使用する.MACDがシグナルラインの上を横切ると,それは購入信号であり,下を横切ると,それは販売信号である.この戦略は,トレンド方向を決定するためにMACDの黄金十字と死十字を使用する.

RSI 過剰購入 過剰販売 戦略

RSIは,株の過買い・過売状態を反映する相対強度指数 (Relative Strength Index) を意味します.RSIは,期間中の平均利益と平均損失を比較することによって,株が過買い・過売されているかどうかを決定します.

利点分析

この戦略は,トレンド追跡とブレイクアウト取引の両方を考慮して,MACD,RSI,ATRおよびDEMA4つの指標を包括的に利用し,トレンド内でより良いエントリーポイントを見つけることができます.主な利点は:

  1. MACDは,株式価格の中長期傾向の方向性と転換点を効果的に特定することができます.

  2. RSIは短期的に株が過買いか過売れているかを判断し,トレンド逆転の時点で高値を追いかけて低値を売らないようにします.

  3. ATRは,単一の損失を効果的に制御するために,ストップ損失位置を動的に調整します.

  4. DEMAは補助判断指標として 騒音をフィルタリングします

  5. 複数の指標を組み合わせることで,取引シグナルの信頼性が向上します.

リスク分析

この戦略にはいくつかのリスクもあります:

  1. 複数の指標の組み合わせで差異が発生し,間違った取引信号につながる可能性があります.

  2. ATRは,ダイナミックストップ・ロスの指標として,大きな変動により損を招く傾向があります.

  3. DEMAはトレンドフィルターとして より強い短期間の取引機会をフィルターすることができます.

  4. 不適切な戦略パラメータは,頻繁に取引し,取引コストを増やし,滑り損を招く可能性があります.

リスク制御のために,指標パラメータはそれに応じて調整することができます. 確認のためにより多くの補助判断指標も導入できます. 定量的な取引戦略の開発には,歴史的なデータ,堅牢なバックテスト,慎重なリスク管理の細心の分析が必要です. 具体的な行動を推奨することはできませんが,健全な戦略開発原則に焦点を当てることを提案できます.

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

戦略は,次の側面でも最適化できます.

  1. 最適なパラメータを見つけるために異なるパラメータの組み合わせをテストします.

  2. リスクをさらにコントロールするために,移動ストップ損失,平均ストップ損失などのストップ損失戦略を追加します.

  3. KDJ,ボリンジャー帯などの補助判断指標を導入して信号の正確性を向上させる

  4. より良いエントリーポイントを見つけるためにブレークアウト戦略を組み合わせてエントリータイミングを選択を最適化します.

  5. 牛市場と熊市場を区別するパラメータ

  6. 適応性を向上させるため,株の特徴に基づいてモデルを構築する.

概要

マルチプルトレンドトラッキング戦略は,MACD,RSI,ATRおよびDEMA4つの指標を統合し,トレンドトラッキングとトレンドブレイクアウトの有機的な組み合わせを達成する.単一指標戦略と比較して,この戦略はより信頼できる取引信号を提供し,特定の誤った信号を回避することができます.パラメータ最適化,ストップ損失戦略,補助判断などを通じて,戦略のパフォーマンスをさらに改善することができます.この戦略は,より高いトレンドスイッチング能力を必要とする定量的な取引に適しており,長期的なトラッキングと最適化に値する有望な戦略アイデアです.


/*backtest
start: 2022-11-10 00:00:00
end: 2023-11-16 00:00:00
period: 1d
basePeriod: 1h
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/
// © prim722

// © OTS Music

//@version=4
strategy("Atrend by OTS", overlay=true)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
if (crossover(delta, 0))
	strategy.entry("MACD buy", strategy.long, comment="MACD buy")
if (crossunder(delta, 0))
	strategy.entry("MACD sell", strategy.short, comment="MACD sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)
length = input( 18 )
overSold = input( 30 )
overBought = input( 70 )
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
if (not na(vrsi))
	if (co)
		strategy.entry("RSI buy", strategy.long, comment="RSI buy")
	if (cu)
		strategy.entry("RSI sell", strategy.short, comment="RSI sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)


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=false)
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_line, linewidth=2, color=color.white)
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="", text="", location=location.absolute, style=shape.labelup, size=size.tiny, color=color.white, textcolor=color.white, transp=0)
dnPlot = plot(trend == 1 ? na : dn, title="Down Trend", style=plot.style_line, linewidth=2, color=color.gray)
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="", text="", 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.white : color.white) : color.white
shortFillColor = highlighting ? (trend == -1 ? color.gray : color.white) : color.white
fill(mPlot, upPlot, title="UpTrend Highligter", color=longFillColor)
fill(mPlot, dnPlot, title="DownTrend Highligter", color=shortFillColor)
alertcondition(buySignal, title="ATrend Buy", message="ATrend Buy!")
alertcondition(sellSignal, title="ATrend Sell", message="ATrend Sell!")
changeCond = trend != trend[1]
alertcondition(changeCond, title="ATrend Direction Change", message="ATrend has changed direction!")

length1 = input(25, minval=1)
srcb = input(close, title="Source")
e1 = ema(srcb, length1)
e2 = ema(e1, length)
dema = 2 * e1 - e2
plot(dema, "DEMA", color.red)

もっと