이중 이동평균 가격 돌파 및 롱숏 파워밸런스 결합 전략


생성 날짜: 2024-01-08 17:09:48 마지막으로 수정됨: 2024-01-08 17:09:48
복사: 3 클릭수: 635
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동평균 가격 돌파 및 롱숏 파워밸런스 결합 전략

개요

이 전략은 우선 2과 20기 지수 이동 평균을 이용하여 쌍평평선 지표를 구성하고, 가격이 평균선을 뚫었는지 판단하고, 진입장 내의 기본 판단을 한다. 동시에, 보조 판단 지표는 다공력 균형 지표는 다공력 및 공수 상대력을 추가로 식별하고, 필터 오작동을 한다. 두 지표의 통합 판단은 최종 거래 신호를 형성한다.

전략 원칙

  1. 220 평균선 지표

    • 2기 및 20기 지수 이동 평균을 계산하기 (EMA)
    • 거래 신호는 종전 가격이 평균선 한쪽에서 다른 쪽으로 돌파 할 때 발생합니다.
    • 20평균선을 넘으면 트렌드를 알 수 있다.
    • 브레이크 2 평균선은 구체적인 입구 지점을 결정하는 신호입니다.
  2. 다공력 균형 지표

    • 각각 다중원력값과 공수원력값을 계산한다.
    • 두 개의 크기를 비교하면 대공군은 상대적으로 약하다.
    • 진출을 결정하는 보조적인 방향
  3. 두 지표의 합성 판단

    • 두 개의 평평선 지표가 큰 트렌드 방향을 판단합니다.
    • 다공간 힘의 균형 지표 지역별 지역별 판단
    • 두 사람이 일치하면 거래 신호를 냅니다.

우위 분석

이러한 조합 전략의 가장 큰 장점은 다양한 종류의 지표를 결합하여 더 신뢰할 수 있는 거래 판단을 달성하는 것입니다. 구체적으로 다음과 같은 몇 가지 장점이 있습니다:

  1. 이중 평행선을 이용해 큰 방향을 판단하고, 지역적인 부동의 속임수를 피하십시오.
  2. 다항력 균형 지표를 사용하여 지역적 판단을 수행하여 특정 입구 지점을 정확하게 파악합니다.
  3. 두 지표는 서로 확인하여 특정 오작동을 필터링하여 거래 위험을 줄일 수 있습니다.
  4. 다양한 시장 품종에 최적화 할 수있는 유연한 파라미터 설정
  5. 전략적 아이디어는 간단하고 명확하며, 쉽게 이해할 수 있으며, 나중에 최적화 할 수 있습니다.

위험 분석

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

  1. 지표가 신호를 보내는 지연으로 인해 스톱포트가 너무 깊어질 수 있습니다.
  2. 쌍평선 지표는 파라미터 설정에 민감하다
  3. 다공간 균형 지표는 단기상황을 판단하는데 조금 정확하지 않다.
  4. 특수한 상황에서 (일반적으로 돌파 가짜 신호) 두 가지 지표에서 판단 편차가 발생할 수 있습니다.

대책:

  1. 적당히 짧은 포지션 기간 또는 적당히 이동한 스톱을 설정합니다.
  2. 다양한 변수 조합을 테스트하여 최적의 변수를 찾습니다.
  3. 다른 지표에 대한 보조 참조 확인
  4. 품종 특성에 따라 최적화 매개 변수

최적화 방향

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

  1. 더 많은 평행선 지표 변수 조합을 테스트합니다.
  2. 단편적 손실을 통제하기 위한 전략
  3. 변동률 지표와 결합하여 변수 적응력을 높인다.
  4. 기계 학습 모델을 추가하여 동적 변수 최적화를 구현합니다.
  5. 다른 우세한 지표를 다중 공평한 지표로 대체하는 것을 시도합니다.
  6. 다양한 변수를 테스트할 수 있는 시각적 인터페이스를 개발

요약하다

이 전략은 쌍평평선 지표를 통해 큰 흐름을 판단하고, 다공간 힘 균형 지표를 사용하여 진입 시점을 판단한다. 두 가지 지표는 상호 검증되어 오작동 가능성을 효과적으로 줄일 수 있다. 전략 매개 변수 선택은 유연하며, 다양한 품종에 대해 최적화 조정할 수 있다. 전체적으로 전략은 간단하고 실용적이며, 광범위한 투자자가 배우고 사용할 가치가 있다. 후속으로 추가 최적화를 통해 전략 효과를 더욱 향상시킬 수 있다.

전략 소스 코드
/*backtest
start: 2023-01-01 00:00:00
end: 2024-01-07 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 23/05/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
//    This new indicator analyzes the balance between bullish and
//    bearish sentiment.
//    One can cay that it is an improved analogue of Elder Ray 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.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos


BBB(SellLevel,BuyLevel) =>
    pos = 0.0
    value = close < open ? 
              close[1] > open ?  math.max(close - open, high - low) : high - low : 
                 close > open ? 
                  close[1] > open ? math.max(close[1] - low, high - close) : math.max(open - low, high - close) :
                   high - close > close - low ? 
                     close[1] > open ? math.max(close[1] - open, high - low) :high - low : 
                      high - close < close - low ? 
                         close > open ? math.max(close - low, high - close) : open - low : 
                           close > open ? math.max(close[1] - open , high - close) :
                             close[1] < open ? math.max(open - low, high - close) : high - low
    
    value2 =close < open ? 
              close[1] < open ?  math.max(high - close[1], close - low) : math.max(high - open, close - low) : 
               close > open ? 
                 close[1] > open ?  high - low : math.max(open - close[1], high - low) : 
                  high - close > close - low ? 
                   close[1] < open ? math.max(high - close[1], close - low) : high - open : 
                     high - close < close - low ? 
                      close[1] > open ?  high - low : math.max(open - close, high - low) : 
                       close[1] > open ? math.max(high - open, close - low) :
                         close[1] < open? math.max(open - close, high - low): high - low
    nBBB = value2 - value
    pos :=  nBBB < SellLevel ? -1 :
    	     nBBB >= BuyLevel ? 1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & Bull And Bear Balance', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════  Bull And Bear Balance ═════●'
SellLevel = input.float(-15, step=0.01, group=I2)
BuyLevel = input.float(15, step=0.01, group=I2)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosBBB = BBB(SellLevel,BuyLevel)
iff_1 = posEMA20 == -1 and prePosBBB == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBBB == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
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)