移動平均ブレイクアウトトレンドフォローシステムの優位性


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

移動平均ブレイクアウトトレンドフォローシステムの優位性

概要

この戦略は,クラシックなトレンド追跡システムである.移動平均の金叉死叉を使用してトレンドの方向性を判断し,唐通路の突破時に入場する.唐通路のパラメータを50日設定すると,短期市場のノイズを効果的にフィルターできます.移動平均を40日および120日指数移動平均に設定すると,中長期トレンドをよりよく捕捉できます.ストップロスは価格の下4倍のATRに設定され,個々の取引の損失を効果的に制御できます.

戦略原則

この戦略は,主に以下のポイントに基づいています.

  1. 40日および120日間の指数移動平均を用いてトレンド判断の指標を構成する.快線が下から遅線を貫くとき,金叉信号で,上昇傾向に入ることを示す;快線が上から下から遅線を貫くとき,死叉信号で,下向き傾向に入ることを示す.

  2. 唐通路のパラメータは50日設定され,市場の短期変動をフィルターする。価格が上線を突破する時にだけ多めにして,下線を突破する時にだけ空にして,套入を避ける。

  3. ストップ・ロスは,価格の下の4倍ATRに設定する.ATRは,市場の波動度とリスクを効果的に測定し,ストップ・ロスは,その一定倍数に設定することで,単一の取引の損失を制御することができる.

  4. 指数移動平均は,現在の価格傾向に適しており,単純移動平均は,滑らかすぎます.

  5. 50日経路期間と40日,120日平均線を組み合わせて使用すると,偽突破を効果的にフィルターできます.

優位分析

この戦略の利点は以下の通りです.

  1. 移動平均の組み合わせは,市場のトレンドの方向を効果的に判断できます.40日平均線は,短期トレンドを捉え,120日平均線は,中長期トレンドを判断できます.

  2. 唐通路は騒音をフィルターし,高殺し落としを避ける.価格が通路を突破するのみで入場し,取引市場の真ん中の揺れ地帯を効果的に回避できる.

  3. ストップ・ロスは合理的に設定され,単一取引の損失を制御し,ポジションを爆破しないようにする.単一損失制御は,利益の持続性を保証する.

  4. 指数移動平均は,価格変化の傾向により適合し,システムの保有期間はより長く,トレンド取引の考えに適合する.

  5. 移動平均のパラメータの選択は,トレンドの感度とフィルターノイズの安定性を兼ね備えています.

リスク分析

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

  1. 長期にわたってポジションを保持するリスク:この戦略はトレンドフォロー戦略であり,長期にわたる横断整理またはトレンドの逆転が発生した場合,大きな損失に直面します.

  2. 偽の突破リスク: 価格が通路の近くに触れたときに,不必要な取引を誘導する偽の突破が一定割合で発生する可能性があります.

  3. パラメータ設定リスク:移動平均と通路のパラメータの設定は主観的であり,異なる市場ではパラメータの組み合わせを調整する必要がある.そうでなければ,システムの安定性に影響を与えるだろう.

  4. ストップポイントが小さすぎるリスク: 設定したストップポイントが小さすぎるため,利益に影響を与えるストップ損失出場が多すぎる.

対応方法:

  1. 長期にわたって持てるリスクを避けるために,慎重に持てる時間を決めましょう.
  2. パラメータを最適化して,突破信号をより安定して信頼できるようにする.
  3. 異なる市場のデータをテストし,パラメータの組み合わせを最適化します.
  4. 停止点を適切に緩め,過度の停止を防止する.

最適化の方向

この戦略は以下の方向から最適化できます.

  1. 異なる均線の組み合わせをテストし,最適なパラメータの組み合わせを探します.様々な単純,指数,ハルなどの移動平均の組み合わせをテストできます.

  2. 経路周期とパラメータを最適化して,突破シグナルをより効率的にする.市場の波動周波数と組み合わせて最適化することができる.

  3. トレンドの実行中にトレンドの追跡ストップを採用し,トレンドの終了後に固定ストップを採用する.

  4. MACD,KDなどの指標を使用して多要素検証を行い,信号の正確性を向上させる.

  5. ポジション管理戦略を高め,トレンドの実行時にポジションを上げ,利益を最適化します.

  6. 異なる品種特性に応じてパラメータの組み合わせを選択し,システムパラメータの頑丈性を高めます.

