다중전략 통합을 기반으로 한 반전 및 중심 트레이딩 전략


생성 날짜: 2024-01-03 16:51:03 마지막으로 수정됨: 2024-01-03 16:51:03
복사: 1 클릭수: 597
avatar of ChaoZhang ChaoZhang
1
집중하다
1621
수행원

다중전략 통합을 기반으로 한 반전 및 중심 트레이딩 전략

개요

이 전략은 이중 거래 신호를 통합하는 방식으로 더 안정적이고 효율적인 거래 결정을 구현한다. 하나는 가격 반전 신호와 무작위 지표의 반전 전략이며, 두 번째는 중심선과 가격 통로의 돌파 전략이다. 두 가지 전략의 거래 신호는 논리 및 운영을 수행한다. 즉 두 가지 전략이 동방향 신호를 동시에 발신할 때만 포지션을 열는다. 이 다중 전략 통합 방식은 일부 비효율적 인 신호를 필터링하여 더 신뢰할 수있는 거래 결정을 구현 할 수 있습니다.

전략 원칙

반전 전략 부분에서는, 가격이 두 번 연속 거래일의 반전 형태를 나타내고, 그리고 무작위 지표가 초매 초매 영역에 진입했을 때 거래 신호를 생성한다. 이렇게 하면, 동시에 가치 반전 신호와 초매 초매 신호의 이중 확인을 이용할 수 있다. 중심중심선 부분에서는, 가격의 선형적 회귀 중심선을 중심으로 가격의 상하 통로를 구성하고, 통로 돌파는 거래 신호를 생성한다. 통로 돌파 신호는 동시에 가격이 경향적인 방향적 움직임이 시작되는 것을 의미한다.

두 가지 전략은 각각 가치와 트렌드 기회를 포착한다. 전략 신호의 논리와, 즉 두 가지 전략이 동방향 신호를 동시에 발신할 때만 포지션을 열 수 있다. 이것은 일부 비효율 신호를 효과적으로 필터링하여 최종 전략을 더 신뢰할 수 있다.

우위 분석

이 전략의 가장 큰 장점은 신호의 안정적 신뢰성이다. 반전 전략과 트렌드 전략의 조합, 반전과 트렌드의 두 가지 거래 기회를 동시에 고려하여 큰 시장을 놓치지 않는다. 논리와 연산은 일부 무효 신호를 필터링하여 최종 전략을 더 신뢰할 수있게 만들고, 잡음 속임수를 피한다.

또한, 반전 전략과 트렌드 전략의 조합은 다중 시간 프레임 아래에서도 안정적인 동작을 가능하게 한다. 반전 전략은 단기 오버 바이 오버 세일을 이용한 신호를 생성하고, 중심중심선 전략은 중장선 평균선을 기반으로, 시간 프레임은 상호 보완되어 지속적인 안정적인 거래 기회를 생성한다.

위험 분석

이 전략의 가장 큰 위험은 이중 전략 신호가 일치하지 않아 충분한 거래 신호를 생성하지 못한다는 것입니다. 이것은 주식 수평 정리 시 발생할 수 있습니다. 가격이 오랫동안 흔들리고 명확한 방향성이없는 경우 반전 신호와 추세 신호는 쉽게 생성되지 않으며 거래 기회를 줄일 수 있습니다.

또한, 이중 전략 논리 및 연산은 일부 단일 전략의 기회를 놓칠 수도 있다. 단일 전략만이 유효한 거래 신호를 생성할 때 포지션을 열지 않는다. 이것은 어느 정도의 기회 비용을 초래할 수 있다.

위험을 줄이기 위해, 적절하게 일부 파라미터를 완화하여 전략 신호를 더 쉽게 맞추어 입장을 열 수 있습니다. 또한, 선택된 주식 제도를 도입하여 더 많은 거래 기회를 얻기 위해 더 많은 트렌드가 명백한 지표를 선택하여 거래하는 것을 고려 할 수 있습니다.

최적화 방향

이 전략은 다음 두 가지 측면에서 최적화될 수 있습니다.

우선은 파라미터 최적화이다. 스토치 무작위 지표의 파라미터, 중심선 통로의 파라미터 등이 포함될 수 있다. 더 잘 맞는 신호를 얻기 위해 계속 테스트 최적화를 할 수 있다. 이것은 더 많은 재측정을 통해 실현될 수 있다.

다음으로, 선택 주식과 유사한 동작의 메커니즘을 도입한다. 이 전략은 명백한 추세가있는 지표에 더 적합하기 때문에. 따라서 특정 지표에 따라 적합한 지표를 선택하여 거래 할 수 있다면 전략의 전반적인 성능을 크게 향상시킬 수 있습니다. 이것은 산업의 순환성, 일률적인 시스템과 같은 방법을 결합하여 선택 주식 모듈을 설계해야합니다.

요약하다

이 전략은 역전 전략과 트렌드 전략의 통합을 통해 거래 의사 결정의 이중 확인과 다중 시간 프레임 일치를 구현한다. 또한 거래 기회를 줄이는 신호 일치의 어려움이 있습니다. 다음 단계의 최적화는 더 강력한 전략 성능을 얻기 위해 매개 변수와 모듈의 두 가지 수준에서 시작 할 수 있습니다.

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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/07/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
// The indicator is based on moving averages. On the basis of these, the 
// "center" of the price is calculated, and price channels are also constructed, 
// which act as corridors for the asset quotations.
//
// 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

CenterOfGravity(Length, m,Percent, SignalLine) =>
    pos = 0
    xLG = linreg(close, Length, m)
    xLG1r = xLG + ((close * Percent) / 100)
    xLG1s = xLG - ((close * Percent) / 100)
    xLG2r = xLG + ((close * Percent) / 100) * 2
    xLG2s = xLG - ((close * Percent) / 100) * 2
    xSignalR = iff(SignalLine == 1, xLG1r, xLG2r)
    xSignalS = iff(SignalLine == 1, xLG1s, xLG2s)
    pos :=  iff(close > xSignalR, 1,
             iff(close < xSignalS, -1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Reversal & Center Of Gravity", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
LengthCoF = input(20, minval=1)
m = input(5, minval=0)
Percent = input(1, minval=0)
SignalLine = input(1, minval=1, maxval = 2, title = "Trade from line (1 or 2)")
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(LengthCoF, KSmoothing, DLength, Level)
posCenterOfGravity = CenterOfGravity(Length, m,Percent, SignalLine)
pos = iff(posReversal123 == 1 and posCenterOfGravity == 1 , 1,
	   iff(posReversal123 == -1 and posCenterOfGravity == -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 )