더블 컨펌드 어드밴티지 이동평균 전략


생성 날짜: 2024-01-23 10:49:57 마지막으로 수정됨: 2024-01-23 10:49:57
복사: 0 클릭수: 572
avatar of ChaoZhang ChaoZhang
1
집중하다
1617
수행원

더블 컨펌드 어드밴티지 이동평균 전략

개요

이 전략은 단지 다단계 트렌드 추적 전략으로, 아론 지표와 선형 회귀 이동 평균의 두 번째 확인을 통해 거래 신호를 생성합니다. 이 전략은 중장선 트렌드 거래에 적용됩니다.

전략 원칙

이 전략은 아론 지표의 상반과 하반의 교차를 사용하여 트렌드 방향을 판단한다. 상반이 하반에서 상향으로 돌파 할 때 구매 신호를 생성한다. 상반이 상반에서 하반으로 돌파 할 때 판매 신호를 생성한다. 가짜 돌파를 필터링하기 위해 전략은 또한 선형 회귀 이동 평균 LSMA를 보조 판단 기준으로 도입한다.

특히, 전략의 거래 신호 생성 규칙은 다음과 같습니다.

  1. 구매 신호 생성 조건: 상반기 경로가 하반기 경로를 뚫고 ((Aroon 지표는 양 경로 교차가 상승 추세를 형성한다고 판단하고) 당일 마감 가격은 LSMA 이동 평균보다 높습니다 ((마감 가격은 상승 추세에 있습니다)

  2. 팔기 신호 생성 조건: 상반도가 하반도를 넘어섰습니다. (아론 지표는 하향 추세를 형성하는 쌍방향 교차를 판단하고 있으며) 당일 종결 가격은 LSMA 이동 평균보다 낮습니다. (종결 가격은 하향 추세에 있습니다.)

전략적 이점

  1. 아론 지표를 사용하여 트렌드 방향을 판단하여 소음 방해를 피하십시오.
  2. 부가적인 필터링 조건으로 LSMA 이동 평균을 추가하여 부적절한 거래로 이어지는 가짜 브레이크를 방지합니다.
  3. 상장만 하고, 주식 시장의 장기적인 상향 특성에 부합하여, 상장과 관련된 무제한 손실 위험을 피하십시오.
  4. 정책 변수 설정은 간단하고 쉽게 실행할 수 있습니다.

전략적 위험

  1. 이 위기 상황에서는 전략이 너무 복잡해서 수익을 내기 힘들다.
  2. 고정된 파라미터 설정으로 오버피칭 위험이 발생할 수 있다
  3. 트렌드 반전이 어렵고 시간 손실

위험을 방지하기 위해, 손실을 중지하는 전략을 설정하거나, 다른 지표와 결합하여 트렌드 반전의 시간을 판단하여 적시에 손실을 중지 할 수 있습니다.

최적화 방향

  1. 코스피에 가입하는 것도 고려할 수 있고, 하락시에도 수익을 낼 수 있습니다.
  2. 다양한 주기 변수의 지표 효과를 테스트할 수 있다
  3. 기계 학습 모듈을 추가하여 매개 변수를 자동으로 최적화 할 수 있습니다.

요약하다

이 전략은 전반적으로 더 간단하고 실용적인 이중 확인 트렌드 추적 전략이다. 그것은 Aroon를 사용하여 트렌드 방향을 결정하고 LSMA 필터링 소음의 아이디어는 간단하고 직접적이며, 매개 변수가 적절하게 설정되면 좋은 효과를 얻을 수 있다. 이 전략은 중장선 보유에 적합하며, 단기 시장 소음으로 방해받지 않는다.

전략 소스 코드
/*backtest
start: 2023-01-16 00:00:00
end: 2024-01-22 00:00:00
period: 1d
basePeriod: 1h
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/
// © exlux99

//@version=4

strategy(title = "Aroon Strategy long only", overlay = true,  pyramiding=1,initial_capital = 100, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0.1)

//Time
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2010, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

//INPUTS

length = input(15, minval=1, title="Aroon Legnth")
upper = 100 * (highestbars(high, length+1) + length)/length
lower = 100 * (lowestbars(low, length+1) + length)/length

lengthx = input(title="Length LSMA", type=input.integer, defval=20)
offset = 0//input(title="Offset", type=input.integer, defval=0)
src = input(close, title="Source")
lsma = linreg(src, lengthx, offset)


long = crossover(upper,lower) and close > lsma
longexit = crossunder(upper,lower) and close < lsma

if(time_cond)
    strategy.entry("long",1,when=long)
    strategy.close("long",when=longexit)