추진력 돌파구 TTM 전략

저자:차오장, 날짜: 2023-11-21 15:07:38
태그:

img

전반적인 설명

이것은 이진 옵션의 돌파구 거래 전략으로, 볼링거 밴드 BB 지표와 결합된 모멘텀 지표 RSI를 활용합니다. 타이밍의 측면에서 TTM 지표는 시장이 통합 상태에 있는지 여부를 결정하는 데 사용됩니다. 이를 통해 진입의 신뢰성을 향상시킵니다.

원칙

이 전략의 기본 논리는 TTM 지표 세트가 돌파구를 형성하는 조건 하에서 볼린거 밴드 및 RSI 지표에 기초하여 돌파구 방향을 결정하는 것입니다. 구체적으로, 전략은 BB의 20 기간과 RSI의 30 기간을 사용합니다. 시장이 압축을 통과 할 때, RSI가 특정 변동 범위 (30-70) 내에 있고 BB가 큰 돌파구를 가지고있을 때 개척 방향을 결정합니다. 또한, 전략은 불필요한 반복 개척을 피하기 위해 포지션을 열기 전에 이전 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)

더 많은