ブレイクアウト回帰戦略

作者: リン・ハーンチャオチャン,日付: 2024-03-01 11:58:56
タグ:

img

概要

これは,原油先物市場の変動をキャピタライズするために設計された体系的なアプローチです. ろうそくの平均範囲を測定します. 速い移動平均が遅いよりも大きい場合は,ろうそくが大きいことを意味します. ゆっくり移動平均が速いよりも大きい場合は,ろうそくが小さいことを意味します.

この原理に従って,潜在的な長と短エントリーポイントを識別します. ポジションは固定数のキャンドルのみに保持されます. Exit after bars入力によって制御されます.

戦略の論理

  1. 最新の9バーの最も高い閉じる価格をブレイク基準として計算する.
  2. 最新50バーの最も低い閉じる価格を,ブレイク基準として計算する.
  3. 最新の5バーと20バーの平均波動性を比較して,キャンドルスタイクパターンが拡大するか収縮しているか判断します.
  4. 長い信号と短い信号を識別します. 接近は最高接近とろうそくの収縮に等しいとき,長い行く; 接近は最低接近とろうそくの収縮に等しいとき,短い行く
  5. ブレイクアウト後の固定数のバー後に閉じる位置: 調整可能なパラメータ

利点分析

  1. 逆転戦略,歴史的な極端と比較して方向を判断
  2. 変動と組み合わせて 偽のブレイクを避ける
  3. 特定の利益と引き上げを回避する出口ロックのための固定数のバー

リスク分析

  1. 市場構造の変化に伴い,歴史的な極端は変化し,信号は失敗する可能性があります
  2. 偽の脱出は 罠にかけられる
  3. 不適切な出口間隔は,より大きな利益を失うか,損失を増やす可能性があります.

最適化

  1. 極端なパラメータは市場統計によって最適化できます
  2. 実際のブレイクの可能性を評価するために波動性指標を追加します.
  3. バックテストの結果を通して出口バーの数を最適化

概要

この戦略は,短期のトレンドを決定するために,波動性戦略に属するブレイクアウトとレグレッションを利用する.パラメータを最適化し,偽のブレイクアウト確率を決定するために波動性メトリックを追加することで,収益性を高めることができます.また,迅速な出口メカニズムは一部の利益をロックし,リスクを効果的に制御します.短期取引のための補助ツールとして機能し,パラメータチューニングを通じて長期的な取引信号も生成できます.


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Celestial_Logic

//@version=5
strategy("Crudeoil Breakout strategy", overlay = true, initial_capital = 20000, default_qty_type = strategy.fixed, default_qty_value = 1)


highestCloseLookback = input(9 , title = 'Highest Close lookback')
lowestCloseLookback  = input(50, title = 'Lowest Close lookback'  ) 

exitAfter = input(10, title = 'Exit after bars')

hc = ta.highest(close,highestCloseLookback)
lc = ta.lowest(close,lowestCloseLookback)

rangeFilter = (ta.sma( (high - low), 5 ) > ta.sma((high-low), 20) ) // Candles getting bigger.

longCondition  = (close == hc ) and not rangeFilter
shortCondition = (close == lc ) and not rangeFilter
if  longCondition
    strategy.entry(id = 'long', direction = strategy.long) 
if shortCondition
    strategy.entry(id = 'short', direction = strategy.short)



var int longsince = 0 
var int shortsince = 0 

if strategy.position_size > 0 
    longsince += 1
else
    longsince := 0

if strategy.position_size < 0 
    shortsince += 1 
else 
    shortsince := 0

if longsince >= exitAfter 
    strategy.close(id = 'long', comment = 'long close')
if shortsince >= exitAfter
    strategy.close(id = 'short', comment = 'short close')



もっと