3つのスーパートレンド戦略


作成日: 2023-09-15 15:59:15 最終変更日: 2023-09-15 15:59:15
コピー: 0 クリック数: 1343
1
フォロー
1617
フォロワー

スーパートレンド戦略の原始解析

スーパートレンド策略は,平均真波幅 ((ATR) を計算し,スーパートレンドラインを描画することによってトレンドの方向を判断するトレンド追跡策略である.この策略は,3つの異なるパラメータの3つのセットを使用して,3つのスーパートレンドラインを描画し,価格がスーパートレンドラインを破るときに取引シグナルを生成する.

この戦略は,まず,3つのATRと因子を計算し,3つのスーパートレンドラインをそれぞれ描く.ATRは価格の波動性を反映し,因子はスーパートレンドラインの価格への感受性を決定する.この戦略は,異なる周期の傾向変化を捕捉するために,それぞれ短期,中期,および長期のパラメータの組み合わせを使用する.

価格がスーパートレンド線を上越すと,現在の上昇傾向にあることを示し,この戦略は多額のポジションを開きます.価格がスーパートレンド線を下越すと,現在の下降傾向にあることを示し,この戦略は空白を開きます.三つのスーパートレンド線は,より多くの取引機会を生み出し,相互検証は,誤った信号を減らすのに役立ちます.

さらに,この戦略は,スーパートレンドラインの方向が変化しているかどうかを判断するchange関数を使用する.新しい信号は,スーパートレンドラインの方向が変化したときにのみ生成され,平仓のすぐ後に逆転して新しいポジションを開くことが起こらない.最後に,この戦略は,平仓の全ポジションと撤回機能を提供し,戦略の実戦性を向上させる.

全体として,スーパートレンド戦略は,トレンド追跡指標のスーパートレンドラインの優位性を最大限に活用し,複数のパラメータを使用して異なる周期的なトレンドを捉え,合理的なエントリーおよび出口機構を設計し,トレンド追跡戦略の参照として使用します.

スーパートレンド戦略の優位性解析

スーパートレンドの戦略には以下の利点があります.

  1. トレンドの変化を捉える力

ATRを計算し,ダイナミックなスーパートレンドラインを描くことで,市場のトレンドの変化を柔軟に捉え,揺れ市場の誤解を避けることができます.

  1. 多群参数設計

3つのスーパートレンドラインを3つの異なるパラメータで計算することで,短期,中期,長期の周期でトレンドを同時に捉える機会がより多くあります.

  1. 逆転認証メカニズム

Supertrend線が方向を変えた時にのみ新しい信号を生成し,無意味な反復取引を避け,信号の信頼性を検証する.

  1. 戦闘用デザイン

平仓全倉機能を設定して一鍵で清仓し,撤収機能は突発事件に対応し,实体使用能力を向上させる.

  1. 戦略の論理はシンプルで明確です.

Supertrend に基づいて,シグナル規則は単一で明確で,操作と検証が簡単で,量化取引の初心者にとって適しています.

スーパートレンドのリスク

スーパートレンドには以下のリスクがあります.

  1. 誤った信号を発生させる可能性

波動的な状況では,スーパートレンド線が頻繁に上下交差し,偽信号が多すぎると損失が起こります.

  1. パラメータを最適化するのは難しい

複数のパラメータの組み合わせを最適化することは困難であり,不適切なパラメータは戦略の効果を低下させる可能性があります.

  1. 変化の兆しが見えません

スーパートレンド策略は,トレンド判断のみに依存し,潜在的なトレンドの逆転点を特定することができないので,他の指標の補助が必要である.

  1. 緊急事態のリスク

極端な状況では,リスクを効果的にコントロールできず,リスク管理に Stop Loss 戦略を導入する必要があります.

  1. 回測曲線適合リスク

最適化パラメータは,過去データよりも優れた再測量結果をもたらしますが,将来の有効性を保証することはできず,慎重に評価する必要があります.

スーパートレンド戦略の概要

スーパートレンド策略は,全体として,シンプルで実用的なトレンド追跡策略である.それは,スーパートレンドラインの動的特性を利用してトレンドの方向性を判断し,複数のパラメータの設計を使用して効果を高める.同時に,戦略の仕組みは合理的で,ある程度の実戦性がある.しかし,この戦略には,偽信号を生成したり,パラメータを最適化するのが難しいなどのいくつかの問題がある.しかし,この戦略には,他の技術指標を追加して最適化する必要がある.全体として,スーパートレンド策略は,中長期のトレンドを追跡するのに適している.初心者の参照としてトレンド追跡策略テンプレートである.

ストラテジーソースコード
/*backtest
start: 2023-08-15 00:00:00
end: 2023-09-14 00:00:00
period: 2h
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/
// © MarketShree 

//@version=4
// strategy("Supertrend Strategy", overlay=true, default_qty_value=15)
closs_all=input(title="Close_all_Position", type=input.bool, defval=false)
cancel=input(title="Check To Cancel", type=input.bool, defval=false)

atrPeriod1 = input(7, "ATR Length-1")
factor1 = input(1.5,"Factor-1",type=input.float)
atrPeriod2 = input(10, "ATR Length-2")
factor2 = input(2, "Factor-2")
atrPeriod3 = input(20, "ATR Length-3")
factor3 = input(3, "Factor-3")

[superTrend1, direction1] = supertrend(factor1, atrPeriod1)
[superTrend2, direction2] = supertrend(factor2, atrPeriod2)
[superTrend3, direction3] = supertrend(factor3, atrPeriod3)

if change(direction1) < 0
    strategy.entry("LONG", strategy.long)

if change(direction1) > 0
    strategy.entry("SHORT", strategy.short)
strategy.close_all(when=closs_all,comment ="All postion are closed")
strategy.cancel_all(when=cancel)

if change(direction2) < 0
    strategy.entry("LONG", strategy.long)

if change(direction2) > 0
    strategy.entry("SHORT", strategy.short)
strategy.close_all(when=closs_all,comment ="All postion are closed")
strategy.cancel_all(when=cancel)
    
if change(direction3) < 0
    strategy.entry("LONG", strategy.long)

if change(direction3) > 0
    strategy.entry("SHORT", strategy.short)
strategy.close_all(when=closs_all,comment ="All postion are closed")
strategy.cancel_all(when=cancel)

colResistance = direction1 == 1 and direction1 == direction1[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport = direction1 == -1 and direction1 == direction1[1] ? color.new(color.green, 0) : color.new(color.green, 100)
plot(superTrend1, color = colResistance, linewidth=2)
plot(superTrend1, color = colSupport, linewidth=2)    

colResistance1 = direction2 == 1 and direction2 == direction2[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport1 = direction2 == -1 and direction2 == direction2[1] ? color.new(color.green, 0) : color.new(color.green, 100)
plot(superTrend2, color = colResistance, linewidth=2)
plot(superTrend2, color = colSupport, linewidth=2)

colResistance2 = direction3 == 1 and direction3 == direction3[1] ? color.new(color.red, 0) : color.new(color.red, 100)
colSupport2 = direction3 == -1 and direction3 == direction3[1] ? color.new(color.green, 0) : color.new(color.green, 100)
plot(superTrend3, color = colResistance1, linewidth=2)
plot(superTrend3, color = colSupport1, linewidth=2)