이중 이동 평균 가격 반전 브레이크업 전략

저자:차오장, 날짜: 2023-12-07 18:15:12
태그:

img

전반적인 설명

이중 이동 평균 가격 반전 브레이크아웃 전략은 더 높은 품질의 진입 기회를 식별하기 위해 이중 거래 신호를 결합합니다. 먼저 9 일 이동 평균과 상부 및 하부 레일을 사용하여 기본 브레이크아웃 프레임워크를 구축하고, 123 패턴을 사용하여 기회 방향을 판단한 후 신호를 필터하는 스토카스틱 지표를 도입하고, 마지막으로 비교적 엄격한 진입 규칙을 형성합니다. 이러한 유형의 조합 필터링 방법은 중장기 보유에 적합한 신호 품질을 보장하면서 거래 빈도를 효과적으로 줄일 수 있습니다.

원칙

이중 이동 평균 가격 반전 브레이크아웃 전략은 두 가지 하위 전략으로 구성됩니다.

첫 번째 하위 전략은 123 패턴 판단이다. 이 전략은 미래의 가격 파업의 유력한 방향을 판단하기 위해 지난 두 일 동안의 폐쇄 가격 관계를 사용합니다. 만약 오늘날의 종료 가격이 전날의 종료 가격에 비해 상승하고, 전날의 종료 가격이 전날의 종료 가격에 비해 하락하면 구매 신호로 간주됩니다; 만약 오늘날의 종료 가격이 전날의 종료 가격에 비해 하락하고, 전날의 종료 가격이 전날의 종료 가격에 비해 하락하면 판매 신호로 간주됩니다. 이 패턴은 단기 정서가 비관적에서 낙관적 또는 낙관적에서 비관적으로 전환하는 주요 전환점을 반영한다고 믿어집니다. 여기서 우리는 스토카스틱 지표를 사용하여 구매 및 판매 신호를 다시 확인하고, 스토카스틱 지표가 대응하는 과판 신호 또는 과판 신호를 제공 할 때 최종 작업을 생성합니다.

두 번째 하위 전략은 이동 평균 채널 브레이크오웃이다. 이 전략은 먼저 지정 된 주기의 기하급수적인 이동 평균 라인을 계산하고 (예를 들어 9 일), 그 다음 채널의 상부 및 하부 레일로 그 위에 및 아래에 특정 비율을 추가합니다. 가격이 상부 레일을 뚫면 판매 신호가 생성됩니다. 가격이 하부 레일을 뚫면 구매 신호가 생성됩니다. 여기서 상부 및 하부 레일의 팽창과 수축의 폭은 신호 주파수를 조정하기 위해 비율 인자로 제어 할 수 있습니다.

마지막으로, 두 하위 전략의 신호 방향이 일관성있는 경우에만, 즉 123 역전 신호와 채널 브레이크아웃 신호가 같은 방향으로있을 때, 실제 거래를 안내하는 실제 신호가 최종적으로 생성 될 것입니다. 이 이중 필터링 메커니즘은 많은 잘못된 신호를 필터링하여 거래 빈도를 줄이고 각 거래의 높은 신뢰성을 보장 할 수 있습니다.

이점 분석

이중 이동 평균 가격 반전 브레이크업 전략은 여러 분석 방법을 결합하고 다음과 같은 장점을 가지고 있습니다.

  1. 이중 신호 필터링 메커니즘은 유효하지 않은 신호를 효과적으로 줄이고 각 거래를 더 품질있게 할 수 있습니다.

  2. 123 패턴 판단은 단기 역전 전략에 속하지만, 이동 채널 브레이크오웃은 중장기 트렌드 추적 전략에 속합니다. 둘을 결합하면 더 나은 수익으로 단기, 중장기 및 장기간의 조화를 달성 할 수 있습니다.

  3. 채널의 상부 및 하부 레일의 너비를 조정함으로써 신호 주파수는 다른 거래 선호도에 맞게 자유롭게 제어 될 수 있습니다.

  4. 채널의 중간선으로 9일 이동 평균을 사용하면 과도하게 빈번한 신호를 피하기 위해 매개 변수 선택이 더 합리적입니다.

  5. 스토카스틱 지표의 과잉 구매 및 과잉 판매 구역을 적용함으로써 쇼크 시장에 갇히지 않도록합니다.

