다각형 이동평균 전략

저자:차오장, 날짜: 2023-10-31 14:53:50
태그:

img

전반적인 설명

폴리곤 이동 평균 전략은 다양한 기간의 여러 이동 평균을 가진 폴리곤을 구성하고 폴리곤의 돌파구를 거래 신호로 사용합니다.이 트렌드 다음 전략은 여러 시간 프레임을 통합하고 효과적으로 시장 소음을 필터하고 주요 트렌드를 캡처 할 수 있습니다.

전략 논리

이 전략은 3 기간, 7 기간 및 13 기간 EMA와 같은 여러 EMA를 다각형 채널을 형성하도록 계획합니다. 가격이 EMA를 넘으면 긴 신호가 생성됩니다. 가격이 EMA를 넘으면 짧은 신호가 생성됩니다. 이것은 많은 잘못된 브레이크를 피하는 데 도움이됩니다.

이 코드는 EMA와 클로즈 가격의 비교를 통해 뚫림 신호를 결정합니다. 클로즈>EMA1 및 ema1>ema2 및 ema2>ema3와 같은 조건을 사용하여. 시간 조건 time_cond은 백테스트 기간을 제한하기 위해 추가됩니다. 전략은 진입 후 이익을 보호하기 위해 트레일링 스톱 로스를 사용합니다.

장점

이 전략의 가장 큰 장점은 소음을 피하기 위해 필터로 여러 이동 평균을 사용하여 주요 트렌드 방향을 효과적으로 파악 할 수있는 능력입니다. 후속 스톱 손실은 적시에 이익을 얻습니다.

위험 과 해결책

주요 위험은 이 전략이 트렌드 반전 지점을 식별하지 못하여 트렌드 반전 도중 손실로 이어질 수 있다는 것입니다. 부적절한 MA 기간 설정은 또한 과거래 또는 지연 신호로 이어질 수 있습니다. MA 조합을 최적화하고, 반전 지표를 추가하고, 스톱 로스 범위를 확장하여 위험을 줄일 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 가장 좋은 조합을 찾기 위해 MA 기간을 최적화하십시오.

  2. RSI와 MACD와 같은 반전 지표를 추가하여 적시에 거래를 종료하십시오.

  3. 초기 스톱 손실을 줄이기 위해 스톱 손실 범위와 오프셋을 최적화합니다.

  4. 적응력을 높이기 위해 다른 제품에 대한 매개 변수를 최적화합니다.

요약

다각형 이동 평균 전략은 일반적으로 신뢰할 수 있고 효과적인 트렌드 추적 시스템입니다. 가장 큰 강점은 소음을 크게 필터하는 동안 주요 트렌드를 캡처하는 것입니다. 그러나 반전을 식별하는 데 몇 가지 한계가 있습니다. 매개 변수 최적화, 보조 지표 추가 등으로 개선 할 수 있습니다. 명백한 트렌드가있는 시장에 적합하며 올바르게 사용하면 안정적인 이익을 창출 할 수 있습니다.


/*backtest
start: 2023-09-30 00:00:00
end: 2023-10-30 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/
// © Crypto-Oli

//@version=4
strategy("BLANK Strategy + TSL", initial_capital=5000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, pyramiding=1, commission_value=0.075, overlay=true)

////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2019, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2020, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////


/// YOUR INPUTS BELOW - DELET EXAPLES ///


ema1=ema(close,input(3))
ema2=ema(close,input(7))
ema3=ema(close,input(13))


/// PLOTS IF YOU NEED BELOW - DELET EXAPLES ///


plot(ema1, "EMA1", color.yellow)
plot(ema2, "EMA2", color.white)
plot(ema3, "EMA3", color.blue)


/// YOUR CONDITIONS BELOW - DELET EXAPLES ///


longCondition = close>ema1 and ema1>ema2 and ema2>ema3 and time_cond
shortCondition = close<ema1 and ema1<ema2 and ema2<ema3 and time_cond

/// EXECUTION ///


if (longCondition)
    strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", "Long", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

if (shortCondition)
    strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", "Short", trail_points = close * 0.05 / syminfo.mintick, trail_offset = close * 0.02 / syminfo.mintick)

더 많은