複数の時間枠のトレンドフォロー戦略に基づく


作成日: 2024-02-19 11:13:22 最終変更日: 2024-02-19 11:13:22
コピー: 1 クリック数: 545
1
フォロー
1617
フォロワー

複数の時間枠のトレンドフォロー戦略に基づく

概要

この戦略は,複数のタイムフレーム指標の合意を利用したトレンド追跡戦略である.日線,10日線,15日線,30日線が同時に上下するときにポジションを開き,ダイナミックストップ方式で止まる.

戦略原則

この戦略は,日線,10日線,15日線,30日線の4つの時間枠を使用してトレンドの方向を判断する. 4つの時間枠の閉じる価格が開ける価格より高いときは,看板と判断され, 4つの時間枠の閉じる価格が開ける価格より低いときは,看板と判断される.

判断が看板であるとき,多入場する.判断が看板であるとき,空白入場する.入場後,KCチャネルを使用して動的ストップする.

具体的には,戦略は,異なる時間枠における開場価格と閉場価格を比較することによって,トレンドの方向を判断する.開場価格が閉場価格より低ければ,その時間枠は負向きで,緑で表示される.開場価格が閉場価格より高ければ,その時間枠は負向きで,赤で表示される.

4つの時間枠が負のとき,戦略はポジションを多く開きます. 4つの時間枠が負のとき,戦略はポジションを空っぽに開きます.平仓条件は止損またはトレンドの逆転である.

戦略的優位性

  1. 複数のタイムフレームを使用してトレンドを判断し,偽ブレイクを効果的にフィルターし,トレンドの方向を決定します.

  2. ダイナミック・ストップは最大限の資金保護

  3. 入場条件が厳格で,不必要な取引を削減し,スライドポイントの過剰なコストを回避します.

  4. 複数の時間枠を組み合わせて,収益の速度と安定性をバランスできます.

戦略リスク

  1. 応募条件が厳しいので,一部の機会を逃してしまうかもしれません.

  2. ストップ幅の設定が不適切で,過激すぎたり保守的になったりします.

  3. タイムフレームの選択が間違って,より長期的またはより短期的なトレンドと一致しない可能性があります.

  4. 突発的な事件は,速やかに反転し,被害を防ぐことができません.

最適化の方向

  1. 収益の速度と安定性をバランスする最適化タイムフレームの選択

  2. 異なるパラメータの設定をテストし,ストップダスの幅を最適化

  3. 機械学習のアルゴリズムを導入し,トレンドの転換点を判断する

  4. 緊急事態への注意を高め,予期せぬ事態による損失を回避する

要約する

この戦略は,多時間枠判断のトレンド方向を統合し,厳格な入場条件と動的ストップを組み合わせて,安定した利益を得ることを目的としています. 機会を逃す可能性があり,リスク管理の不適切の問題があります. 次のステップは,パラメータ設定を最適化し続け,戦略の安定性を向上させます.

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

//@version=2
strategy("[RichG] Easy MTF Strategy v1.1", overlay=false)

TF_1_time = input("D", "Timeframe 1")
TF_2_time = input("10D", "Timeframe 2")
TF_3_time = input("15D", "Timeframe 3")
TF_4_time = input("30D", "Timeframe 4")
lengthKC=input(20, title="KC Length")
multKC = input(1.5, title="KC MultFactor")
lengthBB=input(20, title="BB Length")
transaction_size = input(1, "Contract/Share Amount")

src = close, len = 20


out = sma(src, len)
width = 5
upcolor = green
downcolor = red
neutralcolor = blue
linestyle = line


kc() =>
    ma = sma(close, lengthKC)
    range = tr
    rangema = sma(range, lengthKC)
    upperKC = ma + rangema * multKC
    lowerKC = ma - rangema * multKC
    [lowerKC, upperKC] 

 
bb() =>
    source = close 
    basis = sma(source, lengthBB)
    dev = multKC * stdev(source, lengthBB)
    upperBB = basis + dev
    lowerBB = basis - dev
    [upperBB, lowerBB]

TF_1 = request.security(syminfo.tickerid, TF_1_time, open) < request.security(syminfo.tickerid, TF_1_time, close) ? true:false
TF_1_color = TF_1 ? upcolor:downcolor

TF_2 = request.security(syminfo.tickerid, TF_2_time, open) < request.security(syminfo.tickerid, TF_2_time, close) ? true:false
TF_2_color = TF_2 ? upcolor:downcolor

TF_3 = request.security(syminfo.tickerid, TF_3_time, open) < request.security(syminfo.tickerid, TF_3_time, close) ? true:false
TF_3_color = TF_3 ? upcolor:downcolor


TF_4 = request.security(syminfo.tickerid, TF_4_time, open) < request.security(syminfo.tickerid, TF_4_time, close) ? true:false
TF_4_color = TF_4 ? upcolor:downcolor

TF_global = TF_1 and TF_2 and TF_3 and TF_4 
TF_global_bear = TF_1 == false and TF_2 == false and TF_3 == false and TF_4 == false
TF_global_color = TF_global ? green : TF_global_bear ? red : white
TF_trigger_width = TF_global ? 6 : width

plot(1, style=linestyle, linewidth=width, color=TF_1_color)
plot(5, style=linestyle, linewidth=width, color=TF_2_color)
plot(10, style=linestyle, linewidth=width, color=TF_3_color)
plot(15, style=linestyle, linewidth=width, color=TF_4_color)
plot(25, style=linestyle, linewidth=4, color=TF_global_color)    

exitCondition_Long = TF_global_bear 
exitCondition_Short = TF_global

longCondition = TF_global
if (longCondition)
    strategy.entry("MTF_Long", strategy.long, qty=transaction_size)

shortCondition = TF_global_bear
if (shortCondition)
    strategy.entry("MTF_Short", strategy.short, qty=transaction_size)

[kc_lower,kc_upper] = kc()

strategy.close("MTF_Long", when=close < kc_upper)
strategy.close("MTF_Short", when=close > kc_lower)