移動平均線に基づくトレンドフォロー戦略


作成日: 2023-11-27 15:57:15 最終変更日: 2023-11-27 15:57:15
コピー: 0 クリック数: 565
1
フォロー
1617
フォロワー

移動平均線に基づくトレンドフォロー戦略

概要

この策略は均線に基づくトレンド追跡型の策略である.イチモク雲図指標を用いてトレンドの方向を判断し,200日移動平均のフィルター信号と組み合わせてトレンド追跡を実現する.

戦略原則

この戦略は,主に雲図の変換線とベースラインを使用して,トレンドの方向を判断する.変換線は,過去9日の平均価格であり,ベースラインは過去26日の平均価格である.変換線がベースラインを横切るときは,買い信号であり,下は売り信号である.

この戦略はまた,200日移動平均を使用してシグナルをフィルタリングする. 閉盘価格が200日線以上である場合にのみ,買入シグナルが発生する. これは,ほとんどの偽のシグナルをフィルタリングする.

退出の場合は,基本線を平衡信号として変換線下を通過する簡単な策略を使用する.

優位分析

この戦略は,トレンド判断指標の1雲図と長期トレンドフィルタリング指標の200日線を組み合わせて,トレンドを効果的に追跡し,ほとんどの偽信号をフィルタリングできます.中価平均等パラメータを使用すると,価格の異常な変動による平均線への影響を軽減できます.

この戦略は,移動平均などの指標を単独で使用するよりも,トレンドの転換点をよりうまく捉え,そのため,タイミングでポジションを調整することができる.これは最大の利点である.

リスク分析

この戦略は主に一雲図指標の判断方向に依存し,一雲図自体は誤信号を生じます.判断が偏り出せば,この戦略は損失を引き起こす可能性があります.

さらに,パラメータ設定が不適切である場合,戦略の不良なパフォーマンスを引き起こします.変換線パラメータが短すぎると,偽信号が形成されやすい.ベースラインパラメータが長すぎると,追跡効果が悪くなる.バランスを取るためにパラメータ最適化が必要である.

最適化の方向

他の指標と組み合わせて信号の質を向上させることも考えられます.例えば,KDJ指標は,オーバーバイオーバーセール領域を判定して信号をフィルターする.または,ATR指標を使用してストップロスを設定する.

パラメータ面では,より敏感な取引信号を得るために,変換線パラメータを5日または7日などに調整するなど,より多くの組み合わせをテストすることができます.また,追跡効果をバランスするために,ベースラインパラメータを20日ほど変更するテストもできます.

また,特定の波動的な状況下では,戦略をオフにすることで,急激な市場の影響を回避することも考えられます.

要約する

この戦略は,トレンド判断と長期のフィルタリング指標の優位性を統合し,中長期のトレンドを効果的に追跡することができる.また,パラメータ設定と風力制御策も,誤信号と波動による影響を減らすために継続的に最適化する必要がある.全体的にこの戦略は,実際の操作価値がある.

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

//@version=3
strategy(title="TK Cross > EMA200 Strat",  overlay=true)

ema200 = ema(close, 200)
conversionPeriods = input(9, minval=1, title="Conversion Line Periods"),
basePeriods = input(26, minval=1, title="Base Line Periods")
laggingSpan2Periods = input(52, minval=1, title="Lagging Span 2 Periods"),
displacement = input(26, minval=1, title="Displacement")

donchian(len) => avg(lowest(len), highest(len))

conversionLine = donchian(conversionPeriods)
baseLine = donchian(basePeriods)
leadLine1 = avg(conversionLine, baseLine)
leadLine2 = donchian(laggingSpan2Periods)

plot(conversionLine, color=#0496ff, title="Conversion Line", linewidth=3)
plot(baseLine, color=#991515, title="Base Line", linewidth=3)
plot(close, offset = -displacement, color=#459915, title="Lagging Span")

p1 = plot(leadLine1, offset = displacement, color=green,
 title="Lead 1")
p2 = plot(leadLine2, offset = displacement, color=red, 
 title="Lead 2")
fill(p1, p2, color = leadLine1 > leadLine2 ? green : red)

plot(ema200, color=purple, linewidth=4,title='ema200')
strategy.initial_capital = 50000

strategy.entry('tkcross', strategy.long, strategy.initial_capital / close, when=conversionLine>baseLine and close > ema200)
strategy.close('tkcross', when=conversionLine<baseLine)


start = input(2, minval=0, maxval=10, title="Start - Default = 2 - Multiplied by .01")
increment = input(2, minval=0, maxval=10, title="Step Setting (Sensitivity) - Default = 2 - Multiplied by .01" )
maximum = input(2, minval=1, maxval=10, title="Maximum Step (Sensitivity) - Default = 2 - Multiplied by .10")
sus = input(true, "Show Up Trending Parabolic Sar")
sds = input(true, "Show Down Trending Parabolic Sar")
disc = input(false, title="Start and Step settings are *.01 so 2 = .02 etc, Maximum Step is *.10 so 2 = .2")
//"------Step Setting Definition------"
//"A higher step moves SAR closer to the price action, which makes a reversal more likely."
//"The indicator will reverse too often if the step is set too high."

//"------Maximum Step Definition-----")
//"The sensitivity of the indicator can also be adjusted using the Maximum Step."
//"While the Maximum Step can influence sensitivity, the Step carries more weight"
//"because it sets the incremental rate-of-increase as the trend develops"

startCalc = start * .01
incrementCalc = increment * .01
maximumCalc = maximum * .10

sarUp = sar(startCalc, incrementCalc, maximumCalc)
sarDown = sar(startCalc, incrementCalc, maximumCalc)

colUp = close >= sarDown ? lime : na
colDown = close <= sarUp ? red : na

plot(sus and sarUp ? sarUp : na, title="Up Trending SAR", style=circles, linewidth=3,color=colUp)
plot(sds and sarDown ? sarDown : na, title="Up Trending SAR", style=circles, linewidth=3,color=colDown)