이중 SSL 전략과 EMA Stop Loss

저자:차오장, 날짜: 2023-11-06 16:52:11
태그:

img

전반적인 설명

이 전략은 시장 트렌드 방향을 결정하기 위해 이중 SSL 지표와 이동 평균 지표를 통합하고, 트렌드 확인을 위해 이동 평균을 사용합니다. 트렌드 다음 전략에 속합니다. 위험을 제어하기 위해 스톱 로스를 추가하여 비교적 안정적인 전략입니다.

전략 논리

  1. 하부 레일을 계산하기 위해 정해진 기간 동안 가장 높은 가격의 SMA를 계산하고 어제의 종료와 비교하여 하부 레일을 계산하기 위해 정해진 기간 동안 가장 낮은 가격의 SMA를 계산합니다.

  2. 현재 폐쇄 가격을 상부 및 하부 레일과 비교하여 현재 트렌드 방향을 결정합니다. 종료 가격이 상부 레일 위에 있다면 트렌드는 상승으로 결정됩니다. 종료 가격이 하부 레일 아래에 있다면 트렌드는 하향으로 결정됩니다.

  3. 중장기 동향을 기준으로 종료 가격의 200주기 SMA를 계산합니다.

  4. 올림상, 닫기 가격이 아래로부터 SMA를 넘으면 구매 신호가 생성됩니다. 하림상, 닫기 가격이 위로부터 SMA를 넘으면 판매 신호가 생성됩니다.

  5. 긴 포지션에 진입 한 후, 닫기 가격이 상단 레일 아래로 넘어가면, 그것은 닫기 신호입니다. 짧은 포지션에 진입 한 후, 닫기 가격이 하단 레일 위에 넘어가면, 그것은 닫기 신호입니다.

  6. 고정된 비율의 스톱 로스 포인트를 설정합니다. 종료 가격이 스톱 로스 포인트 아래로 떨어지면 스톱 로스 오더가 트리거됩니다.

장점

  1. 트렌드 방향을 결정하기 위해 듀얼 SSL 지표를 사용하면 트렌드를 효과적으로 식별하고 올바른 방향으로 진입할 확률을 높일 수 있습니다.

  2. 이동 평균을 더하면 소음 신호를 필터링하여 불안한 시장에서 잘못된 거래를 피할 수 있습니다.

  3. 단일 거래 위험을 통제하기 위해 스톱 로스를 사용하면 과도한 손실을 효과적으로 피할 수 있습니다.

  4. 전략 논리는 비교적 간단하고 이해하기 쉽고 초보자가 연습하기에 적합합니다.

위험성

  1. 이중 SSL 표시기는 매개 변수 조정에 민감하며, 다른 기간 조합은 매우 다른 결과를 초래할 수 있습니다. 매개 변수는 신중하게 최적화해야합니다.

  2. 너무 긴 MA는 너무 많은 거래 기회를 필터링하고, 너무 짧은 MA는 효과적으로 표시하지 못합니다. 균형 잡힌 MA 기간을 사용해야합니다.

  3. 너무 넓은 스톱 로스 범위를 설정하면 위험을 효과적으로 제어할 수 없으며, 너무 좁은 경우 정상적인 가격 변동에 의해 유발 될 수 있습니다. 스톱 로스 범위를 신중하게 설정해야합니다.

  4. 이 전략은 매개 변수 최적화에 크게 의존합니다. 잘못된 매개 변수는 트렌드를 올바르게 식별하지 못하여 잘못된 거래 결정으로 이어질 수 있습니다.

최적화 방향

  1. 두 개의 SSL 지표의 트렌드 결정 정확성을 향상시킬 수있는 매개 변수를 찾기 위해 다른 기간 조합을 테스트하십시오.

  2. 다른 기간 MAs를 테스트하여 소멸 및 보존 신호 사이의 최적의 균형을 찾으십시오.

  3. 시장의 변동성에 따라 조정되는 적응 스톱 손실을 탐구하여 스톱 손실을 더 반응하도록하십시오.

  4. 확인을 위한 다른 지표, 예를 들어 부피, 다중 시간 프레임 합동, 안정성을 향상시키기 위해 포함합니다.

  5. 안정성을 보장하기 위해 최적화된 전략에 대한 앞으로의 분석이 수행되어야합니다.

결론

이 전략은 듀얼 SSL 지표와 이동 평균의 강점을 결합합니다. 매개 변수 최적화에 대한 상당한 잠재력으로, 트렌드 다음 전략입니다. 합리적인 매개 변수 조정 및 최적화로 좋은 결과를 얻을 수 있습니다. 그러나 견고성을 보장하기 위해 과도한 적합성의 위험이 통제되어야합니다. 전반적으로이 전략은 탐색과 학습에 좋은 예로 작용합니다.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
//@Isaac
//Estrategia vista en ▼▼
//YT: Trading Zone
strategy('SSL Strategy + EMA 200 AND Stop Loss', overlay=true)

ema = ta.ema(close, 200)

stop_loss = input.float(2.00, title='Stop Loss', step=0.10)

period = input(title='Period', defval=10)
len = input(title='Period', defval=10)
smaHigh = ta.sma(high, len)
smaLow = ta.sma(low, len)
Hlv = int(na)
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh


cruceArriba = ta.crossover(sslUp, sslDown)
cruceAbajo = ta.crossunder(sslUp, sslDown)

alcista = (close > ema ) and (cruceArriba) 
bajista = (close < ema) and (cruceAbajo)

var SL = 0.0
//Cerrar compra por cruce
por_cruce = ta.crossunder(sslUp, sslDown)

//Cerrar venta por cruce
por_cruceAB = ta.crossunder(sslDown, sslUp)

//Cerrar compra y venta por stop loss
Stop = SL

comprado = strategy.position_size > 0
vendido = strategy.position_size < 0

UTmpconvertL = strategy.position_avg_price * (1 + 0.1)
UTmpdefineL = (UTmpconvertL > close and strategy.openprofit > 0.1)
UTSPL = UTmpdefineL

SPL = UTSPL

///////////////////////////////////////////////////////////////////////

UTmpconvertLS = strategy.position_avg_price * (1 + 0.1)
UTmpdefineLS = (UTmpconvertLS > close and strategy.openprofit > 0.1)
UTSPLS = UTmpdefineLS

SPLS = UTSPLS

////////////////////////////////////////////////////////////////////////

if not comprado and not vendido and alcista
    cantidad = (strategy.equity / close)
    strategy.entry('Compra', strategy.long, qty=cantidad, comment="Long")
    SL := sslDown


if comprado and not vendido and por_cruce and SPL
    strategy.close("Compra", comment="Exit Long")
    SL := 0
    
if comprado and not vendido and Stop
    strategy.exit('Compra', stop=Stop, comment="SL")
    SL := 0

///////////////////////////////////////////////////////////////////

if not comprado and not vendido and bajista
    cantidad = (strategy.equity / close)
    strategy.entry('Venta', strategy.short, qty=cantidad, comment="Short")
    SL := sslDown

if not comprado and vendido and por_cruceAB and SPLS
    strategy.close("Venta", comment="Exit Short")
    SL := 0
    
if not comprado and vendido and Stop
    strategy.exit('Venta', stop=Stop, comment="SLS")
    SL := 0



plot(Stop > 0 ? Stop : na, style=plot.style_circles, color=color.new(color.yellow,0))
plot(ema)
plot(sslDown, linewidth=2, color=color.new(color.red, 0))
plot(sslUp, linewidth=2, color=color.new(color.lime, 0))




더 많은