量と価格の復旧 多重取上げ利益による高度な戦略

作者: リン・ハーンチャオチャン開催日:2023年12月12日 15:39:19
タグ:

img

概要

この戦略は,移動平均クロスオーバー,相対強度指数 (RSI),および大幅に増幅された取引量を組み合わせて,高いボリュームのピークで価格の一定パーセントの引き下げを検出した後,ロング/ショートポジションを取ります. 利益の異なるレベルをロックするために3階層の利益の引き取りオーダーを設定します. また,価格が引き続き有利に動いていれば,追加の利益を得るためにオプションのトレーリングストップ損失機能もあります.

原則

RSIは,トレンド方向の変化の早期信号を提供する.RSIインジケーターは,より強固なエントリーシグナルのためにこれらのシナリオを避けるために過買い/過売り条件を評価する.平均量よりも著しい増加は,市場の注意を惹きつける潜在的な価格動きをシグナルする.これらのボリュームピークはエントリーシグナルの強さを強化する.ボリュームピークと価格上昇後,価格とボリュームが指定されたパーセントを撤回したときにエントリーオーダーが起動され,潜在的な訂正または逆転を示します.利益を実現するために,3つの段階的なTPオーダーが使用されます.各TPレベルは,事前に決定した利益目標に達するとポジションの一部を閉鎖します.TPにはオプションのトレーリングストップ機能が利用できます.価格がTP目標に達すると,価格が好意的に維持されれば,より多くの利益を得るためにトレーリングストップポジションがフォローされます.

同じ原則は,ショートエントリーとショートアウトシグナルにも適用されます.この戦略は,ロングとショートの両方を便利にします.

利点分析

この戦略の主な利点は:

  1. 急速な/遅いMAsのクロスオーバーとRSIは強力なエントリーシグナルを形成し,過買い/過売り領域を回避し,勝率を増やす.

  2. ボリュームのピークは,大きな価格変動がポジションの確立のために捉えられ,信号力を強化することを保証します.

  3. 価格/volumetrollbackメカニズムは,逆転または上昇の機会を把握するために,エントリータイミングの精度を向上させます.

  4. リスクの耐性に基づいて 利潤を固定するために 価格上昇傾向を利用します

  5. 選択的なトレーリングストップは,市場の変動に応じて,より高い利益を得る機会を保持しながら,資本の維持を可能にする柔軟性を可能にします.

  6. 長期取引と短期取引の両方に適用され,上向きまたは下向きの市場で利益を得ることができ,有用性を高めます.

リスク分析

慎重 に 設計 さ れ て い た とき も,金融 製品 の 取引 に は リスク が あり ます.

  1. MAクロスオーバーは常にトレンドを正確に決定するわけではありません.不適切なMAパラメータを使用した場合,間違った信号が発生することがあります.

  2. 誤ったRSI期間設定は,過買い/過売りエリアを避けるのに失敗する可能性があります. 期間は市場ごとに調整する必要があります.

  3. 総量上昇は必ずしも重要な価格変動に完全に一致するわけではない.総量基準には細かな調整が必要である.

  4. 過剰なまたは不十分な価格/量減少は,エントリータイミングに影響を与えます.この要因も市場に基づく調整が必要です.

  5. 前もって設定された取利益レベルは,TPオーダーの完全な実行を保証することはできません. 急な市場の変動は,滑り込みを引き起こす可能性があります.

  6. 遅延ストップ損失があまりにも幅広く ポジションを早速終了し より大きな利益を失う可能性があります

これらのリスクは 戦略の信頼性を確保するために コード最適化,パラメータ調整,そして厳格なバックテストを 要求します

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

