실제 범위에 기반한 가중화 이동 평균 크로스 기간 전략

저자:차오장, 날짜: 2024-01-17 15:09:28
태그:

img

전반적인 설명

이 전략은 트렌드 판단을 위해 트루 레인지와 가중 이동 평균 (WMA) 을 사용하여 크로스 기간 지표를 구축합니다. 동시에 안정적인 이익을 추구하기 위해 여러 스톱 로스 메커니즘을 갖춘 피라미드 포지션 축적 메커니즘을 갖추고 있습니다.

전략 원칙

이 전략은 먼저 상향 진폭 (sube) 과 하향 진폭 (baja) 을 계산하고, 그 다음 각각 빠른 라인 (corto) 사이클과 느린 라인 (largo) 사이클의 WMA를 계산합니다. 빠른 라인과 느린 라인 사이의 차이는 WMA를 통해 다시 계산하여 지표 (ind) 를 얻습니다. 지표가 0을 넘으면 구매 신호가 생성됩니다. 0을 넘으면 판매 신호가 생성됩니다.

시장에 진출 한 후 전략은 5 개의 포지션을 미리 설정하고 피라미드 (두 배) 방식으로 축적됩니다. 동시에, 후속 포지션이 열리면 현재의 부동 수익이 스톱 로스 라인보다 낮는지 판단 할 수 있도록 스톱 로스 메커니즘이 설정되어 위험을 제어합니다.

이점 분석

이 전략은 크로스 사이클 판단, 피라미드 포지션 축적 및 여러 스톱 손실과 같은 메커니즘을 통합하여 위험을 효과적으로 제어하고 안정적인 이익을 추구 할 수 있습니다.

크로스 사이클 판단은 빠르고 느린 라인 조합을 통해 트렌드 판단 시스템을 구축하여 시장 소음을 효과적으로 필터하고 트렌드 전환점을 식별 할 수 있습니다. 피라미드 포지션은 트렌드의 시작에서 더 많은 이익을 얻을 수 있으며 여러 스톱 로스 메커니즘은 단일 손실을 효과적으로 제어 할 수 있습니다.

위험 분석

이 전략의 주요 위험은 급격한 시장 전환을 유발하는 갑작스러운 사건의 가능성에 의해 스톱 로스 절단을 유발하고 손실을 유발합니다. 또한 부적절한 매개 변수 설정은 전략의 안정성에도 영향을 미칩니다.

시장 반전 위험은 정지 손실 라인을 적절하게 완화하여 처리 할 수 있습니다. 매개 변수 설정을 최적화하고 사이클 매개 변수, 포지션 수 등을 조정하면 전략의 안정성을 향상시킬 수 있습니다.

최적화 방향

이 전략은 다음과 같은 측면에서 최적화 될 수 있습니다.

  1. 판단을 위한 통계적 지표를 높이고 변동성과 부피와 같은 지표를 사용하여 매개 변수를 수정하고 전략을 더 적응력 있게 만들어야 합니다.

  2. 판단을 위한 기계 학습 모델을 강화하고 LSTM 및 다른 딥 러닝 모델을 사용하여 판단을 지원하고 전략 정확성을 향상시킵니다.

  3. 포지션 관리 메커니즘을 최적화하고, 포지션 증가의 폭을 변동 수익률에 따라 조정하여 포지션 성장을 합리화하는 것을 고려하십시오.

  4. 포트와 선물 중재를 통해 위험을 더 통제하기 위해 선물 헤지 모델을 포함합니다.

요약

요약하자면, 이것은 피라미드 포지션 축적 및 여러 스톱 로스 메커니즘을 가진 트루 레인지 지표에 기반한 크로스 사이클 트렌드 전략으로 위험을 효과적으로 제어하고 안정적인 이익을 추구 할 수 있습니다. 그것은 매우 실용적인 양적 거래 전략입니다. 그러나 여전히 리버스 리스크 및 매개 변수 최적화 문제에 대한 관심이 필요합니다. 통계, 기계 학습 및 기타 측면에서 추가 최적화가 가능합니다.


/*backtest
start: 2023-01-10 00:00:00
end: 2024-01-16 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/
// © MaclenMtz

//@version=5
strategy("[MACLEN] Rangos", shorttitle="Rangos [https://t.me/Bitcoin_Maclen]", overlay=false )

//------WINDOW----------

i_startTime = input(defval = timestamp("01 Jan 2022 00:00 -0700"), title = "Start Time", group = "Backtest Window")
i_endTime = input(defval = timestamp("31 Dec 2025 00:00 -0700"), title = "End Time")
window = true

//-----------------------------

sube = close>close[1] ? ta.tr : 0
baja = close<close[1] ? ta.tr : 0

corto = input(10)
largo = input(30)
suavizado = input(10)

fastDiff = ta.wma(sube, corto) - ta.wma(baja,corto)
slowDiff = ta.wma(sube, largo) - ta.wma(baja, largo)
ind = ta.wma(fastDiff - slowDiff, suavizado)

iColor = ind>0 ? color.green : ind<0 ? color.red : color.black
plot(ind, color=iColor)
plot(0, color=color.white)

long = ind[1]<ind and ind[2]<ind[1] and ind<0
short = ind[1]>ind and ind[2]>ind[1] and ind>0

plotshape(long and not long[1], style = shape.xcross, color=color.green, location=location.bottom, size=size.tiny)
plotshape(short and not short[1], style = shape.xcross, color=color.red, location=location.top, size=size.tiny)

//Contratos
contrato1 = input(50000)/(16*close)
c1 = contrato1
c2 = contrato1
c3 = contrato1*2
c4 = contrato1*4
c5 = contrato1*8

//cap_enopentrade = strategy.opentrades == 1 ? c1: strategy.opentrades == 2 ? c1+c2: strategy.opentrades == 3 ? c1+c2+c3: strategy.opentrades == 4 ? c1+c2+c3+c4: strategy.opentrades == 5 ? c1+c2+c3+c4+c5 : 0
openprofit_porc = math.round((close-strategy.position_avg_price)/strategy.position_avg_price * 100,2)

porc_tp = input.float(6.5)
safe = input(-6)

//----------------Strategy---------------------------

if strategy.opentrades == 0
    strategy.entry('BUY1', strategy.long, qty=c1, when = long and not long[1] and window)

if strategy.opentrades == 1
    strategy.entry('BUY2', strategy.long, qty=c2, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 2
    strategy.entry('BUY3', strategy.long, qty=c3, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 3
    strategy.entry('BUY4', strategy.long, qty=c4, when = long and not long[1] and window and openprofit_porc<safe)

if strategy.opentrades == 4
    strategy.entry('BUY5', strategy.long, qty=c5, when = long and not long[1] and window and openprofit_porc<safe)

min_prof = strategy.openprofit>0

strategy.close_all(when=short and min_prof)

plot(openprofit_porc)


더 많은