EMA 크로스오버와 베어 파워 지표에 기초한 단기 하향 전략

저자:차오장, 날짜: 2023-10-17 14:00:41
태그:

img

전반적인 설명

이 전략은 EMA 크로스오버 지표와 곰 파워 지표를 결합하여 단기 하향 신호를 생성합니다. EMA 크로스오버는 추세를 판단하고 곰 파워는 단기 판매 시기를 파악합니다. 이 전략은 시장 교정을 잡기 위해 단기 거래에 적합합니다.

전략 논리

  1. EMA 크로스오버: 2/20 기간 기하급수 이동 평균 (EMA) 을 계산하고 가격이 EMA 이하일 때 판매 신호를 생성합니다.

  2. 베어 파워 (Bear Power): 하루의 종료 가격과 개시 가격의 차이를 파워 값 (power value) 으로 계산합니다. 판매 임계보다 큰 파워 값은 하향 신호를 제공합니다 (단기적으로 -1); 구매 임계보다 낮은 파워 값은 상승 신호를 제공합니다 (1 긴 경우); 그렇지 않으면 중성 0입니다.

  3. 이 두 가지 지표를 결합하면 EMA 크로스오버 <0과 베어 파워 <-1이 되면 단축 신호가 생성됩니다.

  4. 이 전략은 판매 신호에 따라 짧은 포지션을 열고 출구 신호에 따라 포지션을 닫습니다. 역 패러미터는 긴 / 짧은 방향을 전환 할 수 있습니다.

장점

  1. EMA 크로스오버는 트렌드 전환점을 미리 예측할 수 있습니다.

  2. 베어 파워는 내일 하락에 따라 단축 판매 기회를 잡습니다.

  3. 두 가지 지표를 결합하면 잘못된 브레이크를 필터링하고 더 강한 하향 동력을 식별하는 데 도움이 됩니다.

  4. 유연한 매개 변수는 다양한 제품과 시장 환경에 적합합니다.

  5. 역전 기능은 양방향 시장에 적응합니다.

위험성

  1. EMA 교차가 최적의 전환점을 뒤쳐질 수 있습니다.

  2. 베어 파워는 범위에 한정된 통합 중에 잘못된 신호를 생성할 수 있습니다.

  3. 중장기 동향을 파악하지 못해 함락될 위험이 있습니다.

  4. 너무 짧은 EMA 기간이나 너무 높은 판매 기준과 같은 부적절한 설정으로 필요한 매개 변수 조정으로 인해 잘못된 신호가 증가 할 수 있습니다.

  5. 계획된 거래 회의를 피하기 위해 주요 경제 사건에 주의하십시오.

강화

  1. 트레이드 당 손실 한계에 스톱 로스를 추가하는 것을 고려하십시오.

  2. 약한 하향 신호를 피하기 위해 모멘텀 지표와 같은 필터를 추가합니다.

  3. 더 긴 기간 EMA를 추가하여 주요 트렌드 방향을 결정하고 트렌드 반대 거래를 피합니다.

  4. 적응 EMA 기간과 동적 판매 문턱과 같은 매개 변수를 최적화하십시오.

  5. 단기, 중장기 및 장기 지표를 포함하기 위해 여러 시간 프레임을 결합하는 것을 고려하십시오.

결론

이 전략은 우선 EMA 크로스오버를 사용하여 주요 트렌드 및 반전 지점을 결정하고, 곰 힘 지표를 사용하여 강력한 내일 판매 기회를 포착하여 강력한 단기 하락 전략을 형성합니다. 이점은 단순함과 다른 시장 환경에 적응할 수 있는 유연성, 장기/단기 방향을 뒤집을 수 있는 능력에 있습니다. 그러나 최적 지점이 누락되고 잘못된 신호를 생성하는 것과 같은 위험이 남아 있습니다. 매개 변수 최적화, 필터 추가 및 스톱 로스 등의 추가 개선은 전략 안정성을 향상시키는 데 도움이 될 수 있습니다.


/*backtest
start: 2023-10-09 00:00:00
end: 2023-10-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 19/04/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
//  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.
////////////////////////////////////////////////////////////
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


BP(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
    pos := value > SellLevel ? -1 :
    	     value <= BuyLevel ? 1 :nz(pos[1], 0) 

    pos

strategy(title='Combo 2/20 EMA & Bear Power', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Bear Power ═════●'
SellLevel = input.float(10, step=0.01, group=I2)
BuyLevel = input.float(1, 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)
prePosBP = BP(SellLevel,BuyLevel)
iff_1 = posEMA20 == -1 and prePosBP == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosBP == 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)

더 많은