양적 거래의 이중 지표 전략

저자:차오장, 날짜: 2024-01-15 12:18:53
태그:

img

전반적인 설명

이 전략은 양적 거래 이중 지표 전략 (Quantitative Trading Dual Indicator Strategy) 이라고 불립니다. 이 전략은 이중 지표 필터링 거래 전략을 구현하기 위해 볼링거 밴드와 상대적 강도 지표 (RSI) 를 거래 신호로 모두 사용합니다.

전략 논리

이 전략의 핵심 논리는 거래 신호 필터링을 위해 시장에서 과반 구매 및 과반 판매 조건을 판단하기 위해 볼링거 밴드와 RSI를 모두 사용하는 것입니다.

특히, 볼링거 밴드 상부 및 하부 밴드는 가격이 변동성 범위 밖인지 판단하여 시장이 과소매 또는 과소매인지 판단할 수 있습니다. 상대 강도 지수 (RSI) 는 시장 세력의 강도를 판단할 수 있습니다. 55 이상의 RSI는 과소매 신호이며 45 이하의 RSI는 과소매 신호입니다.

이 전략은 볼링거 밴드와 RSI가 동시에 과잉 구매 또는 과잉 판매 신호를 표시할 때만 구매 또는 판매 거래를 수행하도록 설정됩니다. 이것은 일부 잘못된 신호를 필터링하고 전략의 안정성을 향상시킵니다.

전략 의 장점

이 전략의 가장 큰 장점은 필터링을 위한 이중 지표의 사용으로, 잘못된 거래를 줄이고 신호 신뢰성을 향상시킬 수 있습니다.

단일 볼링거 밴드 지표와 비교하면 이중 지표 전략은 잘못된 신호의 가능성을 크게 줄일 수 있습니다. 단일 RSI 지표와 비교하면 볼링거 밴드는 현재 오스실레이션 범위 밖에서 오스실레이션 시장에서 잘못된 신호를 방지하기 위해 있는지 여부를 결정하는 데 사용할 수 있습니다.

전체적으로 이중 지표 전략은 여러 상황을 포괄적으로 고려하고 더 나은 적응력과 안정성을 가지고 있습니다.

전략의 위험과 해결책

이 전략의 주요 위험은 볼링거 밴드 및 RSI의 매개 변수 설정이 부적절할 수 있다는 것입니다. 볼링거 밴드 매개 변수가 너무 민감하게 설정되면 과잉 신호를 생성 할 가능성이 있습니다. RSI 매개 변수가 너무 느슨하게 설정되면 효과가 약화 될 것입니다.

또한 이중 지표 조합 자체는 신호가 적다는 것을 의미합니다. 시장이 다른 지표가 트리거 레벨에 도달하지 않은 동안 한 지표의 신호만 충족하면이 전략은 신호를 생성하지 않습니다. 따라서 단일 지표 전략에 비해이 전략의 거래 빈도는 낮을 것입니다.

해결책은 주로 더 적절한 매개 변수를 설정하고 RSI 및 볼링거 밴드 트리거 레벨을 수정하는 것을 포함합니다. 거래 빈도가 너무 낮다면 입시 기회를 증가시키기 위해 매개 변수 요구 사항을 줄이는 것을 고려하십시오.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 더 나은 매치를 찾기 위해 볼링거 밴드 및 RSI 매개 변수의 다른 조합을 테스트하십시오. 기존 매개 변수는 모든 제품 및 시간대에 적합하지 않을 수 있습니다.

  2. 손해를 멈추고 수익을 올리는 전략을 추가하십시오. 현재 이러한 고려 사항은 없습니다.

  3. 포지션 사이징 메커니즘을 추가합니다. 동적 포지션 사이징을 사용하여 트렌드가 잘 될 때 포지션을 증가시키고 트렌드가 나쁘게 될 때 손실을 줄이십시오.

  4. 과거 데이터에 기반한 매개 변수 자기 적응을 추가합니다. 최신 시장 조건에 맞게 지표 매개 변수를 자동으로 최적화 할 수 있습니다.

결론

이중 지표 필터 전략으로서, 이 전략은 전반적인 안정성과 적응력을 갖추고 있다. 잘못된 신호의 비율을 줄이는 동시에 거래 빈도를 줄인다. 지표 매개 변수를 최적화하고 보조 기능을 추가함으로써 전략의 수익 잠재력을 더욱 향상시킬 수 있다.


/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-11 23:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Bollinger Bands + RSI, Double Strategy (by SlumdogTrader)", shorttitle="BolBand_RSI_Strat", overlay=true)

// SlumdogTrader's Bollinger Bands + RSI Double Strategy - Profit Trailer
//
// Version 1.0
// Script by SlumdogTrader on July Fri 13(!), 2018.
//
// This strategy uses a normalise Bollinger Bands + RSI.
//
// Bollinger Band triggers
// SELL - when the price is above the upper band.
// BUY - when the price is below the lower band.
//
// RSI triggers
// SELL - when the price is above 55.
// BUY - when the price is below 45.
//
// This simple strategy only triggers when
// both the BB and the RSI
// indicators, at the same time, are in
// a overbought or oversold condition.
//
// Visit my TradingView work at:
// https://www.tradingview.com/u/SlumdogTrader/
//
// Visit my website at:
// https://www.slumdogtrader.com
//

///////////// Bollinger Bands Settings
BBlength = input(20, minval=1,title="Bollinger Bands SMA Period Length")
BBmult = input(2.0, minval=0.001, maxval=50,title="Bollinger Bands Standard Deviation")
price = input(close, title="Source")
BBbasis = sma(price, BBlength)
BBdev = BBmult * stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = crossover(source, BBlower)
sellEntry = crossunder(source, BBupper)
plot(BBbasis, color=aqua,title="BBs SMA Basis Line")
p1 = plot(BBupper, color=silver,title="BBs Upper Line")
p2 = plot(BBlower, color=silver,title="BBs Lower Line")
fill(p1, p2)

///////////// RSI Settings
RSIlength = input( 16 ,title="RSI Period Length")
RSIvalue = input( 45 ,title="RSI Value Range")
RSIoverSold = 0 + RSIvalue
RSIoverBought = 100 - RSIvalue
vrsi = rsi(price, RSIlength)


///////////// Colour Settings
switch1=input(true, title="Enable Bar Color?")
switch2=input(true, title="Enable Background Color?")
TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) ? red : RSIoverSold and (price[1] < BBlower and price > BBlower)  ? green : na
barcolor(switch1?TrendColor:na)
bgcolor(switch2?TrendColor:na,transp=50)


///////////// RSI + Bollinger Bands Strategy
if (not na(vrsi))

    if (crossover(vrsi, RSIoverSold) and crossover(source, BBlower))
        strategy.entry("RSI_BB_L", strategy.long, stop=BBlower,  comment="RSI_BB_L")
    else
        strategy.cancel(id="RSI_BB_L")

    if (crossunder(vrsi, RSIoverBought) and crossunder(source, BBupper))
        strategy.entry("RSI_BB_S", strategy.short, stop=BBupper,  comment="RSI_BB_S")
    else
        strategy.cancel(id="RSI_BB_S")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)


더 많은