移動平均取引戦略の傾向

作者: リン・ハーンチャオチャン開催日:2024-01-05 13:48:07
タグ:

img

概要

この戦略は,移動平均取引戦略をフォローするトレンドである.市場動向を決定し,ターニングポイントで取引信号を生成するために,異なるパラメータ設定を持つ最高価格と最低価格の移動平均を使用する.価格が上昇する移動平均線を超えると長くなって,価格がダウンするトレッキングラインを下回ると短くなってしまいます.この戦略は,ストップ損失を設定し,利益レベルを取るためにATRを使用します.

戦略の論理

この戦略は,市場動向を定義するために,異なるパラメータを持つ最高値と最低値の単純な移動平均を使用する.特に,移動平均を追跡する2つのシステムを作成する.

  1. H1とl1システムは,上向きからトレンドを追跡する.h1は,トレンドの上部帯として機能する最高価格の単純な移動平均値である.l1は,下部帯として機能するATR値をマイナスH1で構成される.価格がh1を超えると長い信号が生成され,価格がL1を下回ると接近信号が生成される.

  2. H2とl2システムは,ダウンサイドからトレンドを追跡する. h2は最も低い価格の単純な移動平均値で,下帯として動作する. l2は,h2プラスATR値で構築され,上帯として機能する.価格がh2以下に突破するとショートシグナルが生成され,価格がl2以上に上昇すると接近シグナルが生成される.

双帯域システムは,トレンドターニングポイントをより正確に特定し,騒々しい取引をフィルターすることができます. 一方,ATR値は,ストップロスを設定し,取引ごとにリスク・リターン比を制御するために利益レベルを設定するために使用されます.

利点分析

この戦略の主な利点は以下の通りである.

  1. 双帯帯のシステムは 騒音をフィルターし ターニングポイントを より正確に識別します
  2. ATRは動的に変動を追跡し,取引ごとに効果的なストップ損失制御が可能になります.
  3. 論理は単純で分かりやすいので,初心者が学ぶのに適しています.
  4. パラメータは,異なる市場環境に適応するために柔軟に調整できます.

リスク分析

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

  1. バンドからのブレイクシグナルが遅れて 初期トレンド段階での機会を逃す可能性があります
  2. 曲線トレンドを把握する能力が弱くなっています
  3. 取引コストは考慮されません 高周波取引では高額かもしれません

解決策:

  1. 移動平均周期を短縮して より敏感な信号を出す
  2. MACDなどの他の指標を組み込み,トレンドタイプを決定し,範囲のゾーンで過剰取引を避ける.
  3. ポジションのサイズを低取引頻度に調整する.

オプティマイゼーションの方向性

戦略は以下の側面から最適化できます.

  1. 機械学習アルゴリズムを利用して 変化する市場に対応するためのパラメータを自動調整します
  2. 偽のブレイクを避けるために取引量を考慮します.
  3. マイクロポジションサイズルールを追加して,ポジションサイズとトレンド強さをリンクします.
  4. ストップ・ロスのメカニズムを最適化する

結論

結論として,これはシンプルで実践的なトレンドフォロー戦略です. 基本的な哲学は,デュアルバンドフィルタリングとダイナミックATRストップを通じてトレンドターニングポイントを特定し,トレード損失を制御することです. 明確な実践的メリットがあり,最適化のための大きな余地もあります. パラメータチューニング,他の指標を組み込むなどによってより良いパフォーマンスを達成することができます.


/*backtest
start: 2023-12-05 00:00:00
end: 2024-01-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("I Like Winners And Love Loosers!", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

highest_length = input(200, type=input.integer, minval=1, title="Highest Length")
highest_average = input(10, type=input.integer, minval=1, title="Highest Average Length")

lowest_length = input(200, type=input.integer, minval=1, title="Lowest Length")
lowest_average = input(10, type=input.integer, minval=1, title="Lowest Average Length")

atr_length = input(14, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(2, type=input.integer, minval=1, title="ATR Multiplier")
a = atr(atr_length) * atr_multiplier

h1 = sma(highest(high, highest_length), highest_average)
l1 = h1 - a

h2 = sma(lowest(low, lowest_length), lowest_average)
l2 = h2 + a

buy1_signal = crossover(close, h1)
sell1_signal = crossunder(close, l1)
strategy.entry("Buy", strategy.long, when=buy1_signal)
strategy.close("Buy", when=sell1_signal)

buy2_signal = crossunder(close, h2)
sell2_signal = crossover(close, l2)
strategy.entry("Sell", strategy.short, when=buy2_signal)
strategy.close("Sell", when=sell2_signal)

y1 = plot(h1, title="H1", color=color.green, transp=50, linewidth=2)
y2 = plot(l1, title="L1", color=color.red, transp=50, linewidth=2)
y3 = plot(h2, title="H2", color=color.green, transp=50, linewidth=2)
y4 = plot(l2, title="L2", color=color.red, transp=50, linewidth=2)

fill(y1,y2,color=color.green)
fill(y3,y4,color=color.red)


もっと