다이나믹 SMMA와 SMA 크로스오버 전략


생성 날짜: 2024-02-02 11:38:08 마지막으로 수정됨: 2024-02-02 11:38:08
복사: 0 클릭수: 788
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

다이나믹 SMMA와 SMA 크로스오버 전략

개요

이 전략은 50주기 평평한 이동 평균 (SMMA) 과 20주기 간단한 이동 평균 (SMA) 의 교차 신호를 사용하여 구매와 판매의 시간을 판단한다. 빠른 라인 SMA가 상향으로 느린 라인 SMMA를 돌파할 때 구매 신호를 발생시키고, SMA가 하향으로 SMMA를 돌파할 때 판매 신호를 발생시킨다. 동시에, 전략은 고정된 스톱 포스트와 다이내믹 스톱 손실을 예약하여 수익을 잠금하고 위험을 제어한다.

전략 원칙

  1. 50주기 SMMA와 20주기 SMA를 계산하고 그리기.
  2. SMA가 아래로 SMMA를 돌파하면 구매 신호가 발생하고, 반대로 SMA가 위로 SMMA를 돌파하면 판매 신호가 발생한다.
  3. 구매 및 판매 신호가 발생했을 때 각각 “Buy”와 “Sell”의 포지션을 설정하십시오.
  4. 매 포지션마다 고정된 150점의 정지점을 설정했다.
  5. 신호를 생성하는 다음 K 선의 폐쇄 가격에 동적 스톱 로즈를 설정하십시오.
  6. 만약 가격이 스톱치에 닿으면 스톱치; 스톱치에 닿으면 스톱치.

우위 분석

  1. 이중일선 전략은 작동하기 쉽고, 원리는 간단하고, 이해하기 쉽습니다.
  2. SMMA는 SMM의 개선으로 트렌드를 더 잘 잡을 수 있습니다.
  3. 다른 주기의 SMA와 SMMA를 결합하여, 파동의 흔들림과 동시에 트렌드를 잡을 수 있다.
  4. 동적 스톱을 사용하면 상가상황 변화에 따라 스톱 위치를 조정하여 위험을 효과적으로 제어할 수 있다.
  5. 미리 설정된 포지션은 수익을 적시에 고정하는 데 도움이 됩니다.

위험 분석

  1. 쌍평선 전략은 가짜 신호를 쉽게 생성하고, 중매된다. 신호를 적절히 필터링하여, 너무 자주 거래되는 것을 피할 수 있다.
  2. 고정 스톱은 큰 상황을 놓칠 수 있다. 이동 스톱 또는 수익 비율 스톱을 설정할 수 있다.
  3. 동적 중지 손실은 시장의 급격한 변동에 너무 가깝게 될 수 있으므로 중지 손실의 폭을 적절히 완화해야합니다.
  4. 다양한 품종과 주기 변수의 차이에 주의해야 한다.

최적화 방향

  1. 다양한 변수 (주기수, 필터 조건 등) 의 조합을 테스트하여 최적의 변수를 찾을 수 있습니다.

  2. 다른 요소와 결합할 수 있는 필터 신호, 예를 들어 매매량 급증;

  3. 변수 최적화 도구를 사용하여 최적의 변수를 찾을 수 있습니다.

  4. 이동식 차단, 비율식 차단과 같은 다른 차단 방법을 고려할 수 있습니다.

  5. 동적 스톱 로즈 (Dynamic Stop Loss) 는 시장의 변동성과 결합하여 계산할 수 있다.

요약하다

이 전략은 전체적으로 간단하게 작동하며, 트렌드 방향을 쌍평선으로 포착합니다. 고정된 스톱 스톱과 동적 스톱 스로드를 유연하게 사용하여 수익을 잠금하고 위험을 제어합니다. 위험과 수익을 의미하며, 재본 전략은 파라미터와 규칙을 최적화하여 더 넓은 시장 환경에 적응 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2023-01-26 00:00:00
end: 2024-02-01 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("50 SMMA and 20 SMA Crossover with TP and SL", overlay=true)

// Define 50 SMMA
smma50 = sma(close, 50)

// Define 20 SMA
sma20 = sma(close, 20)

// Plotting the SMMA and SMA
plot(smma50, color=color.blue, title="50 SMMA")
plot(sma20, color=color.red, title="20 SMA")

// Initialize TP and SL variables
tp = 150
var float sl_price = na

// Buy Signal
buySignal = crossover(sma20, smma50)
strategy.entry("Buy", strategy.long, when = buySignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Buy", profit=tp, loss=sl_price)

// Sell Signal
sellSignal = crossunder(sma20, smma50)
strategy.entry("Sell", strategy.short, when = sellSignal)
strategy.exit("Take Profit/Stop Loss", from_entry="Sell", profit=tp, loss=sl_price)

// Update stop loss level on every crossover
if (buySignal or sellSignal)
    sl_price := close[bar_index + 1]

// Plot Stop Loss level
plotshape(series=sl_price != na, title="Stop Loss Level", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small)