이중 반전 비율 변화 바 양적 전략

저자:차오장, 날짜: 2023-12-06 17:44:35
태그:

img

전반적인 설명

이 전략의 이름은 Double Reversal Percentage Change Bar Quantitative Strategy이다. 이 전략은 포트폴리오 거래에 대한 두 가지 다른 유형의 전략을 결합하여 각자의 장점을 최대한 발휘하고 더 나은 거래 성과를 달성합니다.

첫 번째 전략은 전날 또는 여러 날과 닫기 가격을 비교하여 반전 전략의 원리를 사용하여 반전 신호가 있는지 판단합니다. 두 번째 전략은 일일 변동 범위를 결정하고 그에 따라 포지션을 설정하기 위해 % 변화 바 차트 지표를 사용합니다.

전략 원칙

이중 반전 비율 변화 바 양적 전략은 두 가지 주요 구성 요소를 사용합니다.

첫 번째 부분은 123 역전 전략입니다. 그 판단 논리는:

  1. 종료 가격이 이전 종료 가격보다 낮고 스톡 빠른 라인이 느린 라인보다 높고 50 수준을 넘으면 과잉 구매로 간주되며 판매 신호가 생성됩니다.

  2. 종료 가격이 이전 종료 가격보다 높고 스톡 빠른 라인이 느린 라인보다 낮고 50 이하인 경우 과잉 판매로 간주되며 구매 신호가 생성됩니다.

  3. 생성된 구매 및 판매 신호에 따라 긴 또는 짧은 포지션을 설정합니다.

두 번째 부분은 비율 변화 바 차트 지표입니다. 판단 논리는:

  1. 현재 바와 N 기간 전 바에 대한 비율 변화를 계산합니다 (input_barsback 매개 변수로 정의됩니다).

  2. 만약 그 비율의 변화는 BuyZone 매개 변수에서 정의된 긍정적 가치 영역보다 높다면, 구매 신호가 생성되고 SellZone에서 정의된 부정적인 가치 영역보다 낮다면, 판매 신호가 생성됩니다.

  3. 생성된 구매 및 판매 신호에 따라 긴 또는 짧은 포지션을 설정합니다.

마지막으로, 두 전략에서 생성되는 신호가 일치할 때만 포지션이 설정됩니다. 그렇지 않으면 포지션이 변경되지 않습니다.

이점 분석

이중 반전 비율 변화 바 양적 전략은 다음과 같은 장점을 가지고 있습니다:

  1. 123 역전 전략은 시장 역전 지점을 식별하는 데 잘 수행합니다. 비율 변화 바 차트 지표는 급격히 브레이크아웃 트렌드를 인식합니다. 조합은 역전 및 포착 트렌드를 모두 식별 할 수 있습니다.

  2. 두 전략의 신호의 조합은 일부 잘못된 신호를 효과적으로 필터링하고 불필요한 스톱 손실을 줄여 거래 위험을 줄일 수 있습니다.

  3. 123 역전 전략은 큰 최적화 공간을 가지고 있습니다. 매개 변수 조합을 조정함으로써 다양한 제품과 주기에 최적화 및 적응 할 수 있습니다.

  4. 비율 변화 바 전략은 직관적입니다. 매개 위험은 매개 변수를 조정하여 쉽게 파악하고 제어 할 수 있습니다.

위험 분석

이중 반전 비율 변화 바 양적 전략은 또한 몇 가지 위험을 가지고 있습니다:

  1. 두 전략의 신호가 일치하지 않을 때, 포지션은 설정할 수 없으며, 일부 거래 기회를 놓칠 수 있습니다. 우리는 일치 가능성을 높이기 위해 비율 변화 바 차트의 매개 변수 범위를 적절히 확장 할 수 있습니다.

  2. 123 역전 전략은 매개 변수에 민감합니다. 부적절한 매개 변수 조합은 너무 많은 잘못된 신호로 이어질 수 있습니다. 안정성을 보장하기 위해 매개 변수는 서로 다른 제품에 대해 개별적으로 테스트해야합니다.

  3. 만약 비율 변화 바 차트에서 생성된 구매 및 판매 신호의 방향이 잘못되어 123 회전 신호와 일치한다면 상당한 손실을 초래할 것입니다. 위험을 통제하기 위해 비율 변화 매개 변수의 진폭을 적절히 줄여야합니다.

  4. 전략이 몇 시간 동안 실행 된 후 매개 변수의 적응력이 감소합니다. 우리는 매개 변수를 조정할 때를 결정하기 위해 전략의 수익 곡선과 거래 신호를 모니터링해야합니다.

최적화 방향

이중 반전 비율 변화 바 양적 전략은 또한 다음과 같은 측면에서 최적화 될 수 있습니다:

  1. 123 역전 전략에 대한 길이, KS Smoothing, DLength와 같은 매개 변수를 최적화하여 다른 제품과 사이클에 더 적합한 매개 변수 포트폴리오를 찾습니다.

  2. % 변화 바 차트의 input_barsback 매개 변수를 조정하여 전략에 더 길거나 짧은 뷰백 기간의 영향을 평가합니다.

  3. 스톱 로스 전략을 도입하면 비율 변화 바에서 잘못된 신호로 인한 큰 손실을 효과적으로 피할 수 있습니다.

  4. 더 정확한 비율 변화 모델을 훈련시키려고 노력합니다. 더 높은 승률을 얻기 위해 머신 러닝 방법을 통해 입출시기를 결정합니다.

  5. 전략에서 거래 신호를 부양하고 거래 빈도를 높이기 위해 판단을 위해 다른 보조 기술 지표를 증가하십시오.

결론

이중 역전 비율 변화 바 양적 전략은 두 가지 다른 유형의 전략의 장점을 완전히 활용하고 위험을 제어하면서 수익 공간을 확장하기 위해 결합합니다. 이해하기 쉽고 조정 가능한 이 전략은 연구와 실무에 적합합니다. 추가 매개 변수 조정 및 전략 최적화로 더 안정적인 초과 수익을 얻을 것으로 예상됩니다.


/*backtest
start: 2023-11-05 00:00:00
end: 2023-12-05 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 31/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
//  This histogram displays price or % change from previous bar. 
//
// 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


PCB(input_percentorprice,input_barsback,SellZone,BuyZone) =>
    pos = 0.0
    xPrice = close
    xPrice1 = iff(input_percentorprice, xPrice - xPrice[input_barsback], ((xPrice - xPrice[input_barsback]) * 100)/ xPrice[input_barsback])
    pos := iff(xPrice1 > BuyZone, 1,
             iff(xPrice1 < SellZone, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Percent change bar", 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, "---- Percent change bar ----")
input_percentorprice = input(false, title="Price Change")
input_barsback = input(1, title="Look Back")
SellZone = input(-0.33, minval=0.01, step = 0.01)
BuyZone = input(0.33, minval=0.01, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posPCB = PCB(input_percentorprice,input_barsback,SellZone,BuyZone)
pos = iff(posReversal123 == 1 and posPCB == 1 , 1,
	   iff(posReversal123 == -1 and posPCB == -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 )

더 많은