複数移動平均強気トレンド戦略


作成日: 2024-01-22 12:04:05 最終変更日: 2024-01-22 12:04:05
コピー: 0 クリック数: 667
1
フォロー
1621
フォロワー

複数移動平均強気トレンド戦略

概要

多重平均線多頭トレンド戦略は,複数の異なる周期の指数移動平均 ((EMA) を基に判断を構成するトレンド追跡戦略である.これは,価格が10日間のEMAを突破し,他のより長い周期のEMA線が多頭並列を呈するときに多く行う.その後,8%の尾行ストロップを使用して利益をロックする.

戦略原則

この戦略は,10日,20日,50,100日,150日,200日の6つの異なる周期のEMA線を使用する.これらのEMA線は,市場の現在の周期段階を判断するために使用される.短期EMA線 (例えば10日線) がより長い周期のEMA線 (例えば20日,50日線) を穿越するときに,市場が多頭トレンドに入っていくマークアップ段階と見なされる.

戦略は,以下の条件を満たしたときに,多額のポジションを開きます.

  1. 10日EMA線は20日EMA線より高い
  2. 20日EMA線は50日EMA線より高い
  3. 100日EMA線は150日EMA線より高い
  4. 150日EMA線は200日EMA線より高い
  5. 10日EMA線を横切った

余剰開設後,戦略は8%の追随ストップを使用して利益をロックする.つまり,株価が購入価格の8%を超えて戻らない限り,そのポジションを継続する.8%以上の引き戻しが発生すると,損失を停止する.

全体として,この戦略の核心構想は,多頭トレンドへの入り口を判定するために,EMAの複数のフィルター条件を使用し,利益をロックするために,ストップをフォローすることです.

優位分析

この多重平均線多頭トレンド戦略には以下の主要な利点があります.

  1. 偽のブレイクを効果的にフィルターして,価格サイクルのマークアップ段階を把握し,不必要な取引を減らすことができます.
  2. EMA線の複数のフィルタリングにより,ストップダメージが破られる可能性が減り,より安全なポジションを保持することができる.
  3. 8%の尾行ストップは, neither too tight nor too looseで,利潤をうまくロックし,あまりにも頻繁なストップを避けることができます.
  4. この戦略はパラメータの調整に柔軟性があり,異なる品種に応じて最適なパラメータの組み合わせを見つけることができます.

リスク分析

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

  1. EMA線順は,トレンドを100%判断できないので,一定値引きの可能性がある.
  2. 8%の尾行ストップは,大きな状況では,利益の一部を失う可能性があります.
  3. EMA平均線システム自体は価格変化に遅れているので,ターニングポイントの判断は少し遅れるかもしれない.

上記のリスクに対して,EMAサイクルパラメータを適切に調整するか,または補助判断として他の指標を導入することによって,最適化および改善を行うことができます.

最適化の方向

この戦略の特徴を考慮して,今後は以下のような点で最適化できる:

  1. 異なるEMA組み合わせと周期パラメータをテストし,最適なパラメータを見つけます.
  2. トレンドの強さを判断するボラティリティ・インデックスなどの指標を追加し,不必要なポジションを避ける.
  3. マックド,KDJなどのフィルタリング指標を追加し,多頭列を判断する.
  4. 機械学習アルゴリズムを導入し,動的停止を可能にします.

要約する

多重平均線多頭トレンド戦略は,全体としてより堅牢で信頼性の高いトレンド追跡戦略である.それは,トレンド判断とリスク管理の両方を兼ね備えている.パラメータ調整とアルゴリズム最適化による改善の余地が大きい.全体として,これは試用して研究する価値のある有効な戦略である.

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

//@version=5
strategy('SirSeff\'s EMA Rainbow', overlay=true)
// Testing Start dates
testStartYear = input(2000, 'Backtest Start Year')
testStartMonth = input(1, 'Backtest Start Month')
testStartDay = input(1, 'Backtest Start Day')
testPeriodStart = timestamp(testStartYear, testStartMonth, testStartDay, 0, 0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2100, 'Backtest Stop Year')
testStopMonth = input(12, 'Backtest Stop Month')
testStopDay = input(30, 'Backtest Stop Day')
testPeriodStop = timestamp(testStopYear, testStopMonth, testStopDay, 0, 0)

testPeriod() =>
    time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop

//TSP
trailStop = input.float(title='Long Trailing Stop (%)', minval=0.0, step=0.1, defval=8) * 0.01

longStopPrice = 0.0
longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - trailStop)
    math.max(stopValue, longStopPrice[1])
else
    0

//PLOTS
plot(series=strategy.position_size > 0 ? longStopPrice : na, color=color.new(color.red, 0), style=plot.style_linebr, linewidth=1, title='Long Trail Stop', offset=1, title='Long Trail Stop')
plot(ta.ema(close, 20))
plot(ta.ema(close, 50))
plot(ta.ema(close, 100))
plot(ta.ema(close, 150))
plot(ta.ema(close, 200))

//OPEN
longCondition =  ta.ema(close, 10) > ta.ema(close, 20) and ta.ema(close, 20) > ta.ema(close, 50) and ta.ema(close, 100) > ta.ema(close, 150) and ta.ema(close, 150) > ta.ema(close, 200)
if longCondition and ta.crossover(close,ta.ema(close,10)) and testPeriod()
    strategy.entry("BUY1", strategy.long)
    
if longCondition and ta.crossover(ta.ema(close,10),ta.ema(close,20)) and testPeriod()
    strategy.entry("BUY2'", strategy.long)

//CLOSE @ TSL
if strategy.position_size > 0 and testPeriod()
    strategy.exit(id='TSP', stop=longStopPrice)