さらに改善:

  1. ボリンジャー帯やKDなどの他の指標を追加して 入場決定を支援し,正確性を向上させます

  2. LSTMのような機械学習モデルを組み込み,動的なMAsを確立し,最新の市場状況にパラメータを自動的に適応させ,トレンドの把握を向上させる.

  3. 市場変動に基づいて動的ストップ・ロスト/利益採取を組み込み,それに応じてレベルを自動調整する.

  4. コインテグレーション分析を利用して,市場全体の価格動向と個々の株間の相関に応じて,最適なエントリータイミングを得るために最適に引き下げ因子を選択します.

  5. マルチファクタルのモデルを活用し 感情分析や 関連ルールマイニングなどを行って 価格/量変化の相関度が最も高い株を選択し 素晴らしい業績向上戦略を実施します

結論

この戦略は,拡張後の中間期から短期間のトレーダーにとって優れた戦略です.最適化に基づいたますます堅牢で知的な機能により,リスクがしっかりとチェックされ,市場を上回る収益を提供するために努力しながら,ライブトレーディングに大きな実用的なメリットを持っています. 漸進的に高度な定量戦略として,安定した慎重な取引を例にします.


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

//@version=4
strategy("Advanced Strategy with Volume and Price Retracement and Multi-Take Profit (USDT)", overlay=true)

// Parametreler
fastLength = input(12, minval=1, title="Fast Moving Average")
slowLength = input(26, minval=1, title="Slow Moving Average")
rsiPeriod = input(14, minval=1, title="RSI Period")
volLength = input(20, minval=1, title="Volume MA Length")
volMultiplier = input(2.0, title="Volume Spike Multiplier")
trailOffset = input(1, title="Trailing Offset (%)")
usdtPerTrade = input(50000, title="USDT per Trade")
retraceFactor = input(0.8, title="Retracement Factor for Entry")
takeProfit1 = input(1, title="Take Profit 1 (%)")
takeProfit2 = input(2, title="Take Profit 2 (%)")
takeProfit3 = input(3, title="Take Profit 3 (%)")
trailForTP = input(true, title="Use Trailing Stop for Take Profits")

// Hesaplamalar
fastMA = sma(close, fastLength)
slowMA = sma(close, slowLength)
rsi = rsi(close, rsiPeriod)
volMA = sma(volume, volLength)
volumeSpike = volume > volMA * volMultiplier

// Durum Değişkenleri ve Saklanan Değerler
var float spikeVolume = na
var float spikePrice = na
var int direction = 0

// Alım/Satım Sinyalleri
longCondition = crossover(fastMA, slowMA) and rsi < 70
shortCondition = crossunder(fastMA, slowMA) and rsi > 30

// Hacim Spike ve Fiyat Hareketinin Saklanması
if (longCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := 1
else if (shortCondition and volumeSpike)
    spikeVolume := volume
    spikePrice := close
    direction := -1

// Retracement Kontrolü ve Giriş Emirleri
if (direction == 1 and volume < spikeVolume * retraceFactor and close < spikePrice * (1 - trailOffset / 100))
    strategy.entry("Long", strategy.long, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0
else if (direction == -1 and volume < spikeVolume * retraceFactor and close > spikePrice * (1 + trailOffset / 100))
    strategy.entry("Short", strategy.short, qty=usdtPerTrade / close)
    spikeVolume := na
    direction := 0

// Take Profit Emirleri
if strategy.position_size > 0
    strategy.exit("TP1", "Long", limit=strategy.position_avg_price * (1 + takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Long", limit=strategy.position_avg_price * (1 + takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Long", limit=strategy.position_avg_price * (1 + takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

if strategy.position_size < 0
    strategy.exit("TP1", "Short", limit=strategy.position_avg_price * (1 - takeProfit1 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) / 2 : na)
    strategy.exit("TP2", "Short", limit=strategy.position_avg_price * (1 - takeProfit2 / 100), qty_percent=33, trail_offset=trailForTP ? atr(14) : na)
    strategy.exit("TP3", "Short", limit=strategy.position_avg_price * (1 - takeProfit3 / 100), qty_percent=34, trail_offset=trailForTP ? atr(14) * 1.5 : na)

// Pozisyon çıkışları
strategy.close("Long", when=shortCondition)
strategy.close("Short", when=longCondition)


もっと