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

戦略をフォローするダブル移動平均チャネルトレンド

作者: リン・ハーンチャオチャン開催日:2024年9月26日 16:28:19
タグ:SMAエイマRSIマックド

img

概要

この戦略は,二重移動平均値とチャネルに基づくトレンドフォローシステムである. リスクと利益管理のためのストップ・ロストとテイク・プロフィートメカニズムを使用して,市場傾向を把握し取引を実行するために,指数的な移動平均値 (EMA) によって形成されたチャネルと組み合わせた短期および長期移動平均値からのクロスオーバー信号を使用する.

戦略原則

戦略の基本論理には,次の主要な要素が含まれます.

  1. 主要トレンド指標として2つのシンプル・ムービング・メアージャー (SMA):55期と300期.
  2. 2つの指数関数移動平均値 (EMA) が取引チャンネルを形成する,576期と676期EMA.
  3. 長期間のSMAが長期間のSMAまたはEMAを超越したとき,長期間のSMAが長期間のSMAまたはEMAを下回るときに,長期間のSMAが長期間のSMAまたはEMAを超越したとき,長期間のSMAまたはEMAが長期間のSMAまたはEMAを下回るときに,短期間のSMAが発生する.
  4. 固定ポイントストップ・ロストとテイク・プロフィート戦略で,ストップ・ロストはエントリー価格の1/70で,テイク・プロフィートはエントリー価格の1/140に設定されます.
  5. 利益が300ポイントに達すると 追尾ストップメカニズムが起動し 蓄積された利益を守ります
  6. この戦略には,価格がストップ・ロストまたはテイク・プロフィートレベルに達すると自動的にポジションを閉じるような退出条件が含まれます.

戦略 の 利点

  1. 多指標統合:複数の移動平均値とEMAチャネルを組み合わせることで,トレンド識別の精度は向上します.
  2. 双方向取引:この戦略は,資本効率を向上させ,上昇市場と下落市場の両方で利益を得ることができます.
  3. リスクマネジメント:固定ポイントストップ・ロストとテイク・プロフィートを採用し,各取引のリスクを効果的に制御する.
  4. 利益保護: 持続的なトレンド中に部分的な利益をロックするために,トラッキングストップメカニズムを使用します.
  5. 柔軟性: 戦略のパラメータは,異なる市場状況に適応するために調整可能である.

戦略リスク

  1. 横向市場では,頻繁に誤った信号が連続した損失につながる可能性があります.
  2. スリップリスク: 変動が激しい市場では,実際の実行価格が理想価格から大幅に偏りやすい.
  3. 過剰取引:頻繁な取引シグナルが過剰な取引コストを引き起こす可能性があります.
  4. パラメータ敏感性: 戦略のパフォーマンスはパラメータ設定に非常に敏感であり,異なる市場環境のために頻繁な調整を必要とする可能性があります.

戦略の最適化方向

  1. 変動指標を組み込む: 変動する市場変動に対応して,ストップ・ロースとテイク・プロフィートのレベルを動的に調整するために,ATR (平均真差) を追加することを検討する.
  2. トレンド強度フィルタリングを向上させる: ADX (平均方向指数) を導入して,弱いトレンド信号をフィルタリングし,偽ブレイクによる損失を減らす.
  3. 入場タイミングを最適化: 入場タイミングを改善し,勝利率を上げるため,RSI (相対強度指数) やMACD (移動平均収束差) を組み合わせることを検討します.
  4. 資金管理を改良する 動的なポジションサイズを導入し,口座資本と市場の変動に基づいて取引サイズを調整する.
  5. バックテスト期間を延長する: 異なる市場環境における戦略の安定性を検証するために,長期のバックテストを実施する.

結論

この二重移動平均チャネルトレンドフォロー戦略は,複数の技術指標を組み合わせて包括的な取引システムを提供している.主要トレンドを把握するだけでなく,リスク管理と利益保護メカニズムも組み込む.いくつかの潜在的なリスクが存在する一方で,継続的な最適化とパラメータ調整により,戦略はさまざまな市場条件下で良好なパフォーマンスを発揮する可能性がある.将来の最適化は,信号品質の向上,リスク管理の強化,戦略の適応性の向上に焦点を当てなければならない.


