전략에 따른 점진적인 이동 평균 추세

저자:차오장, 날짜: 2023-10-26 17:08:43
태그:

img

전반적인 설명

점진적인 이동 평균 트렌드 다음 전략은 가격 트렌드 변화를 포착하기 위해 다양한 기간의 여러 이동 평균을 사용하여 오시일레이터 지표와 결합하여 과잉 구매 및 과잉 판매 영역을 결정하여 거래 전략을 따라 낮은 구매 및 높은 판매 추세를 형성합니다. 이 전략은 중장기 보유 지위에 적합합니다. 중요한 트렌딩 시장을 추적하기 위해.

전략 논리

이 전략은 가격 추세를 파악하기 위해 18~26~36주기 MAs와 같은 여러 개의 이동 평균 세트를 사용합니다. 짧은 MAs가 더 긴 MAs를 넘을 때 상승 추세를 신호하며, 따라서 길게 이동합니다. 짧은 MAs가 더 긴 MAs를 넘을 때 하락 추세를 나타냅니다. 따라서 짧게 이동합니다.

한편, MACD, RSI, EFI와 같은 오시일레이터 지표는 과잉 구매 및 과잉 판매 조건을 식별하는 데 사용됩니다. 예를 들어, MACD에서 음에서 양으로 전환하면 긴 거리를 제안하고, 양에서 음으로 전환하면 짧은 거리를 제안합니다. 높은 수준에서 후퇴하는 RSI는 단축 신호이며, 낮은 수준에서 회복하는 것은 긴 거리를위한 신호입니다. EFI 0 이하는 긴 거리를 의미하며, 0 이상은 단축을 의미합니다.

입국 규칙:

긴: 짧은 MA 크로스오버 상승 긴 MA 및 MACD>0 및 RSI는 최저점과 EFI<0에서 회복됩니다.

짧은: 짧은 MA 크로스오버 아래로 긴 MA 및 MACD<0 및 RSI는 최고로부터 후퇴하고 EFI>0

스톱 로스 규칙:

롱 SL: EFI가 임계 이상 그리고 가격 폭이 지정된 MA보다 낮다

단기 SL: EFI가 한계 이하이고 가격 폭이 정해진 MA보다 높습니다.

장점

  1. 여러 MAs는 주요 트렌드 변화 지점을 포착합니다.

  2. 오시일레이터 콤보는 높은 점과 낮은 점의 추격을 피합니다.

  3. SL 규칙은 동향과 현금 흐름을 모두 고려하여 위험을 효과적으로 제어합니다.

  4. 광범위한 백테스팅을 통해 최적화된 매개 변수, 대부분의 시장 환경에 적응.

  5. 중간 거래 빈도, 안정적인 신호, 장기 트렌드 추적에 적합합니다.

위험성

  1. 갑작스러운 충돌은 SL를 무효화 할 수 있습니다 SL 범위가 넓어져야합니다.

  2. 시장에서 신호가 너무 많아서 매개 변수를 조정해야 합니다.

  3. 너무 오래 유지하면 손실이 커질 수 있고, 짧은 MA는 SL를 더 빨리 가져갈 수 있습니다.

  4. 배트테스트 오버피팅, 실제 거래 결과 확인을 기다리고 있습니다.

개선

  1. 더 높은 수익과 적절한 주파수를 위해 매개 변수를 최적화합니다.

  2. 매개 변수를 동적으로 최적화하기 위해 기계 학습 알고리즘을 추가합니다.

  3. 다양한 시장 조건에 기반한 적응성 SL 메커니즘을 구축합니다.

  4. 더 많은 필터를 추가하여 더 나은 입력 신호를 결정합니다.

  5. 단일 베팅 크기를 제어하기 위해 포지션 사이즈 전략을 포함합니다.

결론

점진적인 이동 평균 트렌드 다음 전략은 여러 MAs와 트렌드 방향을 식별하고 필터링 된 신호를 입력하여 장기 보유를 통해 안정적인 수익을 달성함으로써 주요 트렌드를 효과적으로 추적합니다. 전략은 매개 변수 최적화를 통해 견고함을 보여주었지만 여전히 리스크 제어 및 적응력 개선이 필요하여 인수를 줄이고 승률을 높입니다. 전반적으로 핵심 철학은 추가 연구 및 응용을위한 강력한 잠재력을 보여줍니다.


