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

リスク・リターン比率と技術分析に基づくブールフラグ・ブレイクストラテジー

作者: リン・ハーンチャオチャン開催日:2024年5月28日10時47分51秒
タグ:

img

概要

この戦略はブルフラッグパターンに基づいている.価格がフラッグレンジの高値を超えると購入し,フラッグレンジの下値にストップロスを設定し,リスク・リターン比に応じて利益目標を設定する.この戦略は,フラッグレンジを識別するために最高値と最低値関数を使用して,現在の閉値と前のキャンドルの最高値を比較してブレイクを決定する.

戦略原則

  1. 高値と低値関数を使って高値と低値の範囲を計算し,現在の価格が高値を超えているかどうかを判断します.
  2. 入場: 現在の閉店価格が前回のキャンドルの最高価格を上回り,前回のキャンドルの最高価格がフラッグ高値を下回る場合は,購入します.
  3. ストップ損失:ストップ損失価格は,バッファ値を引いたフラグ低値に設定されます.
  4. 目標価格 = 入場価格 + (入場価格 - ストップ損失価格) * リスク・報酬比

戦略 の 利点

  1. 強いトレンドで引き下げの機会を捉えることができます
  2. ストップ・ロスはフラグ・ローに設定され,リスクは制御可能になります.
  3. 目標価格を設定し,より高い利益を得るために リスク・リターン比を利用します
  4. コードロジックは明確で,TradingViewの内蔵機能を利用し,理解し変更を容易にする.

戦略リスク

  1. 不安定な市場や傾向が不明確である場合,価格がフラグから突破してすぐに逆転し,大幅な引き下げにつながる可能性があります.
  2. バッファーの値が正しく設定されていない場合,早期ストップ損失が発生する可能性があります.
  3. 実際のリスク・リターン比は設定値に達しない可能性があります.
  4. この戦略は 変形した旗パターンでは失敗する可能性があります

戦略の最適化方向

  1. シグナルの品質を改善するために,取引量の変化,移動平均の方向など,シグナルフィルターにより多くの条件を追加することを検討します.
  2. 異なる市場特性のパラメータを最適化します.例えば,フラグ範囲の長さ,リスク/リターン比,ストップ損失バッファ値など.
  3. 取引先を大量に設定し,ダイナミックストップ損失を使用することでリスクのリスクを軽減することを検討する.
  4. ポジション管理を追加して 全体のリスクをコントロールします

概要

この戦略は,クラシックなブルフラッグパターンに基づいたブレークアウト戦略であり,フラッグレンジと価格ブレークアウトを特定することによってトレンド継続の機会を把握する.この戦略の利点は明確な論理と制御可能なリスクであるが,不安定な市場やトレンド逆転における特定のリスクに直面する.シグナル,ダイナミックパラメータ,ポジションマネジメント,などを最適化するために,戦略の強度と収益性を高めるために改善を行うことができる.


/*backtest
start: 2023-05-22 00:00:00
end: 2024-05-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bull Flag Breakout", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)

// Параметры стратегии
riskRewardRatio = 3.0
flagLength = input.int(5, title="Flag Length")
stopLossBuffer = input.float(0.01, title="Stop Loss Buffer", step=0.001)

// Функция для вычисления стоп-лосса и тейк-профита
calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio) =>
    takeProfitPrice = entryPrice + (entryPrice - stopLossPrice) * riskRewardRatio
    [stopLossPrice, takeProfitPrice]

// Найти минимум и максимум флага
flagLow = ta.lowest(low, flagLength)
flagHigh = ta.highest(high, flagLength)

// Условия для формирования бычьего флага
isBullFlag = high[1] < flagHigh and close > high[1]

// Условия для входа в сделку
if (isBullFlag)
    entryPrice = close
    stopLossPrice = flagLow - stopLossBuffer
    [calculatedStopLoss, calculatedTakeProfit] = calcRiskRewardPrice(entryPrice, stopLossPrice, riskRewardRatio)
    
    // Открыть длинную позицию
    strategy.entry("Bull Flag Long", strategy.long)
    strategy.exit("Take Profit", "Bull Flag Long", limit=calculatedTakeProfit)
    strategy.exit("Stop Loss", "Bull Flag Long", stop=calculatedStopLoss)
    label.new(bar_index, high, "Buy", color=color.green, textcolor=color.white, style=label.style_label_down)


もっと