골든 볼링거 밴드 간격 회전 시스템

저자:차오장, 날짜: 2024-02-01 11:46:13
태그:

img

전반적인 설명

이것은 볼링거 밴드를 기반으로 한 외환 격차 거래 시스템입니다. 가능한 가장 낮은 수수료 (1 pip 이하) 와 1-15 분 사이의 시간 프레임으로 주요 통화 쌍에 적합합니다.

전략 논리

이 시스템은 거래 기회를 식별하기 위해 볼링거 밴드, RSI 및 ADX 지표를 사용합니다.

볼링거 밴드 (Bollinger Bands) 는 가격 브레이크오프를 식별하는 데 사용됩니다. 가격이 상단보다 높을 때 길게, 가격이 하단보다 낮을 때 짧게 이동합니다. RSI는 거짓 브레이크오프를 피하기 위해 사용됩니다. 브레이크오프는 RSI가 역전되는 경우에만 유효하다고 간주됩니다. ADX는 명확한 트렌드가없는 시장을 필터링하는 데 사용됩니다. ADX가 32 이하일 때만 거래를합니다.

특정 엔트리 규칙은: 긴 엔트리에는 상위 밴드 이상의 가격 경기가 필요하며, RSI는 과잉 판매 구역에서 상승하고 동시에 30 라인을, ADX는 32 이하를 넘는다. 짧은 엔트리에는 낮은 밴드 이하의 가격 경기가 필요하며, RSI는 과잉 구매 구역에서 떨어지고 동시에 70 라인을 넘고 ADX는 32 이하를 넘는다.

출구 규칙에는 이윤/손실 중지 및 중간 라인 반전이 포함됩니다. 즉: 고정된 이윤/손실 중지 포인트를 설정합니다. 가격이 볼링거 중간 라인에 돌아 올 때 포지션을 닫습니다.

이점 분석

이 시스템은 다음과 같은 장점을 가지고 있습니다.

  1. 볼링거 대역을 사용하여 큰 수익 잠재력을 가진 격차 거래 기회를 잡습니다.

  2. 가짜 브레이크오웃을 피하고 수익 확률을 높이기 위해 RSI 지표를 결합합니다.

  3. ADX 지표를 사용하여 명확한 트렌드가 없는 시장을 필터링하고 불필요한 거래를 피합니다.

  4. 중간선 회귀로 폐쇄하면 대부분의 수익을 차단하고 수익 회귀를 피합니다.

  5. 높은 레버리지 거래에 적합하며, 수익은 빠르게 증폭될 수 있습니다.

위험 분석

또한 몇 가지 위험이 있습니다.

  1. 간격이 없어지면 수익이 없죠

  2. 백테스트가 너무 적합할 위험이 있습니다. 실시간 결과와 백테스트가 다를 수 있습니다.

  3. 트렌드 기간이 부족해서 손해를 볼 수 있습니다.

  4. 높은 레버리지는 위험을 증폭시킵니다. 단 한번의 손실은 커질 수 있습니다.

  5. 거래 시간 제한으로 인해 거래가 빠질 수 있습니다.

최적화 방향

이 시스템은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 지표의 효과를 향상시키기 위해 매개 변수를 최적화하십시오. 예를 들어 볼링거 기간, RSI 설정 등.

  2. 더 많은 지표 또는 기본 요소를 결합하여 승리 거래의 비율을 높이기 위해 필터를 추가하거나 개선하십시오.

  3. 거래 당 수익을 극대화하기 위해 수익을 취하는 전략을 최적화하십시오. 예를 들어 후속 스톱 손실, ATR 기반 스톱 손실 등.

  4. 예상 수익을 극대화하기 위해 적절한 레버리지 수준을 자동으로 결정합니다.

  5. 기계 학습 기술을 사용하여 수동 반복 대신 최적의 매개 변수를 자동으로 찾습니다.

결론

골든 볼링거 밴드 게프 리버션 시스템은 전형적인 단기 브레이크아웃 시스템이다. 가격 격차로부터 이익을 얻는 것을 목표로 한다. 여러 필터가 신호의 품질을 향상시키기 위해 사용된다. 백테스트에서 좋은 수익성을 보여준다. 그러나 라이브 성능은 아직 검증되지 않고 있으며 유동성과 미끄러짐에 영향을 미치는 결과가 있다. 전반적으로 이것은 유망한 단기 거래 전략이며 라이브 테스트와 최적화에 가치가 있다.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy("Bollinger Bands, RSI and ADX Trading System", overlay=true)


timeinrange(res, sess) => time(res, sess) != 0


timer = color.red


//bgcolor(timeinrange(timeframe.period, "0300-0600") or timeinrange(timeframe.period, "0900-1300") or timeinrange(timeframe.period, "2030-2300") ? timer : na, transp=70)


//RSI
length = input( 20 )
overSold = input( 35 )
overBought = input( 65 )
price = close
vrsi = rsi(price, length)
co = crossover(vrsi, overSold)
cu = crossunder(vrsi, overBought)
//if (not na(vrsi))


//BB
lengthB = input(60, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, lengthB)
dev = mult * stdev(src, lengthB)
upper = basis + dev
lower = basis - dev


//adx
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

longEntry = close < upper and crossover(vrsi,overSold) and sig < 32 //and (timeinrange(timeframe.period, "0301-0600") or timeinrange(timeframe.period, "0901-1300") or timeinrange(timeframe.period, "2031-2300"))

shortEntry = close > upper and crossunder(vrsi,overBought) and sig < 32 //and (timeinrange(timeframe.period, "0301-0600") or timeinrange(timeframe.period, "0901-1300") or timeinrange(timeframe.period, "2031-2300"))


tp=input(90, step=10)
sl=input(90, step=10)

strategy.entry("long",1,when=longEntry)
strategy.exit("X_long", "long", profit=tp,  loss=sl )
strategy.close("long",when=crossunder(close,basis))

strategy.entry('short',0,when=shortEntry)
strategy.exit("x_short", "short",profit=tp, loss=sl)
strategy.close("short",when=crossover(close,basis))







더 많은