モメント・ブレークスルーTM戦略

作者: リン・ハーンチャオチャン,日付: 2023-11-21 15:07:38
タグ:

img

概要

これは,ボリンジャーバンド指標BBと組み合わせたモメンタム指標RSIを使用するバイナリーオプションブレークスルー取引戦略です. タイムリー性に関しては,TTM指標は,市場が統合状態にあるかどうかを判断するために使用され,それによってエントリーの信頼性が向上します.

原則

戦略の基本論理は,Bollinger BandsとRSIインジケーターをベースに突破方向を決定する.具体的には,戦略はBBの20期とRSIの30期を使用する.市場が圧縮を突破すると,RSIが一定の変動幅 (30-70) にあり,BBが大きな突破幅 (0.15倍の変動幅) を有するときに開拓方向を決定する.また,戦略は,不必要な繰り返し開拓を避けるためにポジションを開く前に以前のKラインの開拓方向もチェックする.

利点

この戦略の主な利点は以下の通りです.

  1. TTM指標を使用して市場の取引状態を判断し,統合市場での無意味な取引を回避する. TTMS指標の圧縮と拡張により,主要なトレンド方向性をより良く決定し,ポジション開設の基準を提供することができます.

  2. RSIとBBの組み合わせは,開設ポジションをより信頼性のあるものにする.RSIインジケーターは価格が過買いまたは過売れているかどうかを判断する.BBインジケーターは価格が大きな突破が起きたかどうかを判断する.両者の組み合わせは,戦略が強い方向的トレンドから利益を得ることを可能にします.

  3. 戦略論理は,繰り返し開設を避けるような特定の最適化を考慮します.これは,不必要な利益と損失の切り替えを一定程度削減することができます.

リスク分析

この戦略の主なリスクは,

  1. 破綻失敗リスク.TTMインジケーターがトレンドを正確に判断できない場合,RSIとBBは依然として誤ったブレイクアウトがある可能性があります.この時点で,戦略はインジケーターに基づいてポジションを開き,最終的に罠にかかれることがあります.このリスクを制御するために,ポジションのサイズを減らすことを検討してください.

  2. 市場が振動するときに損することは容易である.市場が振動状態にあるとき,TTMインジケーターのパフォーマンスが理想的ではない.RSIとBBインジケーターも複数の誤った信号を与える可能性があります.この時点で損失を形成することは非常に簡単です.このリスクを制御するために,明らかな振動する市場でこの戦略を使用しないでください.

最適化

戦略は以下の側面で最適化できます.

  1. TTM指標のパラメータを最適化して,指標の長さと因数を調整します.これはTTMの統合と突破に関する判断を改善することができます.

  2. RSIとBBパラメータを最適化する. サイクルの番号を適切に短縮することで,より迅速で正確な突破信号を得ることができます. 同時に,BBチャネルの帯域幅は異なる値もテストできます.

  3. ストップ損失ロジックを増やす. 戦略はストップ損失を設定していないため,単一の損失が大きすぎるのを防ぐために,移動ストップ損失または予想ストップ損失を追加することを検討してください.

  4. パラメータの異なる種類をテストすることができます.現在の戦略は1分チャートで実行されます.他のパラメータの種類 (5分など) に対して,指標パラメータを再テストし,より良いパラメータ組み合わせを得るために最適化することができます.

結論

この戦略は,トレンド精度を決定するためにTTMを利用し,突破方向を決定するためにRSIとBBを使用する.単純な突破戦略と比較して,そのエントリータイミングと指標パラメータ最適化は有利で,収益性を高めることができます.しかし,この戦略は,振動する市場で失敗と適応性の問題も引き起こします.これは,使用中にポジションサイズ調整し,振動する市場で使用することを避ける必要があります.さらなるパラメータとストップ損失最適化により,この戦略は信頼できるオプション取引戦略になることができます.


/*backtest
start: 2022-11-14 00:00:00
end: 2023-11-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy (title="EA_Binary Option Spfrat Strategy", shorttitle="Spyfrate_Binary Option 5min", overlay=false, pyramiding=1999, initial_capital=60000, currency=currency.USD)

// TTM Squeeze code
lengthttm = input(title="Length",  defval=20, minval=0) 
bband(lengthttm, mult) =>
	sma(close, lengthttm) + mult * stdev(close, lengthttm)
keltner(length, mult) =>
	ema(close, lengthttm) + mult * ema(tr, lengthttm)

e1 = (highest(high, lengthttm) + lowest(low, lengthttm)) / 2 + sma(close, lengthttm)
osc = linreg(close - e1 / 2, lengthttm, 0)
diff = bband(lengthttm, 2) - keltner(lengthttm, 1)
osc_color = osc[1] < osc[0] ? osc[0] >= 0 ? #00ffff : #cc00cc : osc[0] >= 0 ? #009b9b : #ff9bff
mid_color = diff >= 0 ? green : red
conso = diff >= 0?1:0

//plot(osc, color=osc_color, style=histogram, linewidth=2)
//plot(0, color=mid_color, style=circles, linewidth=3)

// BB Init
source = close
length = input(50, minval=1)
mult = input(0.2, title="Mult Factor", minval=0.001, maxval=50)
alertLevel=input(0.1)
impulseLevel=input(0.75)
showRange = input(false, type=bool)

//RSI CODE
src = close, 
up = rma(max(change(src), 0), 30)
down = rma(-min(change(src), 0), 30)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))

//BB CODE
basis = sma(source, length)
dev = mult * stdev(source, length)
upper = basis + dev
lower = basis - dev
bbr = source>upper?(((source-upper)/(upper-lower))/10): source<lower?(((source-lower)/(upper-lower))/10) : 0.05
bbi = bbr - nz(bbr[1]) 
//Rule
long1 = rsi>50.5 and rsi<70 and  bbi>0.15  and osc>0.00100 and conso>0
short1 = rsi<49.5 and rsi>30 and  bbi<-0.15 and osc<-0.00100 and conso>0
//
long = long1[1] == 0 and long1 == 1
short = short1[1] == 0 and short1 == 1
longclose = long[5] == 1
shortclose = short[5] == 1

//Alert

strategy.entry("short", strategy.short, when=short)
strategy.entry("long", strategy.long, when=long)
plot(long,"long",color=green,linewidth=1)
plot(short,"short",color=red,linewidth=1)
strategy.close("long",when=longclose)
strategy.close("short",when=shortclose)

//strategy.exit(id="long",qty = 100000,when=longclose)
//strategy.exit(id="short",qty = 100000,when=shortclose)
plot(longclose,"close",color=blue,linewidth=1)
plot(shortclose,"close",color=orange,linewidth=1)
//strategy.exit(id="Stop", profit = 20, loss = 100)

もっと