이중 반전 중복 선택 전략

저자:차오장, 날짜: 2023-10-26 16:56:56
태그:

img

전반적인 설명

이중 반전 겹치는 선택 전략은 자산 할당 및 타이밍 거래를 달성하기 위해 반전 거래 전략을 과잉 구매 과잉 판매 필터와 결합합니다. 과잉 구매 과잉 판매 지표를 사용하여 비합리적인 확장 구역에서 불필요한 거래를 피하는 동시에 트렌드 반전 지점에서 장과 단위 포지션을 취하는 것을 목표로합니다.

전략 논리

이 전략은 두 가지 중복된 하위 전략으로 구성됩니다.

  1. 123 역전 전략

이 전략은 폐쇄 가격 반전을 2 일 연속으로 하는 리버서스 신호를 사용합니다. 구체적으로, 종료 가격이 지난 2 일 동안 상승하고 9 일 느린 스토카스틱이 50 이하인 경우, 종료 가격이 지난 2 일 동안 하락하고 9 일 빠른 스토카스틱이 50 이상인 경우, 장기화되고, 단기 트렌드 반전을 포착하는 것을 목표로 합니다.

  1. DSS 오시레이터 전략

이 전략은 과잉 구매 과잉 판매 분석을 위해 DSS 오시레이터를 사용합니다. 5 일 MA가 10 일 MA와 20 과잉 판매 수준 이하인 경우 길게 가고, 5 일 MA가 10 일 MA와 80 과잉 판매 수준 이상인 경우 짧게됩니다. 이 과잉 구매 과잉 판매 전략은 비합리 영역에서 불필요한 거래를 피하는 데 도움이됩니다.

최종 신호는 두 전략이 일치 할 때만 생성됩니다. 이것은 두 유형의 전략의 강점을 결합함으로써 수익성을 향상시킵니다.

이점 분석

  1. 역전과 과잉 구매 과잉 판매 전략의 장점을 결합합니다. 비합리적인 구역 거래를 피하면서 단기적 역전을 잡습니다.

  2. 간단한 논리와 몇 가지 매개 변수는 123 역전을 쉽게 구현 할 수 있습니다. DSS는 견고한 과잉 구매 과잉 판매 분석을 위해 이중 평형을 사용합니다.

  3. 이 조합은 잘못된 신호를 줄임으로써 신호 신뢰성을 향상시킵니다.

  4. 유연한 매개 변수 조정으로 다른 시장에 전략을 조정합니다.

위험 분석

  1. 역전 전략은 다양한 시장에서 피킹 페니 리스크와 윙사입니다.

  2. DSS 최적화는 어렵고 매개 변수에 민감합니다.

  3. 다른 신호는 거래 기회를 놓칠 수 있습니다.

  4. 단순한 가격 지표는 수익성을 제한합니다.

해결책:

  1. 휘프사그 위험을 줄이기 위해 보관 기간을 단축합니다.

  2. 성공적인 사례를 바탕으로 세심한 매개 변수 조정

  3. 전략을 개선하기 위해 필터를 추가합니다.

  4. 입력 시기를 최적화하거나 위치 크기를 조정합니다.

개선 방향

  1. 신호의 정확성을 높이기 위해 다른 역전 표시기를 테스트합니다.

  2. RSI와 같은 대안적인 과잉 구매 과잉 판매 지표를 탐구하십시오.

  3. 스톱 로스를 추가해서 이윤을 확보하고 손실을 제한합니다.

  4. 다양한 시장에 대한 매개 변수를 최적화합니다.

  5. 동적 매개 변수 조절을 고려해 보세요.

  6. 신호를 생성하기 위해 기계 학습 모델을 만들 수 있습니다.

결론

이중 반전 중복 선택 전략은 반전 및 과잉 매매 전략을 결합하여 자산 할당 및 타이밍 거래 기능을 모두 제공합니다. 유연한 매개 변수, 간단한 논리 및 쉬운 구현과 같은 장점이 있으며 비합리적 영역에서 노이즈 거래를 효과적으로 필터합니다. 그러나 반전 위험 및 매개 변수 최적화 어려움과 같은 한계가 있습니다. 향후 개선은 스톱 로스, 매개 변수 최적화, 기계 학습 통합 등을 추가함으로써 발생할 수 있습니다. 전반적으로 강력한 양적 거래 솔루션을 제공합니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 12/03/2020
// 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
// Double Smoothed Stochastics (DSS) is designed by William Blaw. 
// It attempts to combine moving average methods with oscillator principles. 
//
// 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

DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold) =>
    pos = 0
    xPreCalc = ema(stoch(close, high, low, PDS), EMAlen)
    xDSS = ema(stoch(xPreCalc, xPreCalc, xPreCalc, PDS), EMAlen)
    xTrigger = ema(xDSS, TriggerLen)
    pos := iff(xTrigger < xDSS and xTrigger < Oversold, -1,
	         iff(xTrigger > xDSS and xTrigger > Overbought, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & DSS Bressert", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
PDS = input(10, minval=1)
EMAlen = input(9, minval=1)
TriggerLen = input(5, minval=1)
Overbought = input(80, minval=1)
Oversold = input(20, minval=1)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posDSS = DSSB(PDS, EMAlen,TriggerLen,Overbought,Oversold)
pos = iff(posReversal123 == 1 and posDSS == 1 , 1,
	   iff(posReversal123 == -1 and posDSS == -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 )

더 많은