렌코 이동평균을 기반으로 한 추세추종 전략


생성 날짜: 2024-02-21 16:36:00 마지막으로 수정됨: 2024-02-21 16:36:00
복사: 0 클릭수: 978
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

렌코 이동평균을 기반으로 한 추세추종 전략

개요

이것은 렌코 평균을 사용하여 추세를 판단하고 추적하는 거래 전략이다. 이 전략의 핵심 논리는 가격이 22주기의 HL2 평균을 돌파했을 때, 그에 따른 구매 또는 판매 작업을 수행하는 것이다. 이 전략은 또한 중지, 중지, 이동 중지 등의 위험 관리 장치를 설정한다.

전략 원칙

렌코 기둥이 22주기 HL2 평균을 통과했을 때, 더 많은 것을하십시오. 렌코 기둥이 22주기 HL2 평균을 통과했을 때, 더 많은 것을하십시오. 가격과 평균의 관계를 판단하여 트렌드의 방향을 잡기 위해.

HL2 평균 ((Highest High + Lowest Low) /2) 은 트렌드형 평균으로, 최고 가격과 최저 가격의 정보를 결합하여 트렌드의 발전 방향을 더 정확하게 판단할 수 있다. 22은 평균의 균형감각을 위해 사용되는 경험값이다.

또한, 전략은 시장의 급격한 변동성을 피하기 위해 특정 거래 시간에만 포지션을 열 수 있는 제한을 설정합니다.

우위 분석

이것은 간단하고 직관적인 트렌드 추적 전략으로 다음과 같은 장점이 있습니다.

  1. 렌코 기둥을 거래 신호로 사용하면 시장 소음을 효과적으로 필터링하여 주요 트렌드를 잡을 수 있습니다.

  2. HL2 평균은 최고 가격과 최저 가격 정보를 결합하여 트렌드 판단에 더 정확하고 신뢰할 수 있습니다.

  3. 고정된 스톱로스, 스포트 포스트 지점을 설정하면 단일 거래의 위험을 잘 통제할 수 있다.

  4. 모바일 스톱은 트렌드가 진행될 때 수익을 고정시켜 트렌드 추적을 가능하게 한다.

  5. 거래 기간을 제한하면 급격한 시장의 충격을 어느 정도 피할 수 있습니다.

위험 분석

이 전략에는 다음과 같은 위험도 있습니다.

  1. 평균 전략은 더 많은 가짜 신호를 만들어 낼 수 있습니다.

  2. 급격한 사건으로 인한 단절 위험을 효과적으로 대처할 수 없습니다.

  3. 렌코의 잘못된 설정으로 인해 더 좋은 거래 기회를 놓칠 수 있습니다.

  4. 고정된 스톱로스는 시장의 변화에 적응하기 힘들다.

최적화 방향

이 전략은 다음과 같은 방향으로 최적화될 수 있습니다.

  1. 다른 지표 또는 조건을 추가하여 신호를 필터링하여 가짜 신호를 줄인다. 예를 들어 양력 지표, 진동 지표 등이다.

  2. 다른 변수들의 평균을 테스트하여 더 적합한 주기수를 찾아볼 수 있다.

  3. 렌코의 박스 크기는 또한 테스트 최적화를 통해 최적의 파라미터를 얻을 수 있다.

  4. 변동율에 기반한 적응형 손해 방지 장치를 추가한다.

  5. 이 조건을 최적화하기 위해 다른 거래 시간 단위 설정을 테스트할 수 있습니다.

요약하다

전반적으로, 이것은 Renko 평균을 사용하여 추세를 판단하고 추적하는 간단한 실용적인 전략이다. 그것은 더 직관적인 거래 논리, 위험 제어 메커니즘을 가지고 있으며, 안정적인 수익을 추구하는 거래자에게 적합하다. 그러나 파라미터를 최적화하고, 필터 조건을 추가하고, 손해 중지와 같은 방법을 통해 더 나은 전략 효과를 얻을 수있는 개선의 여지가 있습니다.

전략 소스 코드
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("HL2 - 22 Cross", overlay=true)

// Stops and Profit inputs
inpTakeProfit   = input(defval = 300, title = "Take Profit", minval = 0)
inpStopLoss     = input(defval = 200, title = "Stop Loss", minval = 0)
inpTrailStop    = input(defval = 200, title = "Trailing Stop", minval = 0)
inpTrailOffset  = input(defval = 0, title = "Trailing Stop Offset", minval = 0)

// Stops and Profit Targets
useTakeProfit   = inpTakeProfit  >= 1 ? inpTakeProfit  : na
useStopLoss     = inpStopLoss    >= 1 ? inpStopLoss    : na
useTrailStop    = inpTrailStop   >= 1 ? inpTrailStop   : na
useTrailOffset  = inpTrailOffset >= 1 ? inpTrailOffset : na

//Specific Time to Trade
myspecifictradingtimes = input('0500-1600',  title="My Defined Hours")

longCondition1 = crossover(close, ema(hl2, 22))
longCondition2 = time(timeframe.period, myspecifictradingtimes) != 0
if longCondition1 and longCondition2
    strategy.entry("Long", strategy.long, comment="LongEntry")

shortCondition1 = crossunder(close, ema(hl2, 22))
shortCondition2 = time(timeframe.period, myspecifictradingtimes) != 0
if shortCondition1 and shortCondition2
    strategy.entry("Short", strategy.short, comment="ShortEntry")

strategy.exit("Exit Long", from_entry = "Long", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)
strategy.exit("Exit Short", from_entry = "Short", profit = useTakeProfit, loss = useStopLoss, trail_points = useTrailStop, trail_offset = useTrailOffset)