EintSimple Pullback 전략

저자:차오장, 날짜: 2024-01-15 14:04:54
태그:

img

이동 평균 크로스오버 EintSimple Pullback 전략

전반적인 설명

EintSimple Pullback 전략은 이중 이동 평균 크로스오버에 기반한 평균 역전 전략이다. 먼저 장기 및 단기 이동 평균 라인을 사용합니다. 단기 이동 평균 라인이 밑에서 장기 이동 평균 라인을 뚫을 때 구매 신호가 생성됩니다. 잘못된 브레이크오프를 필터하기 위해 이 전략은 또한 긴 기간 이동 평균 라인보다 높은 폐쇄 가격을 요구합니다.

시장에 진입한 후, 가격이 다시 단기 이동 평균선 아래로 떨어지면 출구 신호를 유발합니다. 또한,이 전략은 또한 스톱 로스 출구를 설정합니다. 가장 높은 지점에서 리트레이싱이 설정된 스톱 로스 퍼센트에 도달하면 또한 출구 포지션을 설정합니다.

전략 논리

이 전략은 주로 입시 시기를 결정하기 위해 이중 이동 평균의 황금 십자가에 의존합니다. 구체적으로, 긴 포지션을 개설하기 전에 다음과 같은 조건이 동시에 충족되어야합니다.

  1. 닫기 가격은 장기 이동 평균 m1보다 높습니다.
  2. 닫기 가격은 단기 이동 평균 m2보다 낮습니다.
  3. 현재 공직은 없습니다.

위의 조건이 충족되면, 이 전략은 완전한 긴 입장을 취합니다.

출구 신호 판단은 두 가지 조건에 기반합니다. 하나는 가격이 다시 단기 이동 평균 이하로 떨어지는 것입니다. 다른 하나는 가장 높은 지점에서 리트레이싱이 설정된 스톱 로스 퍼센트에 도달하는 것입니다. 구체적인 출구 조건은 다음과 같습니다.

  1. 닫기 가격은 단기 이동 평균 m2보다 높습니다.
  2. 가장 높은 지점에서 리트레이크가 설정된 스톱 로스 퍼센트에 도달합니다.

출구 조건이 충족되면 이 전략은 모든 긴 포지션을 닫습니다.

장점

  1. 두 개의 이동 평균 크로스오버를 사용하여 견고한 폐쇄 가격을 사용하여 판단하면 잘못된 브레이크오프를 효과적으로 필터링 할 수 있습니다.

  2. 인기를 끌고 있는 진입은 가격이 단기적인 전환점을 형성한 후에 진입할 수 있습니다.

  3. 스톱 로스 설정으로 최대 마감량을 제한할 수 있습니다.

위험성

  1. 이중 이동 평균 크로스오버 전략은 빈번한 거래 신호를 생성하는 경향이 있으며 정점을 추구하고 바닥을 죽일 수 있습니다.

  2. 이동 평균의 부적절한 매개 변수 설정은 너무 부드럽거나 너무 민감한 곡선을 초래할 수 있습니다.

  3. 너무 느슨한 스톱 손실 설정은 손실을 증가시킵니다.

최적화

  1. 최적의 매개 변수를 찾기 위해 장기 및 단기 이동 평균의 다른 길이 조합을 테스트합니다.

  2. 이동 평균 크로스오버를 결정하기 위해 가까운 가격과 전형적인 가격을 사용하는 효과를 비교하십시오.

  3. 부피나 변동성 지표와 같은 필터를 추가하여 테스트합니다.

  4. 백테스트 최대의 설정을 찾기 위해 중지 손실 비율을 최적화합니다.

결론

EintSimple Pullback 전략은 간단하고 실용적인 이중 이동 평균 풀백 전략이다. 이 전략은 잘못된 신호를 필터링하기 위해 견고한 폐쇄 가격을 결합하면서 이동 평균의 방향 기능을 효과적으로 활용합니다. 이 전략은 빈번한 거래와 피크를 추구하고 바닥을 죽이는 경향이 있지만 매개 변수 최적화 및 필터를 추가함으로써 더욱 향상 될 수 있습니다. 전반적으로 이것은 양적 거래 초보자가 연습하고 최적화 할 수있는 훌륭한 전략입니다.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
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/
// © ZenAndTheArtOfTrading / www.PineScriptMastery.com
// @version=5
strategy("Simple Pullback Strategy", 
     overlay=true, 
     initial_capital=50000,
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100)// 100% of balance invested on each trade

// Get user input
i_ma1           = input.int(title="MA 1 Length", defval=75, step=1, group="Strategy Parameters", tooltip="Long-term EMA")
i_ma2           = input.int(title="MA 2 Length", defval=9, step=1, group="Strategy Parameters", tooltip="Short-term EMA")
i_stopPercent   = input.float(title="Stop Loss Percent", defval=0.10, step=0.1, group="Strategy Parameters", tooltip="Failsafe Stop Loss Percent Decline")
i_lowerClose    = input.bool(title="Exit On Lower Close", defval=true, group="Strategy Parameters", tooltip="Wait for a lower-close before exiting above MA2")
i_startTime     = input(title="Start Filter", defval=timestamp("01 Jan 1995 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime       = input(title="End Filter", defval=timestamp("1 Jan 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Get indicator values
ma1 = ta.ema(close, i_ma1)
ma2 = ta.ema(close, i_ma2)

// Check filter(s)
f_dateFilter = true

// Check buy/sell conditions
var float buyPrice = 0
buyCondition    = close > ma1 and close < ma2 and strategy.position_size == 0 and f_dateFilter
sellCondition   = close > ma2 and strategy.position_size > 0 and (not i_lowerClose or close < low[1])
stopDistance    = strategy.position_size > 0 ? ((buyPrice - close) / close) : na
stopPrice       = strategy.position_size > 0 ? buyPrice - (buyPrice * i_stopPercent) : na
stopCondition   = strategy.position_size > 0 and stopDistance > i_stopPercent

// Enter positions
if buyCondition
    strategy.entry(id="Long", direction=strategy.long)

if buyCondition[1]
    buyPrice := open

// Exit positions
if sellCondition or stopCondition
    strategy.close(id="Long", comment="Exit" + (stopCondition ? "SL=true" : ""))
    buyPrice := na

// Draw pretty colors
plot(buyPrice, color=color.lime, style=plot.style_linebr)
plot(stopPrice, color=color.red, style=plot.style_linebr, offset=-1)
plot(ma1, color=color.blue)
plot(ma2, color=color.fuchsia)

더 많은