이중 트렌드 추적 전략

저자:차오장, 날짜: 2023-09-27 16:14:25
태그:

전반적인 설명

이중 트렌드 추적 전략은 두 가지 다른 전략 신호를 결합하여 시장 트렌드를 더 정확하게 파악하고 과도한 수익을 창출합니다. 먼저 123 역전 전략을 사용하여 가격 역전 신호를 결정하고, 과잉 구매 과잉 판매 지표를 결합하여 위치 방향을 결정하고, 추세를 추적하면서 함정에 빠지지 않도록합니다.

전략 논리

이 전략은 두 부분으로 구성됩니다.

  1. 123 역전 전략

    123 회전 전략은 먼저 이전 두 일 사이의 종료 가격 관계를 판단합니다. 종료 가격이 최근에 회전 한 경우 (예를 들어, 종료 가격이 어제 상승하고 전날 하락) 이는 잠재적 인 전환점을 나타냅니다.

    주식 지표는 주식 지표와 거래 시기를 결합하여 구매 및 판매 시기를 결정합니다. 주식 지표의 빠른 라인이 특정 수준 (예를 들어 50) 이하이고 느린 라인이 빠른 라인의 위에있을 때, 그것은 과소매로 간주되며 구매 신호를 생성합니다. 주식 지표의 빠른 라인이 특정 수준 (예를 들어 50) 이상이고 느린 라인이 빠른 라인의 아래에있을 때, 그것은 과소매로 간주되며 판매 신호를 생성합니다.

    따라서 123 역전 전략은 실제 거래 신호를 생성하기 위해 가격 역전을 식별하는 것 외에도 스톡 지표로부터 확인을 필요로 합니다.

  2. 과잉 매수/ 과잉 판매 지표

    과잉 구매/ 과잉 판매 지표는 스톡 지표를 직접 사용합니다. 스톡 지표가 특정 수준 (예를 들어 90) 을 넘으면 과잉 구매로 간주되어 판매 신호를 생성합니다. 스톡 지표가 특정 수준 (예를 들어 20) 이 넘으면 과잉 판매로 간주되어 구매 신호를 생성합니다.

    이 지표는 트렌드를 추적하기 위해 스톡 지표를 통해 직접 과잉 구매/ 과잉 판매 수준을 판단합니다.

마지막으로, 전략은 두 전략의 신호를 결합합니다. 신호가 같은 방향으로 있을 때만 최종 구매 또는 판매 신호가 생성되어 시장 트렌드를 더 정확하게 포착합니다.

이점 분석

듀얼 트렌드 추적 전략의 가장 큰 장점은 잘못된 거래 신호를 피하기 위해 가격 추세와 과잉 구매 / 과잉 판매 조건을 모두 확인할 수 있다는 것입니다. 구체적인 장점:

  1. 두 개의 전략 신호를 결합하면 더 강력한 검증이 가능하고 하나의 전략에서 발생하는 오류로 인한 손실을 줄일 수 있습니다.

  2. 123 역전 전략은 잠재적인 트렌드 역전 지점을 적시에 파악할 수 있습니다.

  3. 과잉 구매/ 과잉 판매 지표는 현재 시장 상황을 확인할 수 있으며, 최고와 판매 최저를 쫓는 것을 피할 수 있습니다.

  4. 두 전략은 서로 확인하여 잘못된 신호를 피하고 안정성을 향상시킬 수 있습니다.

  5. 간단하고 효과적인 지표와 이해하기 쉽고 적용하기 쉬운 명확한 논리를 결합합니다.

위험 분석

이 전략은 결합된 검증을 통해 안정성을 향상시키기는 하지만 여전히 몇 가지 위험이 있습니다.

  1. 123 반전 전략은 반전 지점을 완벽하게 식별 할 수 없으며 몇 가지 기회를 놓칠 수 있습니다. 반전 신호 문턱을 낮추기 위해 매개 변수를 세밀하게 조정하십시오.

  2. 과잉 구매/ 과잉 판매 지표는 하나의 스톡 지표에만 의존하고 있으며 잘못된 신호를 생성할 수 있습니다. 확인을 위해 MA 라인 등을 추가합니다.

  3. 두 가지 전략 신호는 서로를 취소하고 기회를 놓칠 수 있습니다. 제약을 줄이기 위해 매개 변수를 조정하십시오.

  4. 이 전략은 역사적인 데이터에 대해서만 백테스트됩니다. 매개 변수는 라이브 트레이딩에서 지속적인 최적화가 필요합니다. 손실을 제어하기 위해 스톱 로스 메커니즘을 추가합니다.

  5. 매개 변수는 다른 제품과 거래 기간에 대한 독립적인 테스트와 최적화가 필요합니다. 매개 변수를 직접 복사하지 마십시오.

최적화 방향

이 전략은 다음 측면에서 더 이상 최적화 될 수 있습니다.

  1. 두 전략의 매개 변수를 최적화하여 다양한 시장 조건에서 선택할 수 있는 최적화 프로그램을 위한 매개 변수 풀을 형성합니다.

  2. 잘못된 신호를 피하기 위해 MA, 볼링거 밴드 등을 기반으로 필터 조건을 추가합니다.

  3. 마감 손실 메커니즘을 추가하십시오. 마감 손실, 이동 중지 손실, 시간 중지 손실 등을 추적하여 최대 마감량을 제어하십시오.

  4. 낮은 유동성을 피하기 위해 다른 상품에 대한 볼륨 또는 포지션에 대한 필터를 추가하는 것을 고려하십시오.

  5. 시간이 지남에 따라 매개 변수의 진화를 연구하고 기계 학습을 사용하여 자동으로 최적화합니다.

  6. 트렌드 없는 시장에서 오버 트레이딩을 피하기 위해 진입 빈도를 최적화하십시오.

결론

이중 트렌드 추적 전략은 123 회전 및 과잉 구매 / 과잉 판매 전략을 결합하여 과잉 구매 / 과잉 판매 수준을 검증하는 동안 트렌드 반전을 정확하게 식별합니다. 이것은 잘못된 신호를 필터링하고 과도한 수익을위한 실제 트렌드를 캡처합니다. 단일 지표 전략보다 안정적이고 수익성이 높습니다. 그러나 위험을 적시에 중지 손실을 통해 관리해야합니다. 파라미터 최적화, 필터 추가, 자동화 등을 통해 미래 개선이 가능합니다.


/*backtest
start: 2022-09-20 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/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
// Simple Overbought/Oversold indicator
//
// 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


OO(Length,BuyBand,SellBand) =>
    pos = 0.0
    xOBOS = stoch(close, high, low, Length)
    nRes = iff(close > close[Length], xOBOS / 100, (100 - xOBOS) / 100)
    pos :=iff(nRes < SellBand, -1,
           iff(nRes > BuyBand, 1, nz(pos[1], 0))) 
    pos

strategy(title="Combo Backtest 123 Overbought/Oversold", 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, "---- Overbought/Oversold ----")
LengthOO = input(10, minval=1)
BuyBand = input(0.92, step = 0.01)
SellBand = input(0.5, step = 0.01)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posOO = OO(LengthOO,BuyBand,SellBand)
pos = iff(posReversal123 == 1 and posOO == 1 , 1,
	   iff(posReversal123 == -1 and posOO == -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 )

더 많은