ブレイクバック・コールバック・ロング・戦略

作者: リン・ハーンチャオチャン,日付: 2024-02-22 15:41:53
タグ:

img

概要

この戦略の主なアイデアは,特定のキャンドルスタイクパターンが出現した後,ロングポジションを開くことです.つまり,下向きのギャップ (カラーバー) の後に開かれた次のバーでロングポジションを開くこと.その後,前回のバーの低値に引き戻します.

戦略の論理

この戦略の具体的な条件は,前回のバーが前回の2つのバーと比較して低低と高高を表示し,下向きのギャップを示し,現在のバーの低値が前回のバーの低値より小さいか同等である.この2つの条件が満たされた場合,次のバーがオープンするとロングポジションが開かれます.

ロングポジションを開いた後,ストップ・ロスは前回のバーの最低値であるプルバック・ローに設定され,テイク・プロフィートはエントリー価格より2%以上に設定されます.テイク・プロフィートまたはストップ・ロスは触れたとき,ポジションは閉鎖されます.

利点分析

この戦略の最大の利点は,特定のキャンドルスタイクパターンの後に高い確率のリバウンド機会を掴むことです.リバックが続くダウンサイドギャップは,このレベルでの販売圧力が枯渇した可能性があることを示唆する非常に強力な技術的なパターンを表しています.したがって,この戦略は短期取引により適しています.

リスク分析

引き下げが終了した後,継続的なダウンダウンが主なリスクです.引き下げの底辺でロングポジションを取っているので,時間内に損失を削減できない場合,重大な損失が発生する可能性があります.また,引き下げ範囲が小さい場合,ストップロスはあまりにも緊密に設定され,ストップアウトを引き起こす可能性があります.したがって,この戦略は,市場注意とタイムリーストップロスを必要とする短期取引により好ましいです.

最適化方向

他の技術指標は,MACDの金クロスへのエントリー,またはエントリー前に典型的な価格がサポートレベルにあるかどうかをチェックするなど,シグナル精度と戦略の安定性を向上させるために組み込める.また,最適なパラメータセットを見つけるために異なる製品とタイムフレームでウォークフォワード最適化が行うことができる.機械学習技術は,自動パラメータチューニングにも利用できる.

概要

概要すると,これは典型的な短期的なブレイクバック・プルバック・ロング戦略である.それは,プルバックが続く下方ギャップの強いパターンの後,リバウンド機会を捕捉する.しかし,損失を間に切ることができなければ,大きな損失のリスクも伴う.有利な結果のために頻繁な市場モニタリングが必要である.より多くの指標とパラメータ最適化によるシグナルをフィルタリングすることによってさらなる改善が可能である.


/*backtest
start: 2024-01-22 00:00:00
end: 2024-02-21 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//  Created by Leon Ross
//study(title="OutsideDownOpenLower", shorttitle="ODOL", overlay=true)
strategy(title = "Outside", shorttitle = "OB", overlay = true )
  

//Window of time
//start     = timestamp(2018, 01, 01, 00, 00)  // backtest start window
//finish    = timestamp(2018, 12, 31, 23, 59)        // backtest finish window
//window()  => time >= start and time <= finish ? true : false // create function "within window of time"  

//Conditions
outsideBar = low < low[1] and high > high[1] and close < open
allConditions = outsideBar
  
//Stop and Take Profit as percentages
//inpTakeProfit   = input(2, title='Take Profit %', type=float)/100
//takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit)
//useTakeProfit   = inpTakeProfit  > 0 ?  takeProfitValue : na
//inpStopLoss     = input(1, title='Stop Loss %', type=float)/100
//stopLossValue = strategy.position_avg_price * (1 - inpStopLoss)
//useStopLoss     = inpStopLoss    > 0 ?  stopLossValue   : na
//entry = strategy.position_avg_price



//Stop as last bars low and profit as percentage
entry = strategy.position_avg_price
inpTakeProfit   = input(2.0, title='Take Profit %', type=float)/100
takeProfitValue = strategy.position_avg_price * (1 + inpTakeProfit)
useTakeProfit   = inpTakeProfit  > 0 ?  takeProfitValue : na
inpStopLoss     = valuewhen(allConditions, low, 0)
stopLossValue = inpStopLoss
useStopLoss     = inpStopLoss    > 0 ?  stopLossValue   : na
    



//Plots
bgcolor(allConditions ==1 ? aqua : na, transp=70)
plot(entry, color=blue, style=linebr, linewidth=2)
plot(useStopLoss, color=red, style=linebr, linewidth=2)
plot(useTakeProfit, color=green, style=linebr, linewidth=2)


//Entires
strategy.entry(id = "Long", long = true, when = allConditions) // use function or simple condition to decide when to get in

//Exits
//if (barssince(allConditions) == 2)
    //strategy.close("Long")
//else
strategy.exit("Exit Long", from_entry = "Long", stop = useStopLoss)







もっと