다중 지표 충돌 역전 전략

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

img

전반적인 설명

이 전략은 이중 지표 신호를 결합하여 효율적인 반전 전략으로 설계되었습니다. 스토카스틱 지표에 기반한 반전 신호와 연속 상위 날 수를 추적하는 시스템을 통합합니다. 이 전략은 두 신호가 동시에 구매 또는 판매를 유발할 때만 주문을 할 것입니다. 이 다중 지표 충돌 메커니즘은 일부 유효하지 않은 신호를 효과적으로 필터링하고 승률을 향상시킬 수 있습니다.

원칙

전략은 두 부분으로 구성됩니다. 첫 번째 부분은 123 역전 시스템으로, 지난 2 일 동안 폐쇄 가격의 변화와 3 기간 느린 스토카스틱 지표의 값을 관찰합니다. 구체적으로, 어제의 종료가 이전 2 일보다 낮고 오늘의 종료가 어제보다 높고 9 기간 느린 스토카스틱이 50 미만으로 길어집니다. 반대로, 오늘의 종료가 어제보다 낮고 빠른 스토카스틱이 50 미만으로 길어집니다.

두 번째 지표는 n 일 동안 최근 연속 상승일 수를 추적합니다. 마지막 n 일 모두 상승하는 경우 1, 그렇지 않으면 0을 출력합니다. 이 지표는 트렌드 형성을 식별하는 데 사용됩니다.

마지막으로, 전략은 123 회전 신호와 연속 상위 날 수가 동시에 구매 또는 판매 상태를 표시 할 때만 거래를 실행합니다. 이 다중 지표 충돌 가중 된 접근법은 일부 유효하지 않은 신호를 필터링하고 전략의 전반적인 안정성을 향상시킬 수 있습니다.

이점 분석

이 다중 지표 조합 전략의 가장 큰 장점은 일부 유효하지 않은 신호를 필터링함으로써 신호의 신뢰성을 향상시킬 수 있다는 것입니다. 구체적으로 다음과 같은 주요 장점이 있습니다.

  1. 123 역전 자체는 소음 간섭을 피하기 위해 약간의 스크리닝 기능을 가지고 있습니다. 연속 일 카운터와 결합하면 추세를 더 파악하고 역전 반기를 피할 수 있습니다.

  2. 9일 및 3일 빠른 및 느린 라인 비교의 스토카스틱 매개 변수는 매개 변수를 부드럽게하고 단기 변동을 피하고 안정성을 향상시킬 수 있습니다.

  3. 주식, 상승 일 수를 포함한 사용자 정의 가능한 매개 변수 다른 시장에 적응 할 수 있습니다.

  4. 양방향으로 거래할 수 있고 더 많은 단축 기회를 제공합니다.

위험 분석

이 전략에는 몇 가지 위험도 있습니다.

  1. 다중 지표 조합은 신호의 정확성을 높이는 동시에 몇 가지 기회를 놓치고 수익을 제한할 수도 있습니다.

  2. 반전 신호는 함락될 위험성을 내포하고 있으며 위험을 통제하기 위해 스톱 손실을 요구합니다.

  3. 부적절한 매개 변수 설정은 시장 간 조정이 필요한 성능에 영향을 줄 수 있습니다.

  4. 적시에 스톱 로스를 하지 않고 장기 포지션을 보유하거나 주식 환전 추구하고 있는 것도 위험성입니다.

따라서 다음과 같은 조치를 취하여 위험을 줄일 수 있습니다.

  1. 더 많은 거래 기회를 유지하기 위해 적절한 매개 변수 조건을 완화하십시오.

  2. 트레이드 손실에 한정되는 스톱 로스 포인트를 설정합니다.

  3. 매개 변수를 최적화하고 다른 시장에 대한 매개 변수 규칙을 설정합니다.

  4. 장기적으로 단일 주식을 보유하는 것을 피하고 유동성을 유지하십시오.

최적화 방향

이 다중 지표 역전 전략을 최적화 할 수있는 잠재력은 여전히 많습니다. 주로 다음과 같은 측면에서:

  1. 더 많은 지표 조합을 테스트해서 더 잘 맞는 것을 찾으세요.

  2. 기계 학습 알고리즘을 사용하여 매개 변수를 자동으로 최적화합니다.

  3. 더 안정성을 위해 스톱 로스 및 수익 조건을 추가합니다.

  4. 트렌드 지표 부분에서 다른 시간 프레임을 테스트합니다.

  5. 주식 지수, 외환, 상품, 암호화폐에 적용 가능성을 평가합니다.

  6. 여러 시장에서 동시다발적으로 할당을 동적으로 조정하는 복합 전략 설계.

요약

이 전략은 효율적이면서도 안정적인 반전 거래 전략을 설계하기 위해 여러 지표를 능숙하게 결합합니다. 단일 지표와 비교하면 여러 지표 충돌 메커니즘은 잘못된 신호를 효과적으로 필터합니다. 한편, 이 전략은 신호 확인을 위해 새로운 트렌드 지표를 추가하여 전통적인 반전 방법을 업데이트합니다. 매개 변수 최적화, 스톱 손실, 시장 전반에 대한 적응 및 기타로, 이것은 강력한 양적 거래 도구가됩니다.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 26/03/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
// Evaluates for n number of consecutive higher closes. Returns a value 
// of 1 when the condition is true or 0 when false.
//
// 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


NBU(nLength) =>
    pos = 0.0
    nCounter = 0
    nCounter :=  iff(close[1] >= open[1], nz(nCounter[1],0)+1,
                  iff(close[1] < open[1], 0, nCounter))
    C1 = iff(nCounter >= nLength, 1, 0)
    posprice = 0.0
    posprice := iff(C1== 1, close, nz(posprice[1], 0)) 
    pos := iff(posprice > 0, 1, 0)
    pos

strategy(title="Combo Backtest 123 Reversal & N Bars Up", 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, "---- N Bars Up ----")
nLength = input(4, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posNBU = NBU(nLength)
pos = iff(posReversal123 == 1 and posNBU == 1 , 1,
	   iff(posReversal123 == -1 and posNBU == -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 )

더 많은