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

ダイナミック・ムービング・メアディアに基づくリバックス・トレーディング戦略

作者: リン・ハーンチャオチャン開催日:2024年2月27日 14:38:45
タグ:

img

概要

この戦略は,選択された株や仮想通貨の潜在的なブレイクアウト機会を特定するために,二重移動平均システムを採用する. 基本的な原則は,短期移動平均が長期移動平均を下回るときに購入し,価格が長期移動平均を再テストするときに売却することです.

戦略の論理

この戦略は,異なる期間の2つの単純な移動平均値 (SMA) を取引信号として利用する.最初のSMAは全体的なトレンド方向を表現するためにより長い期間に有する.第2のSMAは短期的な価格変動を把握するためにより短い期間に有する.

短期SMAが長期SMAを下から越えると,全体的な価格上昇傾向を示し,したがって戦略はロングポジションを開く.価格が長期SMAを再テストするために引き下げると,短期の引き下げが終了し,戦略は停止またはポジションの利益を取ることを検討することを示します.

さらに,この戦略は,極端な状況での取引を避けるために"過売り"と"過買い"の条件を有し,SMAクロスオーバーと合理的な評価基準の両方が満たされている場合にのみポジションを開く.

利点

  • 二重移動平均系は中期傾向を効果的に識別する
  • トレンドフォローとプルバック・トレーディングのメリットを組み合わせます
  • 過剰販売と過剰購入の条件が組み込まれているため,不必要な取引は減少します.

リスク分析

  • 正確な引き戻し終了タイミングを決定するのは困難で,早めに停止する可能性があります.
  • トレンドが変わるとすぐに損失を削減できず 大幅な引き下げが起こり得る
  • パラメータの調節が不十分である場合,過剰な取引または保守的な取引につながる可能性があります.

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

この戦略の最適化にはさらに余地があります.

  1. ボリンジャー帯やKDのようなより高度な技術指標を利用して価格波とトレンドを測定します
  2. 引き戻し完了を決定するために,ボリュームの変化,不安定性などのより多くの要因を組み込む
  3. 収益の可能性を最大化するために動的にポジションサイズ
  4. KAMA,イチモク雲,低タイムフレーム信号でストップロスのロジックを最適化

結論

この戦略は,機会を検出するために二重移動平均システムを使用してトレンドフォローとプルバック取引の強みを組み合わせます.同時に,埋め込まれたオーバーバイト/オーバーセール条件は不必要なポジション開設を回避します.これはより深い研究と最適化に値する非常に実践的な量子取引戦略です.


/*backtest
start: 2023-02-20 00:00:00
end: 2024-02-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version=5
strategy("Profitable Pullback Trading Strategy", overlay=true,initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Inputs
ma_length1 = input.int(280,'MA length 1', step = 10,group = 'Moving Avg. Parameters', inline = 'MA')
ma_length2 = input.int(13,'MA length 2', step = 1,group = 'Moving Avg. Parameters', inline = 'MA')
sl = input.float(title="Stop Loss (%)", defval=0.07, step=0.1, group="Moving Avg. Parameters")
too_deep    = input.float(title="Too Deep (%)", defval=0.27, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')
too_thin    = input.float(title="Too Thin (%)", defval=0.03, step=0.01, group="Too Deep and Thin conditions", inline = 'Too')

// Calculations
ma1 = ta.sma(close,ma_length1)
ma2 = ta.sma(close,ma_length2)
too_deep2   = (ma2/ma1-1) < too_deep
too_thin2   = (ma2/ma1-1) > too_thin

// Entry and close condtions
var float buy_price = 0
buy_condition = (close > ma1) and (close < ma2) and strategy.position_size == 0 and too_deep2 and too_thin2
close_condition1  = (close > ma2) and strategy.position_size > 0 and (close < low[1])
stop_distance = strategy.position_size > 0 ? ((buy_price - close) / close) : na
close_condition2 = strategy.position_size > 0 and stop_distance > sl
stop_price = strategy.position_size > 0 ? buy_price - (buy_price * sl) : na

// Entry and close orders
if buy_condition
    strategy.entry('Long',strategy.long)
if buy_condition[1]
    buy_price := open
if close_condition1 or close_condition2
    strategy.close('Long',comment="Exit" + (close_condition2 ? "SL=true" : ""))
    buy_price := na

plot(ma1,color = color.blue)
plot(ma2,color = color.orange)



もっと