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

MA,SMA,MA傾斜,ストップ損失を後押しし,再入力

作者: リン・ハーンチャオチャン,日付: 2024-06-07 16:41:53
タグ:マルチSMAマルチ

img

概要

この戦略は,移動平均値 (MA) の傾斜とMAに対する価格の相対位置に基づいて取引決定を行う.MA傾斜が最小傾斜の値よりも大きく,価格がMAを超えると,戦略はロングポジションを開始する.さらに,戦略はリスクを管理するためにトライリングストップロスを採用し,特定の条件下で再入力を可能にします.戦略は,動的なストップロスおよび再入力メカニズムを通じて収益とリスクを最適化しながら上向きの機会を把握することを目的としています.

戦略原則

  1. 基本動向指数として,特定の期間における単純な動向平均 (SMA) を計算する.
  2. 現在のトレンドの強さを決定するために,指定されたウィンドウサイズ内のSMAの傾斜を計算します.
  3. SMAの傾きが最小傾きの値を超え,価格がSMAを超えると,市場は上昇傾向にあると考え,ロングポジションを開始する.
  4. ポジションが開かれたら,ストップ・ロスのレベルを,現在の価格と特定のパーセントに基づいて動的に調整するために,ストップ・ロスの後続メカニズムを使用します.
  5. ストップ・ロスの値に達すると,ストラテジーはポジションを閉じてストップ・ロスの発生を意味します.
  6. ストップ・ロスの発生後,価格がSMAを下回り,特定の割合で上昇すると,ストラテジーは市場に戻ります.
  7. 価格がSMAを下回ると,戦略は直接ポジションを閉じる.

利点分析

  1. トレンドフォロー:SMA傾斜とSMAに対する価格の相対位置を使用して,戦略は上昇傾向で利益を得ることに役立ちます.
  2. ダイナミックストップ・ロース: トレイリング・ストップ・ロースメカニズムは,価格変動に基づいてストップ・ロースレベルをダイナミックに調整し,利益をより良く保護し,損失を制限します.
  3. ストップ・ロスの発生後,価格はSMAを下回る特定の割合で引き下げられ,潜在的なリバウンド機会を可能にすると,戦略は市場に戻ります.
  4. 柔軟なパラメータ:この戦略は,SMA期間,最小傾斜限界,ストップロスの後続パーセントなど,さまざまな市場状況に基づいて最適化できる複数の調整可能なパラメータを提供しています.

リスク分析

  1. パラメータ敏感性: 戦略のパフォーマンスがパラメータ設定に敏感であり,不適切なパラメータ選択は不適正な結果につながる可能性があります.
  2. トレンド認識: 戦略は主にSMA傾斜とSMAに対する価格の相対位置に依存し,特定の市場条件下で誤った信号を生む傾向を特定します.
  3. ストップ・ロスの頻度: トレイリング・ストップ・ロスのメカニズムは,特に非常に不安定な市場状況下で,ストップ・ロスの頻度が高くなり,戦略の全体的なパフォーマンスに影響を与える可能性があります.
  4. 再参入リスク: 再参入メカニズムは,再参入後,再参入戦略が再参入し,損失を増大させる可能性があります.

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

  1. トレンド確認: トレンド認識の精度を向上させるために,SMA傾斜と価格位置に追加的な技術指標または価格行動パターンを組み込むことを検討してください.
  2. ストップ・ロスの最適化: 不安定性やサポート/レジスタンスに基づくストップ・ロスのような代替ストップ・ロスの方法を探求し,異なる市場状況により良く適応する.
  3. 再入場条件: 価格のリトラセシンの規模と期間などの要因を考慮して再入場条件を精査し,不良の再入場信号をフィルタリングします.
  4. ポジション・サイジング: ポジション・サイジング・メカニズムを導入し,市場の変動または他のリスク指標に基づいて各取引のサイズを調整し,全体的なリスク露出を制御するのに役立ちます.

概要

この戦略は,移動平均の傾斜と移動平均に対する価格の相対的位置に基づいてトレンドを決定する.トレーリングストップ損失と条件付き再入行メカニズムを使用して取引を管理する.戦略の強みは,トレンドフォロー能力,ダイナミックストップ損失保護,再入行機会の把握にある.しかし,この戦略にはパラメータ敏感性,トレンド認識エラー,ストップ損失頻度,再入行リスクなどの潜在的な欠点もあります.最適化方向性には,トレンド認識,ストップ損失方法,再入行条件,ポジションサイズを精製することが含まれます.戦略を実践する際には,特定の市場特性と取引スタイルに基づいて慎重に評価し調整することが重要です.


/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA Incline Strategy with Trailing Stop-Loss and Conditional Re-Entry", overlay=true, calc_on_every_tick=true)

// Input parameters
windowSize = input.int(10, title="Window Size")
maLength = input.int(150, title="Moving Average Length")
minSlope = input.float(0.001, title="Minimum Slope")
trailingStopPercentage = input.float(2.8, title="Trailing Stop Percentage (%)") / 100
reEntryPercentage = input.float(4.2, title="Re-Entry Percentage Above MA (%)") / 100

// Calculate the moving average
ma = ta.sma(close, maLength)

// Calculate the slope of the moving average over the window size
previousMa = ta.sma(close[windowSize], maLength)
slopeMa = (ma - previousMa) / windowSize

// Check conditions
isAboveMinSlope = slopeMa > minSlope
isAboveMa = close > ma

// Variables to track stop loss and re-entry condition
var bool stopLossOccurred = false
var float trailStopPrice = na
// Buy condition
buyCondition = isAboveMinSlope and isAboveMa and ((not stopLossOccurred) or (stopLossOccurred and low < ma * (1 + reEntryPercentage)))

// Execute strategy
if (buyCondition and strategy.opentrades == 0)
    if (stopLossOccurred and close < ma * (1 + reEntryPercentage))
        strategy.entry("Long", strategy.long)
        stopLossOccurred := false
    else if (not stopLossOccurred)
        strategy.entry("Long", strategy.long)

// Trailing stop-loss
if (strategy.opentrades == 1)
    // Calculate the trailing stop price
    trailStopPrice := close * (1 - trailingStopPercentage)
    // Use the built-in strategy.exit function with the trailing stop
    strategy.exit("Trail Stop", "Long", stop=close * (1 - trailingStopPercentage))

// Exit condition
sellCondition = ta.crossunder(close, ma)
if (sellCondition and strategy.opentrades == 1)
    strategy.close("Long")

// Check if stop loss occurred
if (strategy.closedtrades > 0)
    lastExitPrice = strategy.closedtrades.exit_price(strategy.closedtrades - 1)
    if (not na(trailStopPrice) and lastExitPrice <= trailStopPrice)
        stopLossOccurred := true

// Reset stop loss flag if the price crosses below the MA
if (ta.crossunder(close, ma))
    stopLossOccurred := false


関連性

もっと