이 전략 종합은 부린띠, RSI, MACD, Stochastic의 네 가지 다른 기술 지표를 사용하여 장단 양방향 거래를 한다. 그것은 우선 가격이 부린띠 통로 바깥에 있는지 여부를 판단하고, 만약 그렇다면, 방향에 따라 더 많은 공백을 한다. 그 다음은 RSI가 초고가 오버셀 영역에 있는지 여부를 판단하고, 만약 그렇다면, 방향에 따라 진입할 수 있다. 그 다음은 MACD가 황금 포크가 발생하는지 여부를 판단하고, 만약 그렇다면, 방향에 따라 진입할 수 있다. 마지막으로 Stochastic이 황금 포크가 발생하고, 초고가 오버셀 영역에 있는지 여부를 판단하고, 조건이 충족되면 진입할 수 있다.
이 전략은 주로 브린 밴드, RSI, MACD, Stochastic의 4가지 지표를 사용합니다.
부린 띠는 주가 가격의 표준차에 따라 계산되는 상하 궤도이며, 주가 가격이 부린 띠 상하 궤도를 초과하면 주가가 정상적인 변동 범위에서 벗어났음을 나타냅니다. 이 때 공백을 할 수 있습니다.
RSI는 빠른 Rise와 빠른 Fall을 통해 수치를 추론하고, RSI가 30보다 낮으면 과매매, 70보다 높으면 과매매로, 구매 신호로 사용할 수 있다.
MACD는 지수 평균 DIFF 빼기 DEA의 이차값이며, DIFF는 DEA를 상향으로 돌파하여 금색 포크로 더 많은 신호를, DIFF는 DEA를 하향으로 돌파하여 사형 포크로 빈 신호를 한다.
스토카스틱 K선과 D선 돌파는 거래 신호로도 사용할 수 있다. K선 20보다 낮은 것은 과매매, 80보다 높은 것은 과매매, K선 상의 D선 돌파는 다중선 신호, 아래의 D선 돌파는 공백 신호이다.
이 4가지 지표의 다중 하락 신호를 종합적으로 판단하면 입시의 성공률을 높일 수 있다. 구체적으로, 가격이 브린을 넘어 궤도에 올랐을 때 다중 신호로 간주한다; RSI가 30보다 낮을 때 다중 신호로 간주한다; MACD 골드 포크가 다중 신호로 간주된다; Stochastic K 선에 D 선과 K 선이 20보다 낮을 때 다중 신호로 간주한다.
이 전략의 가장 큰 장점은 여러 지표의 추세 판단을 결합하여 단일 지표에 비해 더 높은 정확도와 승률을 갖는다는 것입니다.
첫째, 이 전략은 브린띠의 중장기 트렌드 판단과 MACD, RSI, Stochastic의 단기 지표 판단을 포함한 여러 시간대 지표를 통합하여 전략이 여러 시간 차원에서 판단할 수 있도록 하여 잘못된 판단의 확률을 감소시킨다.
둘째, 이 전략은 여러 지표가 동시에 신호를 발산할 때만 입장을 확인하는 원칙을 채택하여 입장의 시기를 정확하게 보장합니다. 예를 들어, 부린 밴드, RSI, MACD 및 Stochastic의 네 가지 지표가 모두 충족되어야만 입장이 가능합니다. 이것은 단일 지표가 발생할 수있는 실패 상황을 피합니다.
또한, 이 전략에는 지표의 조합이 사용되며, 서로 다른 지표의 장점을 상호 보완하여 승률을 높일 수 있습니다. 예를 들어, RSI는 과매매를 판단할 수 있으며, 브린은 추세 이탈을 판단할 수 있으며, MACD는 단기 변화 등을 발견 할 수 있습니다. 이러한 지표의 조합을 사용하면 각자의 장점을 발휘 할 수 있습니다.
마지막으로, 이 전략은 포지션 전략을 채택하여 지표 신호가 확인되면 더 많은 수익을 얻을 수 있습니다. 4 개의 지표 신호가 확인되면 포지션 방식을 사용하면 양적 거래보다 더 많은 수익을 얻을 수 있습니다.
이 전략에는 몇 가지 위험도 있습니다.
첫째, 전략에 여러 가지 변수와 지표가 사용되어 전략 최적화를 어렵게 한다. 조정해야 할 변수가 많고, 최적의 변수 조합을 찾기 위해 많은 역사적 데이터가 반복적으로 테스트되어야 한다.
둘째, 전략은 여러 지표에 의존하여 동시에 신호를 발송하는 경우가 드물기 때문에 거래 빈도가 낮아질 수 있다. 동시 신호를 오랫동안 잡지 못하면 전략은 약해진다.
또, 가축 전략은 수익을 확대할 수 있지만, 손실을 확대할 수도 있다. 4개의 지표가 잘못 동시 신호를 냈을 때 가축을 취하는 것은 더 큰 손실을 초래한다.
마지막으로, 전략은 여러 지표가 동시에 신호를 발송한다고 가정하지만, 지표가 분산될 때 어떻게 의사결정을 할 것인가를 고려해야 한다. 지표가 일치하지 않을 때, 전략은 양적 의사결정 메커니즘을 구축해야합니다.
이 전략은 다음과 같은 부분에서 최적화될 수 있습니다.
지표 매개 변수를 최적화하여 최적의 매개 변수 조합을 찾는다. 유전 알고리즘, 격자 검색 등의 방법을 통해 지표 매개 변수에 대한 전체적인 최적화 검색을 할 수 있다.
손실을 제어하기 위해 손해 차단 전략을 추가하십시오. 가격이 불리한 방향으로 어떤 지점을 돌파 할 때 손해 차단 전략을 취하여 손실이 확대되는 것을 방지하십시오.
입학 논리를 최적화하여, 지표가 일치하지 않을 때, 정량적인 점수 메커니즘을 구축한다. 예를 들어, 다른 지표의 무게를 설정하여, 점수에 따라 입학한다.
출장 논리를 최적화하고, 다른 지분 기간에 대한 수익 손실 비율을 연구하고, 최적의 출장 규칙을 수립한다.
거래 종류와 거래 시기를 최적화하고, 전략에 적합한 종류와 거래 시기를 조정한다.
거래 비용의 영향을 테스트하고, 점유율과 수수료에 따라 최적화 전략의 파라미터를 사용한다.
기계 학습 알고리즘을 추가하고, 신경 네트워크를 활용하여 변수 적응 및 전략 최적화를 수행합니다.
이 전략은 여러 지표와 여러 확인 메커니즘을 통합하여 의사결정을 수행하고 있으며, 합리적인 매개 변수와 엄격한 조건 통제 하에서 더 나은 전략 효과를 얻을 수 있습니다. 그러나 여기에는 특정 운영의 어려움과 위험이 있습니다. 지속적인 최적화를 통해 전략의 안정성과 신뢰성을 향상시키는 것이 필요합니다. 핵심은 지표 매개 변수의 최적의 매칭을 찾아 과학적인 입출 규칙을 구축하고 위험을 잘 제어하여 전략이 복잡한 다변화 시장에서 지속적으로 수익을 창출합니다.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction", minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)
lengthst = input(14, minval=1)
OverBoughtst = input(80)
OverSoldst = input(20)
smoothK = 3
smoothD = 3
k = sma(stoch(close, high, low, lengthst), smoothK)
d = sma(k, smoothD)
ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)
upper = basis + dev
lower = basis - dev
vrsi = rsi(price, lengthrsi)
if (not na(vrsi))
if (crossover(vrsi, overSold))
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if (crossunder(vrsi, overBought))
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
if (crossover(source, lower))
strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE")
else
strategy.cancel(id="BBandLE")
if (crossunder(source, upper))
strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE")
else
strategy.cancel(id="BBandSE")
if (not na(k) and not na(d))
if (crossover(k,d) and k < OverSoldst)
strategy.entry("StochLE", strategy.long, comment="StochLE")
if (crossunder(k,d) and k > OverBoughtst)
strategy.entry("StochSE", strategy.short, comment="StochSE")
if (crossover(delta, 0))
strategy.entry("MacdLE", strategy.long, comment="MacdLE")
if (crossunder(delta, 0))
strategy.entry("MacdSE", strategy.short, comment="MacdSE")