
이 전략은 2개의 지표를 사용하여 거래 신호를 생성한다: 2⁄20 지수 이동 평균과 평균 실제 변동 범위 반전 지표. 그것은 트렌드 추적과 단기 반전 두 가지 주요 전략 아이디어를 결합하여 반전 기회를 발견하는 것을 목표로 한다.
이 전략은 두 부분으로 구성되어 있습니다.
2⁄20 지수 이동 평균 △ 그것은 최근 20 일 지수 이동 평균을 계산하고, 가격이 위쪽에서 아래로 또는 아래에서 이동 평균 △을 통과 할 때 거래 신호를 생성합니다.
평균 실제 변동 범위 반전 지표. 그것은 가격의 평균 실제 변동 범위를 기반으로 스톱 로드 지점을 계산하고, 가격이 그 스톱 로드 지점을 돌파 할 때 신호를 발생시킨다. 3.5배의 ATR이 스톱 로드 지점으로 사용됩니다.
이 전략은 양쪽 신호를 통합한다. 2/20EMA가 다단계 신호를 생성하고 ATR이 역으로 공백 신호를 생성할 때, 공백을 한다. 2/20EMA가 공백 신호를 생성하고 ATR이 역으로 다단계 신호를 생성할 때, 더 많이 한다.
이 전략은 트렌드를 따르는 것과 반전하는 두 가지의 아이디어를 결합하여 가격 반전의 기회를 발견하는 것을 목표로합니다. 구체적인 장점은 다음과 같습니다:
2⁄20 EMA는 중기 트렌드를 인식하고 시장 소음에 의해 오도되지 않습니다.
ATR 반전 지표는 단기 가격 반전을 포착하여 반전 기회를 잡을 수 있습니다.
이 두 신호를 결합하면 중기 트렌드가 변할 때 미리 잡을 수 있어 수익률을 높일 수 있다.
ATR 중지 지점 설정은 합리적이고, 어느 정도 위험 통제 효과가 있다.
다양한 품종 특성에 맞게 ATR 배수를 사용자 정의할 수 있다.
선택 가능한 양방향 또는 역방향 거래, 다양한 실황 환경에 적용된다.
이 전략에는 다음과 같은 위험도 있습니다.
2⁄20 EMA 매개 변수가 느려서 단선 기회를 놓칠 수 있다.
ATR 스톱은 쉽게 뚫을 수 있으며, 적절한 스톱 지점을 완화해야 한다.
단일 지표는 잘못된 신호를 유발할 수 있으며, 더 많은 요소가 필터링되어야 합니다.
거래 횟수를 주의해서 너무 자주 거래하는 것을 피하십시오.
파라미터를 최적화하고 재검토하여 품종에 적합하다는 것을 확인해야 한다.
돈 관리에 엄격하게 따르고, 단독 위험을 통제해야 합니다.
이 전략은 다음과 같은 측면에서 최적화될 수 있습니다.
EMA 변수를 조정하여 최적의 변수 조합을 찾습니다.
ATR 배수의 크기를 최적화하고, 스톱 손실을 균형화합니다.
필터링 조건을 늘리고, 변수율, 변동률 등의 지표를 결합합니다.
자금 관리 모듈을 추가하고, 동적으로 포지션을 조정합니다.
Chandelier Exit와 같은 스톱로스 전략을 추가합니다.
다양한 품종의 효과를 테스트하여 최적의 조합을 찾습니다.
빅데이터를 활용하여 성능을 향상시키는 기계학습 모델에 참여합니다.
더 많은 알파를 찾기 위해 여러 가지 전략을 조합합니다.
이 전략은 두 가지의 아이디어를 통합하고, 가격 반전을 잡는 데는 약간의 능력이 있습니다. 그러나 잘못된 매개 변수 선택으로 인한 위험도 있습니다.
/*backtest
start: 2022-10-27 00:00:00
end: 2023-11-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
////////////////////////////////////////////////////////////
// Copyright by HPotter v1.0 05/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
// Average True Range Trailing Stops Strategy, by Sylvain Vervoort
// The related article is copyrighted material from Stocks & Commodities Jun 2009
// Please, use it only for learning or paper trading. Do not for real trading.
//
//
// 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
ATRR(nATRPeriod,nATRMultip) =>
pos = 0.0
xATR = ta.atr(nATRPeriod)
nLoss = nATRMultip * xATR
xATRTrailingStop = 0.0
xATRTrailingStop := close > nz(xATRTrailingStop[1], 0) and close[1] > nz(xATRTrailingStop[1], 0) ? math.max(nz(xATRTrailingStop[1]), close - nLoss) :
close < nz(xATRTrailingStop[1], 0) and close[1] < nz(xATRTrailingStop[1], 0) ? math.min(nz(xATRTrailingStop[1]), close + nLoss) :
close > nz(xATRTrailingStop[1], 0) ? close - nLoss : close + nLoss
pos:= close[1] < nz(xATRTrailingStop[1], 0) and close > nz(xATRTrailingStop[1], 0) ? 1 :
close[1] > nz(xATRTrailingStop[1], 0) and close < nz(xATRTrailingStop[1], 0) ? -1 : nz(pos[1], 0)
pos
strategy(title='Combo 2/20 EMA & Average True Range Reversed', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ Average True Range Reversed ═════●'
nATRPeriod = input.int(5, group=I2)
nATRMultip = input.float(3.5, 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)
prePosATRR = ATRR(nATRPeriod,nATRMultip)
iff_1 = posEMA20 == -1 and prePosATRR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosATRR == 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)