/*backtest
start: 2024-08-26 00:00:00
end: 2024-09-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RC BTC Vegas 5min free ", overlay=true )

// 定义输入参数
short_ma_length = input.int(55, title="Short MA Length")
long_ma_length = input.int(300, title="Long MA Length")

ema1_length = input.int(576, title="EMA 1 Length")
ema2_length = input.int(676, title="EMA 2 Length")
// 计算移动平均线 
short_ma = ta.sma(close, short_ma_length)
long_ma = ta.sma(close, long_ma_length)
ema1 = ta.ema(close, ema1_length)
ema2 = ta.ema(close, ema2_length)
// 确定买入和卖出信号 
enter_long = ta.crossover(short_ma +5 , ema1)
enter_long2 = ta.crossover(short_ma +5 , long_ma)
enter_long3 =ta.crossover(long_ma+5  , ema1)

exit_long = ta.crossunder(short_ma -5, ema1) 
exit_long2 = ta.crossunder(short_ma -5, long_ma) 
exit_long3 = ta.crossunder(long_ma-5 , ema1)

// 记录进场价格
var float long_stop_loss = na
var float long_take_profit = na

if (enter_long or exit_long  )
    long_stop_loss := close

if (enter_long or exit_long)
    long_take_profit := close

// 根据进场价格计算止损和止盈点数 
stop_loss_points = long_stop_loss /70
take_profit_points  = long_take_profit /140
// 设置固定点数的止损和止
Along_stop_loss = close - stop_loss_points
Along_take_profit = close + take_profit_points
short_stop_loss = close + stop_loss_points
short_take_profit = close - take_profit_points

// 检查持仓利润是否达到300点
long_profit_target_reached = (strategy.position_size > 0 and (close - strategy.position_avg_price) >= take_profit_points)
short_profit_target_reached = (strategy.position_size < 0 and (strategy.position_avg_price - close) >= take_profit_points)

// 即时止损和止盈检查
long_stop_loss_hit = (strategy.position_size > 0 and close <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit = (strategy.position_size > 0 and close >= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit = (strategy.position_size < 0 and close >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit = (strategy.position_size < 0 and close <= strategy.position_avg_price - take_profit_points)
// 上一根K棒的止盈止损检查
long_stop_loss_hit_prev = (strategy.position_size > 0 and low[1] <= strategy.position_avg_price - stop_loss_points)
long_take_profit_hit_prev = (strategy.position_size > 0 and high[1]>= strategy.position_avg_price + take_profit_points)
short_stop_loss_hit_prev = (strategy.position_size < 0 and high[1] >= strategy.position_avg_price + stop_loss_points)
short_take_profit_hit_prev = (strategy.position_size < 0 and low[1] <= strategy.position_avg_price - take_profit_points)

// 创建警报条件
alertcondition(long_stop_loss_hit, title="Long Stop Loss Hit", message="Long position stop loss hit")
alertcondition(long_take_profit_hit, title="Long Take Profit Hit", message="Long position take profit hit")
alertcondition(short_stop_loss_hit, title="Short Stop Loss Hit", message="Short position stop loss hit")
alertcondition(short_take_profit_hit, title="Short Take Profit Hit", message="Short position take profit hit")
// 移动止损输入
initialProfitLevel = input.float(9, title="Initial Profit Level (points)")
trailingStopIncrement = input.float(3, title="Trailing Stop Increment (points)")
if (close - long_take_profit >= 150)
    strategy.exit("多單移平", from_entry="Buy", trail_price=close+5 , trail_offset=5  )
if (close - long_take_profit <= -150)
    strategy.exit("空單移平", from_entry="Sell", trail_price=close-5 , trail_offset=5)

// 执行多单交易
if (enter_long or enter_long2  )
    strategy.entry("Buy", strategy.long, qty=1 , comment = "做多")

if (long_stop_loss_hit or long_take_profit_hit  ) 
    strategy.close("Buy",comment = "多單平倉")
//死亡交叉才跟著做空就打開
if (exit_long  or exit_long2  )
    strategy.entry("Sell" ,strategy.short, qty=1 , comment = "做空")

// 执行空单交易
if ( short_take_profit_hit or short_stop_loss_hit ) 
    strategy.close("Sell",comment = "空單平倉")

// 绘制移动平均线
plot(short_ma, title="Short MA", color=color.blue)
plot(long_ma, title="Long MA", color=color.red)

// 绘制进场和出场点
plotshape(series=enter_long, location=location.belowbar, color=color.green, style=shape.labelup, text="做多")
plotshape(series=exit_long , location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") 
plotshape(series=long_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="多單止盈")  
plotshape(series=short_take_profit_hit , location=location.abovebar, color=color.yellow, style=shape.labeldown, text="空單止盈") 
plotshape(series=short_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="空單止損") 
plotshape(series=long_stop_loss_hit , location=location.abovebar, color=color.black, style=shape.labeldown, text="多單止損") 
 
// 绘制止盈和止损点
plot(series=enter_long ? Along_take_profit : na, title="Take Profit", color=color.green, linewidth=2, style=plot.style_linebr)
plot(series=enter_long ? Along_stop_loss : na, title="Stop Loss", color=color.red, linewidth=2, style=plot.style_linebr)


関連性

もっと