長期のみ戦略をフォローする傾向

作者: リン・ハーンチャオチャン開催日:2023年10月17日 15:55:41
タグ:

img

概要

トレンドフォロー・ロング・オンリー・ストラテジーは,動的移動平均値を使用して価格傾向を追跡する戦略である.これは,一期間の最高値と最低値の移動平均値を計算し,動的ストップ損失と利益を得るためにATRと組み合わせて現在の傾向を決定する.この戦略は,長期保有のためにタイミングでトレンド逆転を把握することによって,トレンド市場でうまく機能する.

戦略の論理

この戦略は,まず,一期間にわたる最高値と最低値の移動平均を計算し (デフォルト200日) その中点をベースラインとする.その後,ベースラインからの価格偏差を測定する.価格がベースラインより1ATR (0.5倍10日ATRをデフォルトで) 上昇傾向とみなされる.価格がベースラインより1ATRを下回る場合は下落傾向とみなされる.トレンド状態に基づいてロングまたはショートポジションが入力される.

価格がベースラインに戻ると,出口シグナルが起動します.また,動的なATRは,小さな変動で過剰取引を避けるために,主要なトレンドを追跡するためにストップ損失と利益を得ることができます.

利点

  1. ダイナミック・平均値は,長期的トレンド方向性を効果的に特定するために,価格の動きを円滑にします.
  2. ATRベースのストップは,過度に敏感性を回避する動的に主要なトレンドをフォローします.
  3. 傾向の逆転を適時に捉えることで,不適切な資本浪費を減らす
  4. シンプルな論理 簡単に実行できます

リスク と 軽減

  1. 異なる市場で誤った信号を生む可能性があります.
  2. パラメータの調節が不適切であれば,トレンド逆転が見逃される可能性があります.
  3. 市場と個別のストックの間の差は考慮されるべきです

ATRパラメータを調整し,高い確率設定のためのフィルターを追加し,市場状況とリスク意欲を評価することでリスクは軽減できます

改善 の アイデア

  1. KDJ のような指標を使用して最初の入力信号の後で二次確認を追加
  2. 波動性,個々の株の基本要素に基づくパラメータを最適化
  3. 利潤因子と売上率を平衡するためのバックテストに基づいた精調整ATR倍数
  4. ストップ・ロスの動的波動性調整を導入し,利益を取ること
  5. 自動パラメータ最適化のための機械学習技術を活用する

概要

トレンドフォロー・ロング・オンリー・ストラテジーは,全体的に使いやすいトレンド・トレーディングシステムである.動的平均値を使用してトレンド方向を特定し,ATRベースのストップでリスク制御を設定する.トレンド市場における収益性の高い変動を効果的に把握することができる.ウィップソウを防ぐために市場をレンジングすることは避けるべきである.パラメータチューニング,フィルターを追加し,機械学習技術を統合することによってさらなる改善が可能である.


/*backtest
start: 2022-10-10 00:00:00
end: 2023-10-16 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Trend Following Long Only Strategy", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

lookback_length = input(200, type=input.integer, minval=1, title="Lookback Length")
smoother_length = input(5, type=input.integer, minval=1, title="Smoother Length")
atr_length = input(10, type=input.integer, minval=1, title="ATR Length")
atr_multiplier = input(0.5, type=input.float, minval=0.5, title="ATR Multiplier")

vola = atr(atr_length) * atr_multiplier
price = sma(close, 3)

l = ema(lowest(low, lookback_length), smoother_length)
h = ema(highest(high, lookback_length), smoother_length)
center = (h + l) * 0.5
upper = center + vola
lower = center - vola
trend = ema(price > upper ? 1 : (price < lower ? -1 : 0), 3)
c = trend < 0 ? upper : lower

pcenter = plot(center, transp=100)
pclose = plot(close, transp=100)
pc = plot(c, transp=100)

buy_signal = crossover(trend, 0.0) 
sell_signal = crossunder(trend, 0.0)

strategy.entry("Buy", strategy.long, when=buy_signal)
strategy.close("Buy", when=sell_signal)

bgcolor(trend >= 0 ? color.green : color.red, transp=95)
fill(pc, pclose, color=trend >= 0 ? color.green : color.red)

もっと