Dynamic EMAherokuapp 전략을 살펴보다


생성 날짜: 2023-12-07 17:20:44 마지막으로 수정됨: 2023-12-07 17:20:44
복사: 0 클릭수: 621
avatar of ChaoZhang ChaoZhang
1
집중하다
1619
수행원

Dynamic EMAherokuapp 전략을 살펴보다

개요

이 전략은 EMA와 RSI 지표를 결합하여 비트코인의 단선 조정 기회를 식별한다. 그것은 주로 EMA를 주 그래프로 사용하고, RSI를 보조 판단 지표로 사용하여, 보다 명백한 조정 형태를 찾는다. 가격이 EMA 유동선에 떨어지거나 다시 올라갈 때 거래 신호를 생성한다. 그것은 동시에 중지 손실과 중지 제어를 가지고 있으며, 파라미터를 최적화 할 수 있다.

전략 원칙

이 전략은 주로 50 주기의 EMA 라인과 25 주기의 RSI 지표를 사용합니다. EMA 라인은 주요 그래픽 지표로 간주되며, RSI는 초과 판매를 판단하고 거래 신호를 생성하는 데 도움을줍니다. 가격이 상향에서 아래로 EMA 라인을 깨면 판매 신호를 생성합니다. 가격이 상향에서 아래로 EMA 라인을 깨고 RSI 지표가 초과 구매 신호를 표시하지 않으면 구매 신호를 생성합니다. 오류의 기회를 줄이기 위해 전략은 더 긴 기간의 EMA 라인 (예: 70 주기) 을 필터링 조건 중 하나로 추가합니다.

거래 입시 후, 전략은 동시에 중지 손실과 중지 위치를 설정한다. 중지 손실 거리는 설정할 수 있으며, 5.1%를 기본으로; 중지 거리 또한 설정할 수 있으며, 9.6%를 기본으로한다. 이것은 단일 손실의 최대치를 효과적으로 줄일 수 있다.

전체적으로, 이 전략은 주로 EMA 라인 형태에 의존하며, RSI 지표에 의해 과매매를 피하고, BT 비트코인의 단선 조정에 적합한 HIT 컨트롤을 갖추고 있다.

우위 분석

이 전략은 다음과 같은 장점을 가지고 있습니다.

  1. 전략적 신호는 명확하고 너무 많은 무작위적인 오작동이 발생하지 않습니다. EMA와 RSI의 결합은 신호를 더 명확하고 신뢰할 수있게 만들어 단일 지표에만 의존하지 않습니다.

  2. 전략 자율 손해 중지 컨트롤. 이것은 각 손실을 효과적으로 제어할 수 있으며, 매우 중요한 위험 제어 수단이다.

  3. 전략 매개 변수는 최적화할 수 있다. EMA 길이, RSI 길이 등은 조정할 수 있는 매개 변수이며, 사용자는 서로 다른 시장에 대한 최적의 매개 변수 조합을 찾을 수 있다.

  4. 정책은 재검토를 허용한다. 직접 정책 내에서 재검토의 시간 범위를 설정하여 정책을 검증한다.

위험 분석

이 전략은 다음과 같은 몇 가지 측면에서 위험성을 가지고 있습니다.

  1. BT비트코인 시장상황이 격렬하여, 상쇄 손실이 뚫릴 수 있다. 전략이 상쇄 손실을 설정했음에도 불구하고, 비트코인 대상황에서 가격 이동이 큰 만큼 상쇄 손실이 직접 뚫릴 수 있다. 이 때 큰 손실이 발생할 수 있다.

  2. 철회 위험. 전략은 전체적인 철회 통제를 고려하지 않는다. 비교적 긴 조정 상황이 발생하면, 전략은 약간의 철수를 낳는다.

  3. 대시장에서는 신호효과가 저하된다. 비교적 야생 대시장에서는, BTC 가격이 비교적으로 크고 긴 파동이 있다. 이 때 단기 신호효과가 저하되고, 기용되기 쉽다.

