양방향 이동평균 반전 전략


생성 날짜: 2023-11-21 11:28:27 마지막으로 수정됨: 2023-11-21 11:28:27
복사: 0 클릭수: 586
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

양방향 이동평균 반전 전략 여기 제가 여러분들의 요청에 따라 글을 쓰려고 했던 글이 있습니다.

개요

이 전략은 123 형태 반전 전략과 수면 힘 지표 전략을 통합하여, 둘 다 동방향 상장 또는 하위 신호가 발생하면 거래 신호를 발생시키고, 돌파 반전 거래 전략에 속한다.

전략 원칙

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

  1. 123 형태 역전 전략

2일 연속으로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 3일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 3일째로 하락한 후 4일째로 하락한 후 4일째로 하락한 후 3일째로 하락한 후 4일째로 하락한 후 3일째로 하락한

  1. 베어 파워 지표 전략

파워 지표는 다공력 대조를 반영하며, 지표가 설정된 판매 경계선보다 크면 판매 신호를 발생시키고, 지표가 설정된 구매 경계선보다 작으면 구매 신호를 발생시킨다.

합성 신호의 경우, 둘 다 동방향 신호를 주면, 실제 거래 신호를 생성한다.

전략적 이점

  1. 반전 신호와 지표 필터링을 결합하여 가짜 돌파를 방지하고 신호 품질을 향상시킵니다.

  2. 다양한 시기가 적용되며, 다양한 시장 환경에 적응할 수 있습니다.

  3. 구성 요소 전략은 단독으로 사용할 수 있고, 전략 모듈화 설계도 함께 사용할 수 있다.

전략적 위험

  1. 역전 신호가 회귀 깊이가 큰 경우 발생할 수 있다.

  2. 파워 지표 파라미터 설정은 반복 테스트를 통해 최적화된다.

  3. 다인자 통합 전략의 파라미터를 조정하는 것은 복잡하며, 많은 역사 데이터 테스트가 필요합니다.

전략 최적화

  1. 더 많은 데이터 소스를 연결하여 더 오랜 기간 동안 더 풍부한 데이터를 얻을 수 있습니다.

  2. 기계 학습 방법을 적용하여 자동 검색 및 평가 파라미터 콤비 .

  3. 단편적 손실을 통제하기 위해 손해 방지 장치를 추가하십시오.

요약하다

이 전략은 역기술 분석 및 양적 지표를 종합적으로 적용하여, 이중 확인을 통해 신호 품질을 향상시키고, 모듈화도가 높고, 확장성이 강하며, 실용형 전략에 속한다. 후속에는 더 많은 첨단 기술 수단을 도입하여 최적화하여 더 복잡한 시장 환경에 적응 할 수 있다.

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

//@version=3
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 29/05/2019
// This is combo strategies for get 
// a cumulative signal. Result signal will return 1 if two strategies 
// is long, -1 if all strategies is short and 0 if signals of strategies is not equal.
//
// 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
//  Bear Power Indicator
//  To get more information please see "Bull And Bear Balance Indicator" 
//  by Vadim Gimelfarb. 
//
// 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

BearPower(SellLevel, BuyLevel) =>
    value =  iff (close < open ,  
              iff (close[1] > open ,  max(close - open, high - low), high - low), 
               iff (close > open, 
                 iff(close[1] > open, max(close[1] - low, high - close), max(open - low, high - close)), 
                  iff(high - close > close - low, 
                   iff (close[1] > open, max(close[1] - open, high - low), high - low), 
                     iff (high - close < close - low, 
                      iff(close > open, max(close - low, high - close),open - low), 
                       iff (close > open, max(close[1] - open, high - close),
                         iff(close[1] < open, max(open - low, high - close), high - low))))))
    pos = 0.0
    pos := iff(value > SellLevel, -1,
	   iff(value <= BuyLevel, 1, nz(pos[1], 0))) 

    pos

strategy(title="Combo Backtest 123 Reversal & Bear Power", shorttitle="Combo", overlay = true)
Length = input(14, minval=1)
KSmoothing = input(1, minval=1)
DLength = input(3, minval=1)
Level = input(50, minval=1)
//-------------------------
SellLevel = input(30)
BuyLevel = input(3)
reverse = input(false, title="Trade reverse")
posReversal123 = Reversal123(Length, KSmoothing, DLength, Level)
posBearPower = BearPower(SellLevel, BuyLevel)
pos = iff(posReversal123 == 1 and posBearPower == 1 , 1,
	   iff(posReversal123 == -1 and posBearPower == -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 ? red: possig == 1 ? green : blue )