구름 너머 전략

저자:차오장, 날짜: 2023-11-03 16:10:33
태그:

img

전반적인 설명

이 전략은 주문을 배치하는 데 도움이되는 슈퍼 트렌드 지표를 사용하고 수익성을 높이기 위해 클라우드 레이어 및 촛불 색상으로 필터하여 제한 주문을 배치합니다. 목표는 트렌드가 시작 된 후 빠르게 파악하고 통합 중에 위험을 줄이는 것입니다.

전략 논리

  1. ATR 기간 내 최고 및 최저 가격의 평균을 기준으로 계산합니다.

  2. 계수 곱셈을 기준으로 상위와 하위 대역을 계산합니다.

  3. 클로즈가 상단 위에 있을 때 1로 표시하세요. 하단 아래에 있으면 -1로 표시하세요. 그렇지 않으면 이전 상태를 유지하세요.

  4. 상위/하위 대역에 대한 폐쇄 가격의 위치에 따라 스톱 로스 라인을 동적으로 조정합니다.

  5. 클라우드 레이어 범위를 상부/하부 대역 간격의 특정 비율에 기초하여 계산합니다.

  6. 길게는 슈퍼 트렌드가 -1일 때 닫아야 합니다. 짧게는 슈퍼 트렌드가 -1일 때 닫아야 합니다.

  7. 이전 바의 닫기 가격에 한정 구매 주문을 장거리. 한정 판매 주문을 단기.

  8. 시간 범위로 필터링하고, 가능한 모든 포지션을 닫습니다.

이점 분석

이 전략은 슈퍼 트렌드와 클라우드 개념을 결합하여 트렌드가 시작되면 빠른 트렌드 포착을 허용합니다. 슈퍼 트렌드 스톱 손실은 정상적인 이동 스톱 손실보다 더 빠르게 반응합니다. 클라우드 레이어는 잘못된 브레이크로 인한 손실을 피합니다. 제한 주문은 미끄러짐을 줄이고 수익성을 높입니다. 주요 장점은 다음과 같습니다.

  1. 슈퍼 트렌드는 민감하고 트렌드를 강력하게 추적합니다.

  2. 클라우드 레이어 필터는 가짜 유출로 인한 손실을 줄여줍니다.

  3. 촛불의 색은 역행을 피하는 데 도움이 됩니다.

  4. 제한 주문은 미끄러짐의 영향을 줄이고 승률을 높입니다.

  5. 사용자 정의 가능한 시간 범위와 위치 관리

위험 분석

또한 몇 가지 위험 요소가 있습니다.

  1. 부적절한 슈퍼 트렌드 매개 변수는 너무 민감하고 을 일으킬 수 있습니다.

  2. 과도한 구름 범위는 유효한 브레이크아웃 신호를 필터링하여 수익성에 영향을 줄 수 있습니다.

  3. 높은 변동성, 놓친 기회에서 제한 주문이 채워지지 않을 수 있습니다.

  4. 스톱 로즈는 시스템적 위험과 엄청난 손실을 완전히 피할 수 없습니다.

  5. 더 큰 포지션 크기는 손실을 증폭시킵니다. 위험을 통제해야 합니다.

최적화 방향

이 전략은 다음과 같은 측면에서 개선될 수 있습니다.

  1. 최적의 슈퍼 트렌드 매개 변수를 위해 다른 시장과 도구를 테스트합니다.

  2. 시장 변동성에 따라 스톱 로스 수준을 동적으로 조정합니다.

  3. 노이즈 필터링과 신호 보유를 균형을 맞추기 위해 클라우드 범위를 최적화합니다.

  4. 시장 조건에 따라 포지션 크기를 동적으로 조정하는 모듈을 추가합니다.

  5. 시장 리듬에 적응하기 위해 다른 거래 세션에 다른 매개 변수 세트를 사용하십시오.

  6. 다른 지표와 결합할 때 테스트 효과

결론

결론적으로,이 전략은 트렌드 포착에 명확한 논리와 명백한 이점을 가지고 있습니다. 그러나 어떤 전략도 시스템 위험을 완전히 피할 수 없습니다. 라이브 거래에서 위험을 최소화하고 가장자리를 높이기 위해 포지션 사이즈를 제어하고 최적화해야합니다. 이 전략은 진화하는 시장 역동성에 적응하기 위해 추가 테스트와 향상을위한 큰 잠재력을 가지고 있습니다.


/*backtest
start: 2023-10-03 00:00:00
end: 2023-11-02 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=2
strategy("Noro's SuperTrend Strategy v2.0 Limit", shorttitle = "STL str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot, %")
cloud = input(25, defval = 25, minval = 5, maxval = 50, title = "cloud, % of ATR")
Factor = input(title = "Super Trend", defval = 3, minval = 1, maxval = 100)
ATR = input(title = "ATR", defval = 7, minval = 1,maxval = 100)
centr = input(true, defval = true, title = "need center of ATR?")
border = input(false, defval = false, title = "need border?")
fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Super Trend ATR 1
src = close
Up=hl2-(Factor*atr(ATR))
Dn=hl2+(Factor*atr(ATR))
TUp=close[1]>TUp[1]? max(Up,TUp[1]) : Up
TDown=close[1]<TDown[1]? min(Dn,TDown[1]) : Dn
Trend = close > TDown[1] ? 1: close< TUp[1]? -1: nz(Trend[1],1)
Tsl1 = Trend==1? TUp: TDown
Tsl2 = Trend==1? TDown: TUp
limit = (Tsl1 - Tsl2) / 100 * cloud
upcloud = Tsl1 - limit
dncloud = Tsl2 + limit

//Cloud
linecolor = Trend == 1 ? green : red
centercolor = centr == true ? blue : na
cloudcolor = Trend == 1 ? green : red
cline = (Tsl1 + Tsl2) / 2
P1 = plot(Tsl1, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-1")
P2 = plot(Tsl2, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend ATR-2")
P3 = plot(cline, color = centercolor , style = line , linewidth = 1,title = "SuperTrend Center")
P4 = plot(upcloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center+1")
P5 = plot(dncloud, color = border == false ? na : linecolor , style = line , linewidth = 1,title = "SuperTrend Center-1")
fill(P1, P4, color = linecolor == red ? red : lime, transp = 50)
fill(P2, P5, color = linecolor == red ? red : lime, transp = 50)

//Signals
up = 0.0
dn = 0.0
up := Trend != 1 ? 0 : Trend == 1 and close < open ? close : up[1]
dn := Trend != -1 ? close * 1000 : Trend == -1 and close > open ? close : dn[1]

//Trading
size = strategy.position_size
lot = 0.0
lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1]
if true
    strategy.entry("Long", strategy.long, needlong ? lot : 0, limit = up, when = (Trend == 1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))
    strategy.entry("Short", strategy.short, needshort ? lot : 0, limit = dn, when = (Trend == -1 and time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59)))

if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()

더 많은