MA 라인업에 기반한 전략을 따르는 경향

저자:차오장, 2024-02-22 17:24:02
태그:

img

전반적인 설명

이 전략은 시장 트렌드 방향을 결정하기 위해 다른 기간의 이동 평균 (MA) 을 계산합니다. 트렌드가 상승할 때 길게 가고 트렌드가 하락할 때 짧게 흐릅니다.

전략 원칙

  1. 20주기, 60주기 및 120주기 MAs를 계산합니다.
  2. 현재 트렌드 방향을 결정하기 위해 MA20, MA60 및 MA120 사이의 크기 관계를 비교하십시오.
    • MA20>MA60>MA120 이면 상승 추세를 판단합니다.
    • MA20
  3. MA20가 MA60를 넘어서면 장거리, MA20가 MA60을 넘어서면 단거리
  4. MA60을 수익을 취하고 손실을 멈추는 기준 라인으로 사용
    • 롱 포지션의 수익 라인은 MA60의 3배입니다.
    • 짧은 포지션의 수익 라인은 MA60의 0.9배입니다.

이점 분석

  1. 트렌드를 결정하기 위해 다른 기간의 MA 조합을 사용
  2. 승률을 높이기 위해 트렌드 반전 지점에서만 입력
  3. 리스크를 줄이기 위해 수익을 취하고 손실을 멈추는 명확한 규칙을 가지고

위험 분석

  1. 범위에 묶인 시장에서 MA 크로스오버는 너무 빈번한 거래로 인해 자주 발생할 수 있습니다.
  2. 이윤을 취득하고 손실을 중지하는 매개 변수 최적화해야합니다, 그렇지 않으면 포지션은 조기에 중단 될 수 있습니다 또는 이윤을 취득하는 것은 충분하지 않습니다

최적화 방향

  1. 오버 트레이딩을 피하기 위해 범위에 묶인 시장을 식별하는 지표를 추가합니다.
  2. 가장 좋은 매개 변수를 찾기 위해 MA 기간 조합을 최적화
  3. 수익을 극대화하고 위험을 최소화하는 균형을 맞추기 위해 수익을 취하고 손실을 멈추는 계수를 테스트하고 최적화하십시오.

요약

전략은 트렌드를 결정하기 위해 MAs를 사용하는 명확한 논리를 가지고 있습니다. 매개 변수 최적화 및 지표 최적화 후에 매우 실용적인 트렌드 다음 전략이 될 수 있습니다.


/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("MA60上多下空", overlay=true)

// 计算MA20/60/120
ma20 = ta.sma(close, 20)
ma60 = ta.sma(close, 60)
ma120 = ta.sma(close, 120)

// 判断MA的趋势
maUpTrend = ma20 > ma60 and ma60 > ma120
maDownTrend = ma20 < ma60 and ma60 < ma120

// 画竖直线标记MA趋势转折点
plotshape(maUpTrend and ta.crossover(ma20, ma60), style=shape.triangledown, location=location.abovebar, color=color.green, size=size.small)
plotshape(maDownTrend and ta.crossunder(ma20, ma60), style=shape.triangleup, location=location.belowbar, color=color.red, size=size.small)

// 画背景标记MA趋势
bgcolor(maUpTrend ? color.new(color.green, 90) : na)
bgcolor(maDownTrend ? color.new(color.red, 90) : na)

// 建立多头仓位的条件
longCondition = ta.crossover(close, ma60)

// 建立空头仓位的条件
shortCondition = ta.crossunder(close, ma60)

// 在穿过MA60时,根据条件建立相应的多头或空头仓位
if (longCondition)
    strategy.entry("Long", strategy.long)

if (shortCondition)
    strategy.entry("Short", strategy.short)

// 止盈止损规则
calculateReturns() =>
    close / strategy.position_avg_price - 1

takeProfitCondition = calculateReturns() >= 3  // 仓位盈利达到300%
stopLossCondition = calculateReturns() <= -0.1  // 仓位亏损达到10%

if (takeProfitCondition)
    strategy.close("Long", comment="Take Profit")
    strategy.close("Short", comment="Take Profit")

if (stopLossCondition)
    strategy.close("Long", comment="Stop Loss")
    strategy.close("Short", comment="Stop Loss")


더 많은