123 역전 및 STARC 밴드 컴보 전략

저자:차오장, 날짜: 2023-12-04 13:38:30
태그:

img

전반적인 설명

이 전략은 123 리버스 전략과 STARC 밴드 전략을 결합하여 더 정확한 거래 신호를 생성합니다. 123 리버스 전략은 K-라인 리버스 패턴을 통해 하위 리바운드 기회를 판단합니다. STARC 밴드 전략은 트렌드 방향을 결정하기 위해 밴드의 가격 브레이크를 사용합니다. 두 가지 전략을 사용하면 각 전략의 장점을 활용하면서 거래 신호를 더 신뢰할 수 있습니다.

전략 논리

123 역전 전략

이 전략은 울프 젠슨의 책?? How I Tripped My Money in The Futures Market?? 의 183 페이지에서 유래되었다. 거래 아이디어는 가격이 하향 반전을 보여주면 하향 반향의 기회로 긴 포지션을 취하고 가격이 상승 반전을 보여주면 트렌드 반전의 기회로 짧은 포지션을 취하는 것입니다. 구체적인 규칙은 다음과 같습니다.

긴 신호: 닫기 가격이 2일 연속 전날의 닫기 가격보다 높고 느린 K 라인의 9일 이동 평균이 50보다 낮을 때, 긴 지점을 선택합니다.

짧은 신호: 닫기 가격이 2일 연속 전날의 닫기 가격보다 낮고 빠른 K 라인의 9일 이동 평균이 50보다 높을 때, 짧습니다.

STARC 밴드 전략

이 전략은 가격의 단기 간단한 이동 평균을 중심으로 밴드를 플롯링하여 트렌드 방향을 판단합니다. 상단 밴드는 이동 평균 위에 평균 진정한 범위 (ATR) 를 추가하여 구성됩니다. 하단 밴드는 이동 평균에서 ATR을 빼어 구성됩니다. 상단 밴드 위에 깨는 것은 상승 추세를 나타냅니다. 하단 밴드 아래에 깨는 것은 하향 추세를 나타냅니다.

STARC는 Stoller Average Range Channels를 뜻한다. 이 지표는 그 창시자인 Manning Stoller의 이름을 따서 명명되었다.

이점 분석

123 리버스 및 STARC 밴드 전략을 모두 사용하면 거래 신호의 정확성이 향상됩니다. 123 리버스 전략은 역전 기회를 포착합니다. STARC 밴드 전략은 트렌드 방향을 판단합니다. 두 전략은 서로 보완하여 잘못된 신호를 줄이고 승률을 향상시킵니다.

또한, 123 역전 전략은 시장 파업 후 새로운 최고 또는 최저치를 쫓는 것을 피하는 데 도움이됩니다. STARC 밴드 전략은 시장 변화를 수용하기 위해 적응 가능한 ATR 밴드를 사용합니다.

위험 분석

이 전략의 가장 큰 위험은 트레이드를 잃는 것과 연속적인 손실을 완전히 피할 수 없다는 것입니다. 두 전략을 결합하면 잘못된 신호를 줄일 수 있지만 특정 시장 조건 하에서는 여전히 잘못된 판단이 발생할 수 있습니다. 적시에 중단 손실은 손실을 제어하기 위해 사용해야합니다.

또 다른 위험은 잘못된 매개 변수 설정으로 인해 전략 성능이 떨어질 수 있습니다. 매개 변수는 다른 제품과 시간 틀에 따라 테스트하고 최적화되어야합니다.

최적화 방향

이 전략은 더 이상 최적화 할 수 있습니다.

  1. 큰 손실 트레이드를 피하기 위해 가격 스톱 또는 지표 스톱과 같은 스톱 손실 전략을 추가합니다.

  2. 불리한 입시 가격을 피하기 위해 가격 확인과 같은 입시 조건을 추가합니다.

  3. 제품 및 시간 프레임에 가장 적합한 매개 변수 조합을 찾기 위해 매개 변수 최적화를 수행합니다.

  4. 시장 변화에 따라 포지션을 조정하기 위해 동적 출구 아이디어를 추가합니다.

요약

이 전략은 트렌드 역전 및 방향 판단에 두 전략의 장점을 활용하여 123 역전 및 STARC 밴드 전략을 결합합니다. 이는 잘못된 신호를 효과적으로 줄이고 거래 효율성을 향상시킬 수 있습니다. 또한 두 전략 중 하나를 단독으로 사용하는 데 존재하는 문제를 최적화합니다. 지속적인 최적화를 통해이 전략은 안정적이고 신뢰할 수있는 양적 거래 전략이 될 수 있습니다.


/*backtest
start: 2023-11-26 00:00:00
end: 2023-12-03 00:00:00
period: 45m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 28/07/2021
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This System was created from the Book "How I Tripled My Money In The 
// Futures Market" by Ulf Jensen, Page 183. This is reverse type of strategies.
// The strategy buys at market, if close price is higher than the previous close 
// during 2 days and the meaning of 9-days Stochastic Slow Oscillator is lower than 50. 
// The strategy sells at market, if close price is lower than the previous close price 
// during 2 days and the meaning of 9-days Stochastic Fast Oscillator is higher than 50.
//
// Second strategy
// A type of technical indicator that is created by plotting two bands around 
// a short-term simple moving average (SMA) of an underlying asset's price. 
// The upper band is created by adding a value of the average true range 
// (ATR) - a popular indicator used by technical traders - to the moving average. 
// The lower band is created by subtracting a value of the ATR from the SMA.
// STARC is an acronym for Stoller Average Range Channels. The indicator is 
// named after its creator, Manning Stoller.
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
Reversal123(Length, KSmoothing, DLength, Level) =>
    vFast = sma(stoch(close, high, low, Length), KSmoothing) 
    vSlow = sma(vFast, DLength)
    pos = 0.0
    pos := iff(close[2] < close[1] and close > close[1] and vFast < vSlow and vFast > Level, 1,
	         iff(close[2] > close[1] and close < close[1] and vFast > vSlow and vFast < Level, -1, nz(pos[1], 0))) 
	pos


STARC(LengthMA,LengthATR,K) =>
    pos = 0.0
    xMA = sma(close, LengthMA)
    xATR = atr(LengthATR)
    xSTARCBandUp = xMA + xATR * K
    xSTARCBandDn = xMA - xATR * K
    pos := iff(close > xSTARCBandUp, 1,
             iff(close < xSTARCBandDn, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & STARC Bands", shorttitle="Combo", overlay = true)
line1 = input(true, "---- 123 Reversal ----")
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
line2 = input(true, "---- STARC Bands ----")
LengthMA = input(5, minval=1)
LengthATR = input(15, minval=1)
K = input(1.33, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posSTARC = STARC(LengthMA,LengthATR,K)
pos = iff(posReversal123 == 1 and posSTARC == 1 , 1,
	   iff(posReversal123 == -1 and posSTARC == -1, -1, 0)) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1 , 1, pos))	   
if (possig == 1 ) 
    strategy.entry("Long", strategy.long)
if (possig == -1 )
    strategy.entry("Short", strategy.short)	 
if (possig == 0) 
    strategy.close_all()
barcolor(possig == -1 ? #b50404: possig == 1 ? #079605 : #0536b3 )

더 많은