資源の読み込みに... 荷物...

ブレイクと周波数フィルター (長みのみ) でトレンドフォロー

作者: リン・ハーンチャオチャン開催日:2024年5月28日14時24分
タグ:エイマAO

img

概要

この戦略は,ブレイクアウトと周波数フィルタリングに基づくトレンドフォロー戦略であり,ロングポジションのみを取ることである.戦略の主な考え方は,現在のトレンド方向を決定するためにEMA指標を使用し,価格が特定の範囲内の最高価格から突破するとロング信号を生成し,取引頻度を制御するために周波数フィルターを使用し,ポジションを頻繁に開かないようにする.戦略はリスクを制御するためにストップ・ロストポイントを設定し,トレンドが終了するとポジションを閉じる.

戦略原則

  1. EMA指標を計算して現在のトレンド方向を決定します.閉じる価格がEMAよりも高くなった場合,それは上昇傾向とみなされます.
  2. ある範囲内の最高価格をブレイク条件として計算します. 最短または最長回顧期間の内での閉じる価格が最高価格から突破し,現在のトレンドが上昇傾向にあるとき,ロング信号が生成されます.
  3. 取引頻度が過度に高くならないように,連続したポジション開設間の最小間隔時間を制御する周波数フィルターを導入する.
  4. ストップ・ロスの値を下回ると,リスクをコントロールするためにポジションを閉じる.
  5. トレンド終了シグナルを定義します. 閉じる価格がEMAを下回ると,トレンドが終了すると考えられます. この時点でロングポジションが保持されている場合,ポジションを閉じる.

戦略 の 利点

  1. トレンドフォロー: EMA インディケーターを使用してトレンド方向を決定し,トレンドに沿った取引を行うことで,戦略のリターンを向上させるのに役立ちます.
  2. ブレイクアウト確認: 価格ブレイクアウトをエントリー信号として使用することで,トレンドの開始時にタイムリーエントリーが可能になり,より多くの利益の可能性を捉える.
  3. 周波数制御: 連続したポジション開設間の時間間隔を制御する周波数フィルターを導入することで,過剰な取引を避け,取引コストとリスクを軽減できます.
  4. ストップ・ロスト・プロテクション: 価格が一定の大きさで逆方向に動くと,ストップ・ロスト・ポイントを設定して,すぐにストップ・ロストを行うことで,ダウンサイドリスクが効果的に制御されます.
  5. 動的ポジション閉じる: 動的ポジションを閉じるのは,トレンド終了信号に基づいており,既存の利益を間に合うように固定し,トレンド逆転による損失を回避する.

戦略リスク

  1. パラメータ敏感性: 戦略のパフォーマンスはパラメータ選択に比較的敏感であり,異なるパラメータ設定は戦略のパフォーマンスに重大な違いをもたらす可能性があります.十分なバックテストとパラメータの最適化が必要です.
  2. ブレイクアウト失敗: 価格ブレイクアウトは,トレンドが確実に続くことを保証するものではなく,ブレイクアウトの失敗が起こり,戦略が連続して損失を被る可能性があります.
  3. トレンド認識: 戦略は EMA インディケーターに頼ってトレンドを判断しますが, EMA インディケーターは遅延または判断が誤りになり,戦略の正確さに影響します.
  4. 頻繁な取引: 戦略は周波数フィルターを導入しているが,市場の変動が高く,取引コストが増加するときに,頻繁にポジションを開閉することがあります.
  5. ストップ・ロスのリスク:ストップ・ロスのポイントを設定することで,戦略の最大引き上げを完全に回避できない可能性があり,極端な市場条件では依然として大きな損失が発生する可能性があります.

戦略の最適化方向

  1. パラメータ最適化: EMA 長さ,見直し期間長さ,ストップ損失パーセントなど,戦略の主要なパラメータを最適化し,最適なパラメータの組み合わせを見つけ,戦略の安定性と収益性を向上させる.
  2. シグナルフィルタリング: ブレイクシグナルが生成された後,他の技術指標や条件を導入してシグナルを第二回確認し,信号の質を向上させ,誤判や偽信号を減らすことができます.
  3. トレンド判断:MACD,DMIなどの他のトレンド判断指標を使用したり,複数の指標を組み合わせてトレンドを共同で判断し,トレンド認識の精度を向上させてください.
  4. ダイナミックストップ損失: 市場の変動条件に応じてストップ損失点をダイナミックに調整します.例えば,ATR指標を使用してダイナミックストップ損失価格を計算するか,リスクをよりよく制御するためにトライリングストップ損失戦略を導入します.
  5. ポジション管理:ポジション管理戦略を最適化し,市場の変動と口座資本条件に応じてポジションサイズを動的に調整し,単一の取引のリスク露出を制御し,資本利用効率を改善します.

概要

この戦略は,ブレイクアウトと周波数フィルタリングに基づくトレンドフォロー戦略である.トレンド方向を決定するためにEMA指標を使用し,価格ブレイクアウトをエントリー信号として使用し,トレード周波数を制御するために周波数フィルタを導入し,リスクを制御するためにストップロスを設定する.戦略の利点はトレンドフォロー,ブレイクアウト確認,周波数制御,ストップロスの保護,ダイナミックなポジション閉鎖にありますが,パラメータ敏感性,ブレイクアウト失敗,トレンド認識,頻繁な取引,ストップロスのリスクなどの潜在的なリスクもあります.戦略をさらに最適化するために,パラメータ最適化,シグナルフィルタリング,トレンド判断,ダイナミックストロスの管理,ポジション管理などの側面からスタートし,戦略の安定性と収益性を向上することができます.


/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Trend Following with Breakout and Frequency Filter (Long Only)", overlay=true)

// 输入参数
emaLength = input.int(50, title="EMA长度")
lookbackPeriodMin = input.int(80, title="最短回溯期")
lookbackPeriodMax = input.int(120, title="最长回溯期")
stopLossPct = input.float(2, title="止损百分比") / 100  // 止损百分比
minHoldBars = input.int(10, title="最小持仓K线数量")  // 最小持仓K线数量

// 计算EMA
ema = ta.ema(close, emaLength)

// 计算最高价和最低价
highestHigh = ta.highest(high, lookbackPeriodMax)
lowestLow = ta.lowest(low, lookbackPeriodMax)

// 定义趋势方向
isBullish = close > ema

// 定义突破信号
breakoutCondition = (ta.crossover(close, highestHigh[lookbackPeriodMin]) or ta.crossover(close, highestHigh[lookbackPeriodMax])) and isBullish

// 计算止损点
stopLossLevelLong = close * (1 - stopLossPct)

// 绘制EMA
plot(ema, title="EMA", color=color.blue)

// 记录上次开仓时间
var float lastEntryTime = na

// 策略执行并标注信号
if (breakoutCondition and (na(lastEntryTime) or (time - lastEntryTime) > minHoldBars * timeframe.multiplier))
    strategy.entry("做多", strategy.long)
    label.new(bar_index, high, text="买入", style=label.style_label_up, color=color.green, textcolor=color.white)
    strategy.exit("止损", from_entry="做多", stop=stopLossLevelLong)
    lastEntryTime := time

// 定义趋势结束信号
exitCondition = close < ema

if (exitCondition and (strategy.position_size > 0) and (time - lastEntryTime) > minHoldBars * timeframe.multiplier)
    strategy.close("做多")
    label.new(bar_index, low, text="卖出", style=label.style_label_down, color=color.red, textcolor=color.white)

関連性

もっと