要約する

この戦略は全体としてトレンド追跡システムとしては比類的で簡潔である。核心は移動平均の適用と通路の突破フィルターである。止損戦略も古典的で実用である。この戦略は,量化システムの開発の基本的枠組みとして,直接投入することも可能であり,収益も比類的に安定である。テストを最適化することによってシステムの安定性と収益率をさらに向上させることができる。全体的に,この戦略は操作性が容易であり,使いやすさがあり,量化取引の通用化のための基本策の一つである。

ストラテジーソースコード
/*backtest
start: 2023-10-15 00:00:00
end: 2023-11-14 00:00:00
period: 1h
basePeriod: 15m
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/
// © Robrecht99

//@version=5
strategy("Long Term Trend Following System", overlay=true, margin_long=0, margin_short=0, pyramiding=4)

// Backtest Range //

Start = input(defval = timestamp("01 Jan 2017 00:00 +0000"), title = "Backtest Start Date", group = "backtest window")
Finish = input(defval = timestamp("01 Jan 2100 00:00 +0000"), title = "Backtest End Date", group = "backtest window")

//Moving Averages //

len1 = input.int(40, minval=1, title="Length Fast EMA", group="Moving Average Inputs")
len2 = input.int(120, minval=1, title="Length Slow EMA", group="Moving Average Inputs")
src1 = input(close, title="Source Fast MA")
src2 = input(close, title="Source Slow MA")
maFast = input.color(color.new(color.red, 0), title = "Color Fast EMA", group = "Moving Average Inputs", inline = "maFast")
maSlow = input.color(color.new(color.blue, 0), title = "Color Slow EMA", group = "Moving Average Inputs", inline = "maSlow")
fast = ta.ema(src1, len1)
slow = ta.ema(src2, len2)
plot(fast, color=maFast, title="Fast EMA")
plot(slow, color=maSlow, title="Slow EMA")

// Donchian Channels //

Length1 = input.int(title="Length Upper Channel", defval=50, minval=1, group="Donchian Channels Inputs")
Length2 = input.int(title="Length Lower Channel", defval=50, minval=1, group="Donchian Channels Inputs")
h1 = ta.highest(high[1], Length1)
l1 = ta.lowest(low[1], Length2)
fillColor = input.color(color.new(color.purple, 95), title = "Fill Color", group = "Donchian Channels Inputs")
upperColor = input.color(color.new(color.orange, 0), title = " Color Upper Channel", group = "Donchian Channels Inputs", inline = "upper")
lowerColor = input.color(color.new(color.orange, 0), title = " Color Lower Channel", group = "Donchian Channels Inputs", inline = "lower")
u = plot(h1, "Upper", color=upperColor)
l = plot(l1, "Lower", color=upperColor)
fill(u, l, color=fillColor)
strategy.initial_capital = 50000
//ATR and Position Size //

length = input.int(title="ATR Period", defval=14, minval=1, group="ATR Inputs")
risk = input(title="Risk Per Trade", defval=0.01, group="ATR Inputs")
multiplier = input(title="ATR Multiplier", defval=2, group="ATR Inputs")
atr = ta.atr(length)
amount = (risk * strategy.initial_capital / (multiplier * atr))

// Buy and Sell Conditions //

entrycondition1 = ta.crossover(fast, slow)
entrycondition2 = fast > slow
sellcondition1 = ta.crossunder(fast, slow)
sellcondition2 = slow > fast

// Buy and Sell Signals //

if (close > h1 and entrycondition2)
    strategy.entry("long", strategy.long, qty=amount)
    stoploss = close - atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (sellcondition1 and sellcondition2)
    strategy.close(id="long")

if (close < l1 and sellcondition2)
    strategy.entry("short", strategy.short, qty=amount)
    stoploss = close + atr * 4
    strategy.exit("exit sl", stop=stoploss, trail_offset=stoploss)
if (entrycondition1 and entrycondition2)
    strategy.close(id="short")