/*backtest
start: 2023-09-25 00:00:00
end: 2023-10-25 00:00:00
period: 1h
basePeriod: 15m
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/
// © murdocksilva

//@version=5

strategy("Daily_Mid Term_Consulting BOLT")

//calculo longuitud
longuitud = input(58, title= "longitud_sma")


px = ta.sma(close, 1)
px2 = ta.sma(low, 1)

Length1 = input.int(18)
Length2 = input.int(18)
Length3 = input.int(26)
Length4 = input.int(36)
Length5 = input.int(78)
Length6 = input.int(1)
Length7 = input.int(1500)
Length8 = input.int(58)
Length9 = input.int(3000)
Length10 = input.int(2)
Length11 = input.int(14)
ma1 = ta.sma(low, Length1)
ma2 = ta.sma(high, Length2)
ma3 = ta.sma(close, Length3)
ma4 = ta.sma(close, Length4)
ma5 = ta.sma(close, Length5)
ma6 = ta.sma(close, Length6)
ma7 = ta.sma(close, Length7)
ma8 = ta.sma(close, Length8)
ma9 = ta.sma(close, Length9)
ma10 = ta.sma(close, Length10)
ma11 = ta.sma(close, Length11)

// calculo EFI
efi = (close[1]-close) * volume / 1000
efi_indicador = (efi[1] + efi) / 2

//Variable  RSI - calculo desv estandar
b = (px-ma10)*(px-ma10)
b2 = (px[1]-ma10[1])*(px[1]-ma10[1])
c = b + b2
c2 = c / 2
desv = math.sqrt(c2)/10

//calculo MACD
macd = ma4 - ma5

//calculo RSI
rsi = ta.rsi(close, 9)

// calculo Divergencia
ma = ta.sma(close, longuitud)
dist = close - ma
porcentaje = dist * 100 / close
ma_dista = ta.sma(porcentaje, 333)

//condición de entrada y salida long
long = ma1[1] < ma1 and ma2[1] < ma2 and macd > 0 and px > ma3 and efi_indicador < 9 and px > ma7 and macd[1] < macd
clong = efi_indicador > 22000 and px < ma8
strategy.entry("BUY", strategy.long, when = long)
strategy.close("BUY", when = clong)

//condición de entrada y salida short
short = ma1[1] > ma1 and ma2[1] > ma2 and macd < 0 and px < ma3 and efi_indicador > 9 and macd[1] > macd 
cshort =  efi_indicador < 14000 and px > ma8 and ma11 > desv
strategy.entry("SELL", strategy.short, when = short)
strategy.close("SELL", when = cshort)

//SL Y TP
//strategy.exit("long exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)
//strategy.exit("shot exit", "Daily_Mid Term_Consulting BOLT", profit = close * 40 / syminfo.mintick, loss = close * 0.02 / syminfo.mintick)

// GRAFICA smas
plot(ma1, color=color.new(color.orange, 0))
plot(ma2, color=color.new(color.orange, 0))
plot(ma3, color=color.new(color.orange, 0))
plot(ma4, color=color.new(color.orange, 0))
plot(ma5, color=color.new(color.orange, 0))
plot(ma6, color=color.new(color.green, 0))
plot(ma7, color=color.new(color.orange, 0))
plot(ma8, color=color.new(color.orange, 0))
plot(ma9, color=color.new(color.orange, 0))
//GRAFICA MACD
plot(macd, color=color.new(color.red, 0), style = plot.style_columns)
//GRAFICA DIVERGENCIA
plot(porcentaje, style = plot.style_columns)
//GRAFICA MA DIVERGENCIA
plot(ma_dista, color=color.new(color.white, 0))
//GRAFICA MA DIVERGENCIA
plot(desv, color=color.new(color.blue, 0))
//GRAFICA EFI
plot(efi_indicador, color=color.new(color.yellow, 0))
// GRAFICA RSI
l1 = hline(70, color=color.new(color.green, 0))
l2 = hline(30, color=color.new(color.green, 0))
plot(rsi, color=color.new(color.white, 0))




//prueba 1 stop loss and take profit
//sl = 0.05
//tp = 0.1    
//calculo de precio para sl y tp
//longstop=strategy.position_avg_price*(1-sl)
//longprofit=strategy.position_avg_price*(1+tp)

//shortstop=strategy.position_avg_price*(1+sl)
//shortprofit=strategy.position_avg_price*(1-tp)

//if (long)
  //  strategy.exit("BUY", strategy.long)

//sl and tp  long|short
//if strategy.entry("BUY", strategy.long)

//if strategy.position_avg_price > 0
//strategy.exit("BUY", limit = longprofit, stop = longstop)

//if strategy.position_avg_price < 0
//strategy.exit("SELL", limit = shortprofit, stop=shortstop)

더 많은