다양한 지표와 양적 거래 전략의 결합


생성 날짜: 2024-01-24 15:10:41 마지막으로 수정됨: 2024-01-24 15:10:41
복사: 0 클릭수: 328
1
집중하다
1166
수행원

다양한 지표와 양적 거래 전략의 결합

개요

이 전략은 RSI, StochRSI, 그리고 브린 밴드 세 가지의 주식 가격 기술 지표를 사용하고 거래의 시간 및 방향 조건과 결합하여 구매 및 판매 신호를 판단하는 양적 거래 전략을 구현합니다.

전략 원칙

RSI 지표가 낮은 영역보다 작고 StochRSI 지표 K 라인에서 D 라인을 통과하면 구매 신호로 간주됩니다. 또한 주가가 부린 밴드 다운라인보다 저렴하거나 부린 밴드 다운라인을 통과하는 경우도 구매 근거로 사용됩니다.

RSI 지표가 높은 지역을 넘어서서 StochRSI 지표 K 선이 D 선을 통과하면 판매 신호로 간주됩니다. 또한 부린 대역이 상행선 또는 부린 대역이 상행선으로 넘어가는 것은 판매의 근거입니다.

RSI 지표를 통해 주가가 과매매가 되는지 여부를 판단하고, StochRSI를 통해 주가가 동력을 판단하고, 브린 띠를 통해 주가가 높은 수준에서 운영되는지 여부를 판단하고, 다중 지표 포지션은 매매를 판단한다.

우위 분석

이것은 다중 지표의 조합 전략이며, 지표의 커버리지가 넓고, 판단의 근거가 포괄적이다. 판단 신호를 하기 전에 현재 주식 가격이나 지표와 그 하락의 교차가 발생해야 하며, 가짜 신호에 대한 필터가 있다.

주문하기 전에 시간 제한을 추가하여 특정 시간 동안 더 큰 위험을 피할 수 있습니다.

여러 지표들을 종합하여 여러 종류의 트렌드에 대응할 수 있고, 전략의 효율성을 높일 수 있습니다.

위험 분석

이 전략은 주로 세 가지 지표에 의존하며, 지표가 잘못된 신호를 내면 전략은 손실을 초래한다. 지표는 서로 검증해야하며, 어떤 지표에 전적으로 의존해서는 안 된다. 예를 들어, 특정 기간 동안의 RSI 흔들림은 거짓 신호를 내기 가능성을 증가시킨다.

전략에 참여한 시점의 판단 조건도 유리한 상황을 놓칠 수 있다.

과장효과가 심한 주식과 같은 주식을 잘못 선택하면 지표의 유효성이 크게 하락할 수 있으며, 주식의 이러한 지표에 대한 적용성을 연구해야 한다.

최적화 방향

  1. 최대 철수와 같은 풍력 조절 방법을 추가하면 손실을 제한할 수 있다.

  2. 지표의 파라미터를 조정하여 선택된 주식과 더 잘 일치한다. 예를 들어 더 빠른 가격 변화를 감지하기 위해 RSI 파라미터를 가속화한다.

  3. 필터링 메커니즘을 추가합니다. 예를 들어, 부린 반도 중간에 있을 때 주가가 일시적으로 거래되어 흔들림이 발생하지 않도록합니다. 그리고 상장과 상장 근처에 주문을 중지하여 폭락의 위험을 피합니다.

  4. 주식을 선택할 때 회사의 기본 사항을 참고하고, 금융 위조가 심각한 주식을 선택할 수 있다. 또한 산업과 시장 가치의 판단을 높여서 대가 주식을 선택할 수 있다.

요약하다

이것은 전형적인 다변수 기술 지표 전략으로, 지표 포트폴리오는 균형이 있고, 커버리지는 넓으며, 동시에 주문 조건은 엄격하며, 효율적으로 주식을 선택하여 수익을 창출할 수 있으며, 회수 또한 일정 범위 내에서 제어할 수 있다. 지표와 매개 변수를 최적화함으로써, 시장에 더 잘 적응할 수 있으며, 동시에 위험 회피 제도를 최대한 늘리고, 전략의 안정적 신뢰성을 더욱 높일 수 있다.

전략 소스 코드
/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version= 2
strategy("RSI+STOCHRSI+BB Strategy", overlay=true)
lengthrsi = input(6)
overSold = input( 20 )
overBought = input( 70 )
price = close
vrsi = rsi(price, lengthrsi)

smoothK = input(3, minval=1)
smoothD = input(3, minval=1)
lengthRSI = input(14, minval=1)
lengthStoch = input(14, minval=1)
src = input(close, title="RSI Source")

rsi1 = rsi(src, lengthRSI)
k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK)
d = sma(k, smoothD)

bblength = input(50)
bbupmult =input(1.5,title="Multiplier for BB Upper Band")
bblowmult = input(1.5,title="Multiplier for BB Lower Band")

basis =  sma(close,bblength)

devup = bbupmult * stdev(close, bblength)
devlow = bblowmult * stdev(close, bblength)

upper = basis + devup
lower = basis - devlow
plot(basis, color=red)
p1 = plot(upper, color=blue)
p2 = plot(lower, color=blue)
fill(p1, p2)


yearfrom = input(2018)
yearuntil =input(2019)
monthfrom =input(6)
monthuntil =input(12)
dayfrom=input(1)
dayuntil=input(31)



if (  ( crossover(k,d)) and ( crossover(vrsi,overSold) or vrsi<overSold)  and (  (price<lower) or crossover(price,lower) ) ) 
    strategy.entry("BUY", strategy.long, stop=close, oca_name="TREND",  comment="BUY")
    
else
    strategy.cancel(id="BUY")


if ( ( crossunder(k,d) ) and ( (vrsi >overBought) or crossunder(vrsi,overBought) ) and  ( (price>upper) or crossunder(price,upper) )) 

    strategy.entry("SELL", strategy.short,stop=close, oca_name="TREND",  comment="SELL")
else
    strategy.cancel(id="SELL")