변동성 표준편차 DEV 상대강도지수 RSI 및 슬라이딩평균 SMA를 기반으로 한 거래 전략

RSI SMA DEV
생성 날짜: 2024-05-28 10:57:06 마지막으로 수정됨: 2024-05-28 10:57:06
복사: 1 클릭수: 626
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

변동성 표준편차 DEV 상대강도지수 RSI 및 슬라이딩평균 SMA를 기반으로 한 거래 전략

개요

이 파인 스크립트 전략은 상대적으로 약한 지수 RSI와 가격의 변동률 표준차 DEV를 기반으로 가격과 상하 궤도를 비교하여 진입점을 판단하며, RSI를 보조 필터링 지표로 사용하며, 가격이 상하 궤도에 도달하고 RSI가 초과 오버셀 영역에 도달하면 포지션 개시 신호를 발생시키고, 가격이 역으로 외출 궤도를 돌파하거나 RSI가 역으로 초과 오버셀 영역에 도달하면 포지션을 평정합니다. 이 전략은 시장의 변동 상황에 따라 동적으로 조정할 수 있으며, 변동률이 높을 때 손실을 감수하고, 변동률이 낮을 때 포지션을 취득합니다.

전략 원칙

  1. 지난 6주기 동안의 가격의 이동 평균 SMA와 표준 차이의 DEV를 계산한다.
  2. SMA를 중심축으로 하고, SMA+thresholdEntry*DEV는 SMA-thresholdEntry로 올라갑니다.*DEV는 아래로 내려와 변동률 통로를 구축한다.
  3. 또한 지난 rsiLength 주기의 종결 가격의 RSI 지표를 계산한다.
  4. 가격 상승이 하향을 돌파하고 RSI가 rsiOversold보다 작을 때 포지션 개시 신호가 발생한다.
  5. 가격이 하향 경로를 돌파하고 RSI가 rsiOverbought보다 크면 빈 포지 신호가 발생한다.
  6. SMA를 중심축으로 하고, SMA+thresholdExit*DEV는 SMA-thresholdExit로 올라갑니다.*DEV는 아래로 내려가 다른 좁은 출구 통로를 건설했다.
  7. 오버 포지션을 보유할 때, 가격이 하향으로 돌파되어 퇴행하거나 RSI가 초과 구매 경계를 초과하면 오버 포지션을 평정한다.
  8. 공백상태에서, 가격이 상향으로 돌파되어 궤도를 벗어나거나 RSI가 초과 판매 시점보다 작으면 공백상태로 니다.

우위 분석

  1. 가격 행동과 동력 지표의 보조 판단을 사용하여 가짜 신호를 효과적으로 필터링 할 수 있습니다.
  2. 변동률을 통해 채널 폭을 동적으로 조정하여 전략이 다른 시장 상태에 적응할 수 있도록 한다.
  3. 두 개의 통로를 설정하여, 가격 반전의 초기에는 손실을 중지하고, 회수를 제어하며, 추세가 형성된 후에도 지위를 유지하여 이익을 얻을 수 있습니다.
  4. 코드 논리와 변수 설정이 명확하고, 이해하기 쉽고, 최적화하기 쉽다.

위험 분석

  1. 시장이 일방적인 추세에 따라 계속되는 경우, 이 전략은 조기 중단되어 추세 수익을 놓칠 수 있습니다.
  2. 매개 변수 설정은 전략의 성능에 큰 영향을 미치며, 다른 품종과 주기에 대해 각각 매개 변수 최적화가 필요합니다.
  3. 전략은 충격적인 시장에서 더 유리하며, 트렌드 시장은 일반적으로 수행한다. 장기적인 트렌드가 갑자기 반전되면, 이 전략은 더 큰 회전을 일으킬 수 있다.
  4. 지표의 자산 변동률이 급격히 변하면 고정된 파라미터 설정이 무효가 될 수 있다.

최적화 방향

  1. 동향을 판단하는 지표들, 예를 들어, 장단기 평균선 교차, ADX 등을 도입하여 동향과 흔들림 시장을 구분하고, 다른 파라미터 설정을 사용할 수 있다.
  2. 더 적응력이 강한 ATR과 같은 변동률 지표를 사용하여 변동률 채널 폭을 동적으로 조정하는 것을 고려하십시오.
  3. 포지션을 개시하기 전에 가격 움직임을 추세 판단하고, 명확한 추세에 있는지 검출하고, 역경 거래를 피한다.
  4. 유전 알고리즘, 격자 검색 등의 방법을 통해 서로 다른 변수 조합을 최적화하여 최적의 변수 설정을 찾을 수 있다.
  5. 다중 헤드 포지션과 빈 헤드 포지션에 대해 서로 다른 파라미터 설정을 사용하여 리스크 을 제어하는 것을 고려하십시오.

요약하다

이 전략은 변동률 채널과 상대적으로 강한 지수를 결합하여 가격 변동과 동시에 RSI 지표를 참조하여 평형 입장을 판단하여 단계적 추세를 더 잘 파악하고 적시에 중단 및 수익을 얻을 수 있습니다. 그러나 전략의 성능은 파라미터 설정에 민감하며, 다양한 시장 환경과 지표의 자산에 대해 최적화가 필요하며, 다른 지표의 시장 추세에 대한 보조 판단을 도입하는 것을 고려하여 전략의 장점을 최대한 활용 할 수 있습니다.

전략 소스 코드
/*backtest
start: 2024-05-20 00:00:00
end: 2024-05-27 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tmalvao

//@version=5
strategy("Estratégia de Desvio Padrão com RSI", overlay=true, margin_long=100, margin_short=100)

// Parâmetros
length = input.int(20, title="Período do Desvio Padrão")
thresholdEntry = input.float(1.5, title="Limite de Entrada")
thresholdExit = input.float(0.5, title="Limite de Saída")
rsiLength = input.int(14, title="Período do RSI")
rsiOverbought = input.int(70, title="RSI Overbought")
rsiOversold = input.int(30, title="RSI Oversold")

// Cálculo do Desvio Padrão
price = close
stdDev = ta.stdev(price, length)

// Média Móvel Simples
sma = ta.sma(price, length)

// Limites baseados no Desvio Padrão
upperLimit = sma + thresholdEntry * stdDev
lowerLimit = sma - thresholdEntry * stdDev
exitUpperLimit = sma + thresholdExit * stdDev
exitLowerLimit = sma - thresholdExit * stdDev

// Cálculo do RSI
rsi = ta.rsi(price, rsiLength)

// Condições de Entrada com RSI
longCondition = ta.crossover(price, lowerLimit) and rsi < rsiOversold
shortCondition = ta.crossunder(price, upperLimit) and rsi > rsiOverbought

// Condições de Saída com RSI
exitLongCondition = ta.crossunder(price, exitLowerLimit) or rsi > rsiOverbought
exitShortCondition = ta.crossover(price, exitUpperLimit) or rsi < rsiOversold

// Plotar Linhas
plot(upperLimit, color=color.red, title="Limite Superior")
plot(lowerLimit, color=color.green, title="Limite Inferior")
plot(exitUpperLimit, color=color.orange, title="Limite de Saída Superior")
plot(exitLowerLimit, color=color.blue, title="Limite de Saída Inferior")
plot(sma, color=color.gray, title="SMA")
hline(rsiOverbought, "RSI Overbought", color=color.red)
hline(rsiOversold, "RSI Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)

// Estratégia de Trade
if (longCondition)
    strategy.entry("Long", strategy.long)

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

if (exitLongCondition)
    strategy.close("Long")

if (exitShortCondition)
    strategy.close("Short")