2요소 사이클 트레이딩 전략


생성 날짜: 2023-12-05 17:56:27 마지막으로 수정됨: 2023-12-05 17:56:27
복사: 2 클릭수: 614
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

2요소 사이클 트레이딩 전략

개요

이중 인자 순환 거래 전략은 양적 거래 전략이다. 그것은 두 가지 다른 유형의 기술 지표를 결합하여 거래 신호를 생성하여 시장 추세를 추적하여 초과 수익을 얻는다.

이 전략의 장점은 서로 다른 요인을 조합하여 거래 기회를 찾을 수 있다는 것입니다. 이중 확인은 신호의 신뢰성을 높이고 잘못된 거래의 가능성을 줄일 수 있습니다. 동시에, 전략은 순환 거래의 장점을 최대한 활용합니다. 즉, 적시에 중지하고 역으로 입장을 열고 위험을 효과적으로 제어 할 수 있습니다.

전략 원칙

이 전략은 두 부분으로 구성되어 있습니다.

  1. 123 역전 전략 이 전략은 울프 센의 ?? 나는 어떻게 선물 시장에서 자금을 3번 뒤집어 놓았는가 ?? 에서 유래했다. 그것의 거래 논리는: 종결 가격이 전날의 종결 가격보다 2일 연속으로 높고, 9일 느린 K 선이 50보다 낮을 때 더 많이; 종결 가격이 전날의 종결 가격보다 2일 연속으로 낮고, 9일 빠른 K 선이 50보다 높을 때 공백한다.

  2. 보이스/비즈 지지 저항 전략 이 전략은 가격이 중요한 지지 또는 저항을 깨는지 판단하여 신호를 생성합니다. 가격이 지난 거래 날의 최고 가격을 돌파했을 때 부진하고, 가격이 지난 거래 날의 최저 가격을 넘어갔을 때 부진합니다.

위 두 가지 전략의 신호를 통합하여, 양쪽의 신호가 일치하면 포지션에 진입하거나, 그렇지 않으면 청산한다. 동시에 시장 변화 시 적시에 손실을 멈추고 거래를 역전하여 자금의 순환 작동을 구현하기 위해 역 포지션 모드를 설정했다.

우위 분석

이 두 요소의 순환 거래 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 다인자 설계는 신호 신뢰성이 높다는 것을 보장한다. 123 회전 전략과 지지 저항 전략은 상호 검증되어 잘못된 신호를 줄일 수 있다.

  2. 순환 거래 메커니즘은 전략이 시장의 변화에 대응하고 일방적인 손실을 효과적으로 제어할 수 있도록 해줍니다.

  3. 9일 스토카스틱스 지표는 시장의 잡음을 필터링하여 신호를 더 명확하게 만듭니다.

  4. 단일 인자 전략보다 위험도가 낮고, 회수율도 낮다. 다인자는 합력을 형성하고, 비이성적인 변동이 전략에 미치는 영향을 억제한다.

위험 분석

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

  1. 불안정한 상황에서는 트렌드를 잘 잡지 못하며, 종종 상쇄 손실이 상쇄 입장을 열고 거래 비용을 증가시킨다. 상쇄 손실 경계를 적절히 완화하여 대응할 수 있다.

  2. 스토카스틱스 매개 변수 설정은 신호 품질에 영향을 미칩니다. 매개 변수가 잘못되면 신호의 잘못된 위치와 품질이 떨어질 수 있습니다. 매개 변수를 반복적으로 테스트하고 최적화해야 합니다.

  3. 이중 인자 설계는 신호 품질을 향상시키지만, 전략에 대한 시장 진동 소음 진동의 영향을 증가시킵니다. 이것은 우리가 전략을 구성하고 검증할 때 더 신중하게 요구합니다.

최적화 방향

이 전략은 다음의 몇 가지 측면에서 더욱 개선될 수 있습니다.

  1. 다양한 길이의 주기의 스토카스틱스를 테스트하여 시장 소음을 제거하는 최적의 변수 조합을 찾습니다.

  2. 트렌드 필터에 접속하여 변동 상황을 필터링하고, 명확한 트렌드에서만 포지션을 열 수 있습니다.

  3. 거래 비용을 절감하면서도 효율적인 스톱 라인 설정 알고리즘을 최적화

  4. 다른 요소의 조합을 테스트하여 거래 신호가 더 명확하고 전략이 더 안정적인 요소의 조합을 찾습니다.

요약하다

이 전략은 이중 인자 설계로 인해 더 높은 신호 품질과 위험 조정 수익을 얻습니다. 순환 거래 메커니즘을 사용하여 일방적인 손실을 효과적으로 제어합니다. 이 전략은 위험과 이익 사이의 좋은 균형을 얻었습니다. 더 나은 전략 성능을 얻기 위해 우리는 여전히 파라미터 최적화, 위험 제어 설정 등의 측면에서 심도 있는 연구를 수행해야합니다.

전략 소스 코드
/*backtest
start: 2023-11-04 00:00:00
end: 2023-12-04 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 13/11/2019
// 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
// Cueing Off Support And Resistance Levels, by Thom Hartle 
// modified by HPotter for trade signals.
// The related article is copyrighted material from Stocks & Commodities.
//
// 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

COSRL(SigVal) =>
    pos = 0.0
    xLow = low
    xHigh = high
    xHighD = security(syminfo.tickerid,"W", high[1])
    xLowD  = security(syminfo.tickerid,"W", low[1])
    sigpre1 = iff(xHigh <= xLowD, -1,
                 iff(xLow >= xHighD, 1, nz(pos[1], 0))) 
    sigpre2 = iff( xHigh <= xHighD, -1,
                 iff(xLow >= xLowD, 1, nz(pos[1], 0))) 
    pos := SigVal ? sigpre1 : sigpre2
    pos

strategy(title="Combo Backtest 123 Reversal & Cueing Off Support And Resistance Levels", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SigVal = input(true, title="To Line \ From Line")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posCOSRL = COSRL(SigVal)
pos = iff(posReversal123 == 1 and posCOSRL == 1 , 1,
	   iff(posReversal123 == -1 and posCOSRL == -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 )