この戦略は,複数のタイムフレームの指標の合意を利用してトレンドを追跡する. 日々の,10日,15日,30日タイムフレームが同時に上昇または下落信号を与えるとき,ダイナミックストップ損失で,長または短に行く.
この戦略は,毎日,10日,15日,30日という4つのタイムフレームを使用してトレンド方向を判断する. 閉値が4つのタイムフレーム全体で開値よりも高くなった場合,上昇信号を示します. 閉値が4つのタイムフレーム全体で開値よりも低くなった場合,下落信号を示します.
信号が上昇すると,それは長い.信号が下落すると,それは短い. 入った後,KCチャネルは動的ストップ損失に使用されます.
具体的には,戦略は,トレンド方向を決定するために,異なる時間枠における開盤価格と閉盤価格を比較する.閉盤価格が開盤価格より高くなった場合,時間枠は上昇傾向とみなされ,緑色にグラフ化される.閉盤価格が開盤価格より低い場合,時間枠は下落傾向とみなされ,赤色にグラフ化される.
4つのタイムフレームがすべて上昇シグナルに同意すると,戦略はロングポジションを開く. 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)