
이 전략은 쌍방향 지표와 이동 평균 지표를 결합하여 시장 추세 방향을 판단하기 위해 쌍방향 지표를 사용하며 이동 평균을 사용하여 추세를 확인하는 것이 트렌드 추적 전략에 속한다. 위험을 제어하기 위해 스톱로스를 결합하는 것은 보다 안정적인 전략에 속한다.
어제의 종결 가격과 지정된 기간 동안의 최고 가격의 SMA 평균을 구성하는 상반도를 계산하고, 어제의 종결 가격과 지정된 기간 동안의 최저 가격의 SMA 평균을 구성하는 하반도를 계산한다.
현재 종전 가격과 상반, 하반의 관계를 비교하여, 현재 트렌드 방향을 판단한다. 종전 가격은 상반보다 높고, 다단으로 판단한다. 종전 가격은 하반보다 낮고, 공백으로 판단한다.
200주기의 종결 가격 SMA 평균선을 계산하여 중장선 트렌드를 판단하는 기준으로 사용한다.
다면으로 판단할 때, 종결 가격이 SMA 평균선을 아래로 돌파하면, 구매 신호를 생성한다. 공백으로 판단할 때, 종결 가격이 SMA 평균선을 위로 돌파하면, 판매 신호를 생성한다.
다수점 포지션에 진입한 후, 폐장 가격 아래에서 궤도를 깨면 평점 포지션 신호로; 공수점 포지션에 진입한 후, 폐장 가격 위에서 궤도를 깨면 평점 포지션 신호로.
고정 비율의 스톱로스 포인트를 설정하고, 클로즈 가격 아래 스톱로스 포인트를 넘으면 스톱로스 포인트를 활성화한다.
이중 순서 지표를 사용하여 트렌드 방향을 판단하여 트렌드를 효과적으로 식별하여 올바른 방향으로 이동할 확률을 높일 수 있습니다.
평행선이 추가되어 일부 노이즈 신호를 필터링할 수 있으며, 진동상황에서 잘못된 거래를 방지할 수 있다.
단편적 손실의 위험을 통제하기 위해 손실을 중지하는 것은 과도한 손실을 효과적으로 방지 할 수 있습니다.
전략 운영은 비교적 간단하고 이해하기 쉬운 구현으로 초보자 및 실무자에게 적합하다.
이중 순서 지표는 파라미터 설정에 민감하며, 다른 주기 파라미터 조합으로 인해 결과의 차이가 크므로, 신중하게 테스트 파라미터의 최적화가 필요합니다.
평균선 설정이 너무 길면 거래 기회를 더 많이 필터링 할 수 있습니다. 평균선이 너무 짧으면 소음 제거 효과는 좋지 않습니다. 평균선 주기 파라미터의 설정을 중장해야합니다.
스톱피치는 너무 넓어서 위험을 잘 통제할 수 없습니다. 너무 좁으면 가격의 일반적인 변동으로 인해 탈퇴 할 수 있습니다. 스톱피치는 신중하게 설정해야합니다.
전략은 파라미터 최적화에 더 의존하며, 파라미터가 잘못 설정되면 트렌드 방향을 올바르게 식별하지 못할 수 있으며, 거래 결정에 오류가 발생할 수 있다.
다른 주기적 변수들의 조합을 테스트하여 이중 순차 지표가 트렌드를 더 정확하게 판단할 수 있는 변수를 찾아볼 수 있다.
다른 주기들의 평균선 지표를 테스트할 수 있으며, 소음 제거 효과와 신호 보존을 균형 잡는 최적의 평균선 파라미터를 찾을 수 있다.
시장의 변동 정도에 따라 자율적으로 조정되는 스톱스 메커니즘을 설계하여 스톱스를 시장 상황에 더 가깝게 만들 수 있습니다.
전략의 안정성을 높이기 위해 다른 지표들을 추가해 볼 수도 있습니다.
최적화 된 전략은 Walk Forward 분석을 사용하여 검증하여 변수가 여전히 안정성을 유지하도록 할 수 있습니다.
이 전략은 쌍계동 지표와 이동평균선의 장점을 통합하고, 파라미터를 최적화할 수 있는 넓은 범위의 트렌드 추적 전략에 속한다. 합리적인 파라미터를 설정하고 최적화하면, 더 나은 전략 성능을 얻을 수 있다. 하지만, 파라미터를 과도하게 최적화할 수 있는 위험을 통제하고, 파라미터의 안정성을 보장할 필요가 있다. 전체적으로 이 전략은 전략 탐색과 학습의 사례로 사용하기에 적합하다.
/*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))