勢いを追うシャフトトレンドサイクル戦略


作成日: 2023-11-01 16:08:35 最終変更日: 2023-11-01 16:08:35
コピー: 2 クリック数: 855
1
フォロー
1617
フォロワー

勢いを追うシャフトトレンドサイクル戦略

概要

この戦略は,Schaffのトレンドサイクル指標に基づいて,Stoch RSIの超買超売原理を組み合わせて,動向指標によってトレンドの判断と追跡を実現します. 価格が超売区から超買区に突破すると,多めにします. 価格が超買区から超売区に突破すると,空っぽにします. この戦略は,価格のトレンドの変化点を捉え,ポジションを動的に調整し,価格の動きを追跡します.

戦略原則

    1. MACDを計算し,Fast Lengthのデフォルト値は23で,Slow Lengthのデフォルト値は50である.MACDは,短期と長期の移動平均の差値を反映し,価格の動きを判断するために使用される.
    1. MACDをストックRSI処理して,K値を形成し,その中のサイクル長が10のデフォルト値で,MACDの動態指標を反映した超買超売である.
    1. K値に対する重量移動平均は,D値を形成し,1st %D Lengthのデフォルト値は3で,K値内のノイズを除去する.
    1. D値をStoch RSI処理で再処理し,初期STC値を形成し,2nd %D Lengthのデフォルト値は3で,正確なオーバーバイオーバーセールシグナルを形成する.
    1. 初期 STC 値に対する重み付けの移動平均で,最終的な STC 値が得られ,範囲は0-100。 STC 75 以上は超買区,25 以下は超売区。
    1. STCが下から上へ25を突破すると,多めにやります.STCが上から下へ75を突破すると,空いてください.

戦略的優位性

    1. STC指数は,Stoch RSIの設計を組み合わせて,強烈なトレンドシグナルを形成するために,オーバーバイオーバーセール領域を明確に識別できます.
    1. ダブルストックRSIフィルターにより,偽突破を効果的にフィルターできます.
    1. STCは0-100の標準化範囲を形成し,機械化された取引信号の形成を容易にする.
    1. この戦略の反省は,視覚的なブレイクマークとテキストポップアップアラームを実現し,取引機会を明確に直感的に捉えます.
    1. 戦略は,過度に敏感な取引を避けるために,無意味な取引を効果的に制御するための最適化されたパラメータの組み合わせを採用しています.

戦略リスク

    1. STC指数はパラメータに敏感であり,異なる通貨と時間周期にパラメータの組み合わせを調整して市場の特徴に適合させる必要がある.
    1. 突破取引の戦略は簡単に騙され,リスクをコントロールするためにストップ・ロスを設定する必要があります.
    1. 低流動性の市場における偽の突破は,誤ったシグナルを誘発する可能性があるため,合成取引量などの指標を組み合わせてフィルタリングする必要があります.
    1. この戦略は,STC指数のみに基づいて,他の要因と組み合わせてトレンド確認を判断し,逆転停止を回避します.
    1. この地域での誤信号を避けるために,重要なサポートレジスタンスに注意する必要があります.

戦略最適化の方向性

    1. MACDのパラメータの組み合わせを,異なる周期と通貨に対応するように最適化します.
    1. ストック RSIのK値とD値のパラメータを最適化し,STC曲線を平ら化する。
    1. 取引量指標を組み合わせて,低流動性の市場における偽の突破を避ける.
    1. 他の指標の判断を加え,ブリン帯などのトレンドシグナルを確認する.
    1. モバイルストップまたはATRストップのようなストップメカニズムを追加します.
    1. トレンド確認を確実にするため,突破後に回調入入場などの入場位置の調整

要約する

シャフのトレンドサイクル戦略は,運動指数によって超買超売領域を判定し,これによって価格の中での短期トレンドの変化を判断する.この戦略は単純明快で,異なる市場のパラメータに応じて調整することができるが,被套のリスクも存在する.補助指標によって判断と止損を最適化して,強気なトレンドでより効果を発揮することができる.

ストラテジーソースコード
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
// Copyright (c) 2018-present, Alex Orekhov (everget)
// Schaff Trend Cycle script may be freely distributed under the MIT license.
strategy("Schaff Trend Cycle", shorttitle="STC Backtest", overlay=true)

fastLength = input(title="MACD Fast Length",  defval=23)
slowLength = input(title="MACD Slow Length",  defval=50)
cycleLength = input(title="Cycle Length",  defval=10)
d1Length = input(title="1st %D Length",  defval=3)
d2Length = input(title="2nd %D Length",  defval=3)
src = input(title="Source",  defval=close)
highlightBreakouts = input(title="Highlight Breakouts ?", type=bool, defval=true)

macd = ema(src, fastLength) - ema(src, slowLength)

k = nz(fixnan(stoch(macd, macd, macd, cycleLength)))

d = ema(k, d1Length)

kd = nz(fixnan(stoch(d, d, d, cycleLength)))

stc = ema(kd, d2Length)
stc := 	stc > 100 ? 100 : stc < 0 ? 0 : stc

//stcColor = not highlightBreakouts ? (stc > stc[1] ? green : red) : #ff3013
//stcPlot = plot(stc, title="STC", color=stcColor, transp=0)

upper = input(75, defval=75)
lower = input(25, defval=25)

transparent = color(white, 100)

upperLevel = plot(upper, title="Upper", color=gray)
// hline(50, title="Middle", linestyle=dotted)
lowerLevel = plot(lower, title="Lower", color=gray)

fill(upperLevel, lowerLevel, color=#f9cb9c, transp=90)

upperFillColor = stc > upper and highlightBreakouts ? green : transparent
lowerFillColor = stc < lower and highlightBreakouts ? red : transparent

//fill(upperLevel, stcPlot, color=upperFillColor, transp=80)
//fill(lowerLevel, stcPlot, color=lowerFillColor, transp=80)

long =  crossover(stc, lower) ? lower : na
short = crossunder(stc, upper) ? upper : na

long_filt = long and not short
short_filt = short and not long

prev = 0
prev := long_filt ? 1 : short_filt ? -1 : prev[1]

long_final = long_filt and prev[1] == -1
short_final = short_filt and prev[1] == 1

strategy.entry("long", strategy.long, when = long )
strategy.entry("short", strategy.short, when = short)

plotshape(crossover(stc, lower) ? lower : na, title="Crossover", location=location.absolute, style=shape.circle, size=size.tiny, color=green, transp=0)
plotshape(crossunder(stc, upper) ? upper : na, title="Crossunder", location=location.absolute, style=shape.circle, size=size.tiny, color=red, transp=0)

alertcondition(long_final, "Long", message="Long")
alertcondition(short_final,"Short", message="Short")

plotshape(long_final, style=shape.arrowup, text="Long", color=green, location=location.belowbar)
plotshape(short_final, style=shape.arrowdown, text="Short", color=red, location=location.abovebar)