이중 이동 평균 모니터링 모델


생성 날짜: 2023-10-17 16:33:29 마지막으로 수정됨: 2023-10-17 16:33:29
복사: 0 클릭수: 653
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

이중 이동 평균 모니터링 모델

개요

이 전략은 쌍 지수 이동 평균 ((EMA) 과 이동 평균 겹치기 ((MACD) 의 조합 지표를 사용하여, 단기 가치의 과대 평가 주식을 탐색하고 주가 하락 과정에서 짧은 선을 공백합니다. 이 전략은 EMA의 빠른 반응 가격 변화의 특성을 최대한 활용하고, MACD의 이동 유출 방향을 모니터링하는 장점과 함께, 황소 곰의 전환점에서 단기 수익 기회를 포착합니다.

전략 원칙

  1. 8일 EMA와 26일 EMA를 계산하여, 8일 EMA에 26일 EMA를 끼면 구매 신호로 간주한다.

  2. 12일 EMA, 26일 EMA와 9일 EMA의 차이는 MACD를 구성하며, MACD가 DEA를 통과하면 구매 신호로 간주된다.

  3. 구매 조건: 8일 EMA>26일 EMA 그리고 MACD에 DEA를 착용하고, 만족하면 더 많이 한다.

  4. 출구 조건: 출구 가격의 3%로 파동 스톱로스를 설정하고, 출구 가격의 1%로 스톱로스를 추적하고, 어느 조건이 충족될 때 매매한다.

이 전략은 EMA의 빠른 반응 가격과 MACD의 동력 방향을 판단하는 특징을 동시에 활용하여, 황소와 곰의 중요한 지점에서 동작 방향을 판단한다. 빠른 EMA는 느린 EMA가 단기간에 가치의 수정, MACD는 거래의 힘 변화의 평균선 방향에 대한 사전 판단을 반영하고, 이중 지표는 거래 시점을 결정하는 정확성을 향상시킨다.

우위 분석

  1. EMA와 MACD 포트폴리오는 매매점을 결정하는 정확도를 높인다. EMA는 가격 변화의 흐름을 포착하고, MACD는 동력의 변화 방향을 판단한다. 이 둘은 단기 극단을 식별하고, 가짜 돌파구가 손실을 초래하지 않도록 한다.

  2. 추적 중지 제어 위험, 적시에 중지 출전. 출전 후 1%의 추적 중지를 설정하여 손실 확산을 방지하십시오.

  3. 이 전략은 실제 거래 환경을 모방하여 2022년 전체 곰 시장에서 재검토됩니다.

  4. 유연한 변수 조정. 개인 위험 선호도에 맞게 중지 비율과 포지션 비율을 사용자 정의 할 수 있습니다.

위험 분석

  1. 거래가 빈번하게 이루어지므로 주의를 기울여야 한다. 5분 주기를 사용하며, 출입이 빈번하게 이루어지므로 거래에 충분한 시간이 필요하다.

  2. 추적 스톱은 너무 밀집된 경기일 수 있다. 추적 스톱의 폭이 너무 작게 설정되어 너무 일찍 스톱을 할 수 있다.

  3. 시장이 흔들림 트렌드에 있을 때 효과가 좋지 않다. EMA와 MACD는 더 명백한 트렌드 시장에 더 적합하다.

  4. 거래 비용도 고려해야 합니다. 매 거래마다 수수료가 부과되며, 자주 거래하면 비용이 증가합니다.

최적화 방향

  1. EMA 주기의 변수를 조정하여 매매 시기를 최적화한다. 빠른 EMA 주기를 줄이고, EMA 사이의 차이를 확대하여 최적의 변수 조합을 찾아낼 수 있다.

  2. 손실 비율을 최적화하여 조기 중단의 위험을 낮추십시오. 적당히 느슨한 추적 중단의 폭을 허용하고 너무 급진적인 추적 중단을 피하십시오.

  3. 다양한 포지션 기간을 테스트하여 최적의 포지션 기간을 선택하십시오. 다양한 포지션 기간의 전략 수익을 평가하여 최적의 포지션 기간을 찾아보십시오.

  4. 평가 추가 다른 기술 지표 필터링 신호. 테스트 할 수 있는 변동률 지표 등 추가, 거래 의사결정의 효과를 향상한다.

요약하다

이 쌍 EMA 평준선과 MACD 지표 거래 전략은 주가 가격의 단기 회귀 기회를 포착하여 단선 적자를 취하는 것을 목적으로 한다. 그것은 EMA의 신속한 반응과 MACD 판단력의 변화의 장점을 최대한 활용하여 쌍 검증 하에서 거래 시점 정확성을 향상시킨다. 전략 최적화 공간은 변수를 조정, 슬라이드 제어, 포지션 보유 시간 등 측면에서 신중한 변수 최적화 후 더 나은 수익을 얻을 수 있다.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © Coinrule

//@version=5
// strategy('Fast EMA above Slow EMA with MACD (by Coinrule)',
//          overlay=true,
//          initial_capital=1000,
//          process_orders_on_close=true,
//          default_qty_type=strategy.percent_of_equity,
//          default_qty_value=30,
//          commission_type=strategy.commission.percent,
//          commission_value=0.1)

showDate = input(defval=true, title='Show Date Range')
timePeriod = time >= timestamp(syminfo.timezone, 2022, 1, 1, 0, 0)
notInTrade = strategy.position_size <= 0

// EMAs 
fastEMA = ta.ema(close, 8)
slowEMA = ta.ema(close, 26)
plot(fastEMA, color = color.blue)
plot(slowEMA, color = color.green)
//buyCondition1 = ta.crossover(fastEMA, slowEMA)
buyCondition1 = fastEMA > slowEMA


// DMI and MACD inputs and calculations
[macd, macd_signal, macd_histogram] = ta.macd(close, 12, 26, 9)
buyCondition2 = ta.crossover(macd, macd_signal)


// Configure trail stop level with input options
longTrailPerc = input.float(title='Trail Long Loss (%)', minval=0.0, step=0.1, defval=3) * 0.01
shortTrailPerc = input.float(title='Trail Short Loss (%)', minval=0.0, step=0.1, defval=1) * 0.01

// Determine trail stop loss prices
longStopPrice = 0.0
shortStopPrice = 0.0

longStopPrice := if strategy.position_size > 0
    stopValue = close * (1 - longTrailPerc)
    math.max(stopValue, longStopPrice[1])
else
    0

shortStopPrice := if strategy.position_size < 0
    stopValue = close * (1 + shortTrailPerc)
    math.min(stopValue, shortStopPrice[1])
else
    999999
    

if (buyCondition1 and buyCondition2 and notInTrade and timePeriod)
    strategy.entry(id="Long", direction = strategy.long)

strategy.exit(id="Exit", stop = longStopPrice, limit = shortStopPrice)


//if (sellCondition1 and sellCondition2 and notInTrade and timePeriod)
//strategy.close(id="Close", when = sellCondition1 or sellCondition2)