위험 분석

이중 이동 평균 가격 반전 브레이크업 전략은 또한 다음과 같은 측면에서 몇 가지 위험을 가지고 있습니다.

  1. 이중 필터링 신호 메커니즘은 단일 측면 전략이 포착 할 수있는 몇 가지 기회를 놓치고 약간의 주문을 놓칠 위험이 있습니다.

  2. 123 구매 및 판매 포인트는 모든 가짜 브레이크를 완전히 필터링 할 수 없습니다. 부적절한 사용은 손실로 이어질 수 있습니다.

  3. 급격한 시장 변화의 경우, 잘못된 스톱 로스 설정으로 인해 큰 손실이 발생할 수 있습니다.

  4. ifft 조건의 논리는 복잡합니다. 부적절한 매개 변수는 논리 오류에 취약하여 유효하지 않은 신호 판단을 초래합니다.

  5. 샘플 외의 데이터는 매개 변수 안정성에 영향을 미치므로 매개 변수의 동적 최적화가 필요합니다.

최적화 방향

이중 이동 평균 가격 반전 브레이크아웃 전략에는 여전히 최적화 여지가 있습니다.

  1. 다른 종류의 이동 평균을 테스트하여 더 나은 안정적인 신호 품질을 가진 매개 변수 조합을 선택할 수 있습니다.

  2. 적절한 너비의 채널은 특정 제품 데이터의 특성에 따라 선택할 수 있습니다.

  3. 동적 스톱 손실은 최대 손실 비율을 제어하기 위해 결합 될 수 있습니다.

  4. 기계 학습 모델은 전략을 더 견고하게 만들기 위해 동적 매개 변수 최적화를 위해 도입 할 수 있습니다.

  5. 거래량이나 변동성에 기반한 필터를 추가하여 불안정한 시장 조건에서 과도하게 빈번한 입출입을 방지할 수 있습니다.

결론

이중 검증 필터링 메커니즘을 통해 이중 이동 평균 가격 반전 브레이크아웃 전략은 단기 반전과 중장기 트렌드 추적을 성공적으로 결합하여 유효하지 않은 신호를 효과적으로 필터링하고 높은 품질의 기회를 선택할 수 있는 효율적인 거래 시스템을 형성하며 상대적으로 강력한 사용자 정의성을 가지고 있습니다. 일반적인 틀로서이 전략은 여전히 매개 변수 조정 및 기계 학습 최적화에서 사용할 수있는 큰 잠재력을 가지고 있습니다.


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

//@version=4
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 18/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
// Moving Average Displaced Envelope. These envelopes are calculated 
// by multiplying percentage factors with their displaced expotential 
// moving average (EMA) core.
// How To Trade Using:
// Adjust the envelopes percentage factors to control the quantity and 
// quality of the signals. If a previous high goes above the envelope 
// a sell signal is generated. Conversely, if the previous low goes below 
// the envelope a buy signal is given.
//
// 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


MADE(Price,Period, perAb, perBl, disp) =>
    pos = 0.0
    sEMA = ema(Price, Period)
    top = sEMA[disp] * ((100 + perAb)/100)
    bott = sEMA[disp]* ((100 - perBl)/100)
    pos := iff(close < bott , 1,
    	     iff(close > top, -1, pos[1])) 
    pos

strategy(title="Combo Backtest 123 Reversal & MA Displaced Envelope", 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, "---- MA Displaced Envelope ----")
Price = input(title="Source", type=input.source, defval=close)
Period =input(defval=9, minval=1)
perAb = input(title = "Percent above", defval=.5, minval=0.01, step = 0.1)
perBl = input(title = "Percent below", defval=.5, minval=0.01, step = 0.1)
disp = input(title = "Displacement", defval=13, minval=1) 
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posMADE = MADE(Price,Period, perAb, perBl, disp)
pos = iff(posReversal123 == 1 and posMADE == 1 , 1,
	   iff(posReversal123 == -1 and posMADE == -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 )

더 많은