効率的な振動突破のダブルストップ利益とストップ損失戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-01 14:46:00
タグ:

img

概要

これは,チャネル指標とブレイクアウト原則に基づいて設計された高効率の双方向取引戦略です. 1 分間のタイムフレームで株や暗号通貨の高勝率の双方向取引を達成することができます.

戦略の論理

この戦略は,SMAインジケーターを使用してチャネルを構築する. 価格がチャネルの上を突破するとロングに入り,価格がチャネル下を突破するとショートに入ります. 利益とストップロスは,利益をロックし,リスクを制御するために設定されています.

特に,戦略はチャネルの上下レールを計算する.上下レールは,閉じる価格の10期SMAを1.02で倍する.下下レールは,最低価格の10期SMAを1.02で割る.閉じる価格が上下レールの上を突破するとロング,閉じる価格が下下レールの下を突破するとショート.

ロングに行くと,2つのテイク・プロフィートレベルがそれぞれ1%と3%で設定され,ストップ・ロスは3%である.ショートに行くには同様の利益/損失の設定がある.ブレイクアウト原則を通じて,戦略は比較的高いエントリー・ウィン率を達成することができる.ダブルテイク・プロフィートを介して,より多くの利益をロックすることができる;ストップ・ロスを通して,取引損失額を制御する.

利点分析

このようなチャネルブレイク戦略には 明確なエントリー信号,高い運用頻度,多レベルの利益採取などのような利点があります 主な利点は以下の通りです

  1. チャネルインジケーターを使用して価格振動範囲を特定し,ブレイクアウトポイントを選択することで,比較的高い勝利率を得ることができます.

  2. 1分チャートで動作し,より多くの機会を把握し,スピード取引のニーズに対応します.

  3. 2つの取利益レベルを持つことは,トレンドが順調に進むと,より多くの利益を得ることができます. 1つの取利益目標と比較して,高い報酬です.

  4. 比較的広いストップロスは,価格動きに一定の空間を与え,早期ストップロスを避ける.

リスク分析

このようなブレイクアウト戦略における最大のリスクは,損失につながる偽ブレイクアウトである.また,大きなストップロスは損失リスクを増加させる可能性があります.主なリスクポイントは:

  1. ブレイクシグナルは誤ったブレイクシグナルであり,利益を得たり,ストップロスを達成することができない.技術分析における一般的な問題である.パラメータ最適化は避けるのに役立ちます.

  2. 3%のストップロスの限界は 取引者が耐え難いかもしれません 個人的なリスク耐性に基づいて調整してください

  3. この戦略は,より短期的な取引に適しており,監視が必要です. 市場を監視できない場合,ポジションを削減します.

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

このようなトレンドブレークアウト戦略は主に以下の側面で最適化することができます:

  1. 偽のブレイクを減らすために より信頼性の高いものを見つけます

  2. 最適なパラメータ組み合わせを見つけます

  3. ボリュームフィルターなどの複雑な入力メカニズムをテストします

  4. パラメータの自己適応を達成するために,異なる製品特性に適応可能なパラメータコンボを設定する.

  5. 自動ストップ損失メカニズムを追加し,時間の経過とともにストップ損失を動的に調整します

結論

これはチャネル指標に基づいた効率的な二方向取引戦略です.ブレイクアウト原則,報酬をロックするためにダブルテイク利益,リスクを制御するためにストップ損失を通じて市場に参入します.さらなる最適化はさらに良い結果を達成することができます. しかし,トレーダーは依然として偽ブレイクアウトなどのリスクに気をつけなければなりません.


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

//@version=4
strategy("Erweiterte SSL Channel Strategy mit 2 TPs, SL und BE", overlay=true)

period = input(title="Period", defval=10)
len = input(title="Length", defval=10)
multiplier = input(title="Multiplier", defval=1.0, minval=1.0)
tp1Percent = input(title="Take Profit 1 (%)", defval=1.0) / 100
tp2Percent = input(title="Take Profit 2 (%)", defval=20.0) / 100
slPercent = input(title="Stop Loss (%)", defval=3.0) / 100

var float tp1Price = na
var float tp2Price = na
var float slPrice = na
var bool tp1Reached = false

smaHigh = sma(high * multiplier, len)
smaLow = sma(low / multiplier, len)

Hlv = 0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : nz(Hlv[1])
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)

longCondition = crossover(close, sslUp)
shortCondition = crossunder(close, sslDown)

if (longCondition)
    strategy.entry("Long", strategy.long)
    tp1Price := strategy.position_avg_price * (1 + tp1Percent)
    tp2Price := strategy.position_avg_price * (1 + tp2Percent)
    slPrice := strategy.position_avg_price * (1 - slPercent)
    tp1Reached := false

if (shortCondition)
    strategy.entry("Short", strategy.short)
    tp1Price := strategy.position_avg_price * (1 - tp1Percent)
    tp2Price := strategy.position_avg_price * (1 - tp2Percent)
    slPrice := strategy.position_avg_price * (1 + slPercent)
    tp1Reached := false

// Take Profit, Break-even und Stop-Loss Logik
if (strategy.position_size > 0) // Long-Positionen
    if (not tp1Reached and close >= tp1Price)
        strategy.close("Long", qty_percent = 50)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close < tp1Price)
        strategy.exit("BE Long", "Long", stop = strategy.position_avg_price)
    if (close >= tp2Price)
        strategy.close("Long", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Long", "Long", stop = slPrice)

if (strategy.position_size < 0) // Short-Positionen
    if (not tp1Reached and close <= tp1Price)
        strategy.close("Short", qty_percent = 50)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
        tp1Reached := true
    if (tp1Reached and close > tp1Price)
        strategy.exit("BE Short", "Short", stop = strategy.position_avg_price)
    if (close <= tp2Price)
        strategy.close("Short", qty_percent = 100)
    if (not tp1Reached)
        strategy.exit("SL Short", "Short", stop = slPrice)


もっと