모멘텀 브레이크아웃 TTM 전략


생성 날짜: 2023-11-21 15:07:38 마지막으로 수정됨: 2023-11-21 15:07:38
복사: 0 클릭수: 428
1
집중하다
1224
수행원

모멘텀 브레이크아웃 TTM 전략

개요

이 전략은 동력 지표 RSI와 부린 밴드 지표 BB를 결합한 바이너리 옵션 브레이크 트레이딩 전략이다. 시간이 지남에 따라, TTM 지표를 사용하여 시장이 평형 상태에 있는지 판단하여 입문의 신뢰성을 높인다.

전략 원칙

전략의 기본 논리는 TTM 지표 집합이 파장을 형성하는 것을 기반으로, 부린 밴드 및 RSI 지표와 결합하여 가격의 파장을 결정하는 방향이다. 구체적으로, 전략은 20주기의 BB와 30주기의 RSI를 사용합니다. 시장의 파격 수축량 이후, RSI가 특정 변동 범위 ((30-70) 와 BB가 큰 파장이있는 경우 포지션 개시 방향을 결정합니다. 또한, 전략은 포지션을 개시하기 전에 K 선의 포지션 개시 방향을 검사하여 불필요한 반복적인 포지션을 피합니다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 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)