이러한 위험들을 통제하고 완화하기 위해 다음과 같은 조치를 취할 수 있습니다.

  1. 적절히 느슨한 스톱레이드 범위를 . 대시황일 경우, 적절히 느슨한 스톱레이드 거리를 수 있다. 예를 들어 10% 정도까지 확대하여 스톱레이드가 너무 쉽게 뚫릴 수 없도록 한다.

  2. 다른 지표 필터링과 함께 . 수평선 다중 헤드 배열과 같은 트렌드 지표를 추가할 수 있으며, 장기 조정 시점에 이 전략을 사용하지 않도록 한다.

  3. 최적화 매개 변수 집합. 다양한 시장 단계의 매개 변수 설정을 테스트할 수 있으며, 여러 매개 변수 조합을 구축하고, 대시황이 올 때 매개 변수를 전환하여 신호 품질을 향상시킬 수 있다.

최적화 방향

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

  1. 전체적인 회수 통제를 추가한다. 최대 회수 비율을 설정할 수 있다. 예를 들어, 20%가 이 회수 수준에 도달했을 때, 전략적으로 거래를 중단하고, 과도한 손실을 방지한다.

  2. 포지션 개시 빈도 조절을 늘리십시오. 전략 단위 시간 내에 포지션을 개시하는 횟수를 제한할 수 있습니다. 예를 들어 시간당 2 번 이상, 너무 자주 거래되는 것을 피하십시오.

  3. 최적화 매개 변수 설정. 다양한 시장 상황에서의 매개 변수 조합을 테스트하고, 여러 매개 변수 템플릿을 구축하여, 실시간으로 현재 상황에 따라 적절한 매개 변수를 선택하여 전략 효과를 향상시킬 수 있습니다.

  4. 다른 지표 포지션과 함께 사용한다. 이 전략은 트렌드, 변동성 등 다른 지표 포지션과 함께 사용되어 더 포괄적이고 신뢰할 수 있는 거래 시스템 입시 기반을 형성한다.

요약하다

전반적으로 이 전략은 주로 BTC의 단기 조정 형태에 의존하며, EMA와 RSI를 이용하여 비교적 명확한 거래 신호를 생성하고, 동시에 스톱로스 및 스톱스톱 컨트롤을 갖추고, BT의 단기 슬라이드에서 가져오는 중도 기회를 효과적으로 잡을 수 있다. 그러나 이 전략은 짧은 라인 보조 도구로 더 적합하며, 다른 전략 조합으로 사용할 때 효과가 더 좋아서 비교적 안정적인 초과 수익을 창출할 수 있다.

전략 소스 코드
/*backtest
start: 2023-11-06 00:00:00
end: 2023-12-06 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/
// © mmoiwgg

//@version=4
strategy(title="EMA+RSI Pump & Drop Swing Sniper (With Alerts & SL+TP) - Strategy", shorttitle="EMA+RSI Swing Strategy", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=50, minval=0)
emarsiSource = input(close, title="EMA+RSI Source")
condSource = input(high, title="Long+Short Condition Source")
emaVal = ema(emarsiSource, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(emarsiSource, rsiLength)

//Safety 
emaLength2 = input(title="Safety EMA Length", type=input.integer, defval=70, minval=0)
emaSource2 = input(close, title="Safety EMA Source")
ema = ema(emaSource2, emaLength2)
emaColorSource2 = close
emaBSource2 = close

// Backtest+Dates
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear = input(defval = 2019, title = "From Year", minval = 2017)
ToMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear = input(defval = 9999, title = "To Year", minval = 2017)
showDate  = input(defval = true, title = "Show Date Range", type = input.bool)
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)        // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest end window
window()  => time >= start and time <= finish ? true : false       // create function - add window() to entry/exit/close

// Conditions
exit_long = crossover(emaVal, condSource)
longCond = crossunder(emaVal, condSource) and close > ema

//Stoploss + TakeProfit
sl = input(0.051, step=0.001, title="Stop Loss")
tp = input(0.096, step=0.001, title="Take Profit")

// Plots Colors
colors = emarsiSource > emaVal and rsiVal > 14 ? color.green : color.red
emaColorSource = input(close, title="Line Color Source")
emaBSource = input(close, title="Line Color B Source")

// Plots
plot(ema, color=emaColorSource2[1] > ema and emaBSource2 > ema ? color.green : color.red, linewidth=1)
plot(emaVal, color=emaColorSource[1] > emaVal and emaBSource > emaVal ? color.green : color.red, linewidth=3)
plotcandle(open, high, low, close, color=colors)


//Strategy Entry+Exits
strategy.entry("long",1,when=window() and longCond)
strategy.close("long",when=window() and exit_long)
strategy.exit("long tp/sl", "long", profit = close * tp / syminfo.mintick, loss = close * sl / syminfo.mintick)