단기 거래 전략의 추세

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

img

전반적인 설명

이 전략은 여러 지표에 기초한 경향을 식별하는 단기 거래 전략입니다. 트렌드 방향을 결정하고 그에 따라 거래 결정을 내리기 위해 WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI 및 WTO 등 8 개의 지표를 결합합니다.

전략 논리

이 전략은 먼저 WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI 및 WTO 8개 지표의 경향 방향을 계산하고 판단합니다.

WOW 지표는 몸의 위치에 따라 상승 또는 하락 추세를 판단합니다. 상단 근처의 몸은 상승을 나타냅니다. 하단 근처의 몸은 하락을 나타냅니다.

BMA 지표는 오픈 및 클로즈의 SMA 사이의 관계를 기준으로 트렌드를 판단합니다. 오픈 SMA 위의 클로즈 SMA가 상승세를 나타내고 아래의 크로즈가 하락세를 나타냅니다.

BarColor 지표는 촛불의 색깔에 따라 추세를 판단합니다. 연속 노란색 촛불은 상승세를 나타내고 검은색 촛불은 하락세를 나타냅니다.

슈퍼트렌드 지표는 가격 위치와 평균 범위를 기준으로 추세를 판단합니다. 상단 이상의 가격은 상승세를 나타내고 하단 이하의 가격은 하락세를 나타냅니다.

DI 지표는 긍정적 및 부정적 방향 움직임 사이의 관계를 기준으로 추세를 판단합니다. 부정적인 DI보다 더 큰 긍정적 DI는 상승세를 나타내고 반대로 하락세를 나타냅니다.

TTS 지표는 가격 위치와 이동평균을 기준으로 트렌드를 판단합니다.

RSI 지표는 상대 강도 지표의 수준에 따라 트렌드 방향을 판단합니다.

WTO 지표는 파동 트렌드 오시일레이터를 기반으로 트렌드 방향을 판단합니다.

그 다음 전략은 8개 지표에서 상승 신호의 수를 계산하고 그에 따라 SILA 지지선과 저항선을 그래프화합니다. 더 많은 라인은 더 강한 트렌드 신호를 나타냅니다.

여러 지표가 상승세를 시사할 때, 닫는 것이 가장 낮은 지지선 위에 있을 때 구매 신호가 생성됩니다. 여러 지표가 하락세를 시사할 때, 닫는 것이 가장 낮은 저항선 아래에 있을 때 판매 신호가 생성됩니다.

또한, 전략은 촛불 패턴을 활용하여 인회 기회를 찾고 진입 지점을 개선합니다.

전략 의 장점

  1. 여러 지표를 결합하면 정확도가 향상됩니다.

이 전략은 8개의 공통 트렌드 지표를 사용하여 다양한 측면에서 트렌드를 결정하고, 따라서 트렌드 판단의 정확성과 신뢰성을 향상시킵니다.

  1. SILA 시스템은 신호의 강도를 식별합니다.

SILA 지지/저항선은 상승/하락 신호의 수를 반영합니다. 더 많은 선은 더 강한 신호를 나타냅니다. 이것은 거래자가 거래 신호의 강도를 추가로 평가하는 데 도움이됩니다.

  1. 촛불 패턴은 진입 지점을 개선합니다.

이 전략은 트렌드가 역전될 때 더 나은 입구점을 찾기 위해 촛불 패턴에 기반한 인회 기회를 찾습니다.

전략 의 위험

  1. 지표들 사이의 잠재적 충돌

여러 가지 지표가 때로는 서로 충돌하는 신호를 생성하여 의사결정을 더 어렵게 할 수 있습니다.

  1. 매개 변수는 최적화가 필요할 수 있습니다.

기본 매개 변수는 최적화되지 않을 수 있습니다. 최상의 결과를 얻기 위해 추가 최적화가 필요할 수 있습니다.

  1. 시스템적 위험을 고려합니다

블랙 스완 이벤트는 정상적인 기술적 신호를 무효화 할 수 있습니다. 시장 체계적 리스크는 평가되어야 합니다.

  1. 적립 위험

트렌드를 따라가는 것은 시장 교정 과정에서 더 큰 마감으로 이어질 수 있습니다. 마감을 제한하기 위해 거래 규모를 관리해야합니다.

전략 강화

  1. 지표 매개 변수를 최적화

최적의 매개 변수 조합을 찾기 위해 주기 및 값 수준과 같은 매개 변수를 체계적으로 테스트하고 최적화합니다.

  1. 스톱 로스 메소드 추가

이동 또는 비율 스톱 손실을 제어 마감에 추가하는 것을 고려하십시오.

  1. 부피 표시를 포함

트렌드 지표와 MAVP와 OBV와 같은 볼륨 지표를 결합하여 전술적 결정을 개선합니다.

  1. 위치 크기를 관리

다른 시장 단계에 최적의 포지션 크기를 조사하고 트렌드가 더 분명해지면 크기를 높여보세요.

결론

요약하자면, 이것은 단기 거래 전략을 따르는 다중 지표 트렌드입니다. 여러 지표를 사용하여 트렌드 방향을 결정하고 SILA 시스템으로 신호의 강도를 식별하며, 진입 개선을 위해 촛불 패턴으로 보완됩니다. 전략은 정확도를 향상시킬 수 있지만 충돌 신호의 위험을 주목해야합니다. 파라미터 최적화, 스톱 로스 최적화, 볼륨 통합 등을 통해 추가 개선이 가능합니다.


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

// (c) Noro
//2017

//@version=2

strategy(title="Noro's SILA v1.6L Strategy", shorttitle="SILA v1.6L str", overlay=true)

//settings
sensup = input(5, title="Uptrend-sensivity", minval = -8, maxval = 8)
sensdn = input(5, title="Downtrend-sensivity", minval = -8, maxval = 8)
usewow = input(true, title="Use trend-indicator WOW?")
usebma = input(true, title="Use trend-indicator BestMA?")
usebc = input(true, title="Use trend-indicator BarColor?")
usest = input(true, title="Use trend-indicator SuperTrend?")
usedi = input(true, title="Use trend-indicator DI?")
usetts = input(true, title="Use trend-indicator TTS?")
usersi = input(true, title="Use trend-indicator RSI?")
usewto = input(true, title="Use trend-indicator WTO?")
dist = input(100, title="Distance SILA-lines", minval = 0, maxval = 100)
usetl = input(true, title="Need SILA-lines?")
usebgup = input(true, title="Need uptrend-background?")
usebgdn = input(true, title="Need downtrend-background?")
usealw = input(true, title="Need background always?")
usearr = input(true, title="Need new-trend-arrows?")
useloco = input(true, title="Need locomotive-arrows?")
usemon = input(true, title="Need money?") //joke

// WOW 1.0 method
lasthigh = highest(close, 30)
lastlow = lowest(close, 30)
center = (lasthigh +lastlow) / 2
body = (open + close) / 2
trend1 = body > center ? 1 : body < center ? -1 : trend1[1]
trend2 = center > center[1] ? 1 : center < center[1] ? -1 : trend2[1]
WOWtrend = usewow == true ? trend1 == 1 and trend2 == 1 ? 1 : trend1 == -1 and trend2 == -1 ? -1 : WOWtrend[1] : 0

// BestMA 1.0 method
SMAOpen = sma(open, 30)
SMAClose = sma(close, 30)
BMAtrend = usebma == true ? SMAClose > SMAOpen ? 1 : SMAClose < SMAOpen ? -1 : BMAtrend[1] : 0

// BarColor 1.0 method
color = close > open ? 1 : 0
score = color + color[1] + color[2] + color[3] + color[4] + color[5] + color[6] + color[7]
BARtrend = usebc == true ? score > 5 ? 1 : score < 3 ? -1 : BARtrend[1] : 0

// SuperTrend mehtod
Up = hl2 - (7 * atr(3))
Dn = hl2 + (7 * atr(3))
TrendUp = close[1] > TrendUp[1] ? max(Up, TrendUp[1]) : Up
TrendDown = close[1] < TrendDown[1] ? min(Dn, TrendDown[1]) : Dn
SUPtrend = usest == true ? close > TrendDown[1] ? 1: close < TrendUp[1]? -1 : SUPtrend[1] : 0

//DI method
th = 20
TrueRange = max(max(high-low, abs(high-nz(close[1]))), abs(low-nz(close[1])))
DirectionalMovementPlus = high-nz(high[1]) > nz(low[1])-low ? max(high-nz(high[1]), 0): 0
DirectionalMovementMinus = nz(low[1])-low > high-nz(high[1]) ? max(nz(low[1])-low, 0): 0
SmoothedTrueRange = nz(SmoothedTrueRange[1]) - (nz(SmoothedTrueRange[1])/14) + TrueRange
SmoothedDirectionalMovementPlus = nz(SmoothedDirectionalMovementPlus[1]) - (nz(SmoothedDirectionalMovementPlus[1])/14) + DirectionalMovementPlus
SmoothedDirectionalMovementMinus = nz(SmoothedDirectionalMovementMinus[1]) - (nz(SmoothedDirectionalMovementMinus[1])/14) + DirectionalMovementMinus
DIPlus = SmoothedDirectionalMovementPlus / SmoothedTrueRange * 100
DIMinus = SmoothedDirectionalMovementMinus / SmoothedTrueRange * 100
DItrend = usedi == true ? DIPlus > DIMinus ? 1 : -1 : 0

//TTS method (Trend Trader Strategy)
//Start of HPotter's code
//Andrew Abraham' idea
avgTR      = wma(atr(1), 21)
highestC   = highest(21)
lowestC    = lowest(21)
hiLimit = highestC[1]-(avgTR[1] * 3)
loLimit = lowestC[1]+(avgTR[1] * 3)
ret = iff(close > hiLimit and close > loLimit, hiLimit, iff(close < loLimit and close < hiLimit, loLimit, nz(ret[1], 0)))
pos =	iff(close > ret, 1, iff(close < ret, -1, nz(pos[1], 0))) 
//End of HPotter's code

TTStrend = usetts == true ? pos == 1 ? 1 : pos == -1 ? -1 : TTStrend[1] : 0

//RSI method
RSIMain = (rsi(close, 13) - 50) * 1.5
rt = iff(RSIMain > -10, 1, iff(RSIMain < 10, -1, nz(pos[1], 0))) 
RSItrend = usersi == true ? rt : 0

//WTO ("WaveTrend Oscilator") method by LazyBear
//Start of LazyBear's code
esa = ema(hlc3, 10)
d = ema(abs(hlc3 - esa), 10)
ci = (hlc3 - esa) / (0.015 * d)
tci = ema(ci, 21)
//End of LazyBear's code

WTOtrend = usewto == true ? tci > 0 ? 1 : tci < 0 ? -1 : 0 : 0

//plots
trends = usemon == true ? WOWtrend + BMAtrend + BARtrend + SUPtrend + DItrend + TTStrend + RSItrend + WTOtrend: -1 * (WOWtrend + BMAtrend + BARtrend + SUPtrend + DItrend + TTStrend + RSItrend + WTOtrend)
pricehi = sma(high, 10)
pricelo = sma(low, 10)
per = usetl == 1 ? dist / 10000 : 0

color1 = usetl == true ? trends > 0 ? blue : na : na
plot(pricelo * (1 - per), color=color1, linewidth=1, title="SILA-line")
color2 = usetl == true ? trends > 1 ? blue : na : na
plot(pricelo * (1 - 2 * per), color=color2, linewidth=1, title="SILA-line")
color3 = usetl == true ? trends > 2 ? blue : na : na
plot(pricelo * (1 - 3 * per), color=color3, linewidth=1, title="SILA-line")
color4 = usetl == true ? trends > 3 ? blue : na : na
plot(pricelo * (1 - 4 * per), color=color4, linewidth=1, title="SILA-line")
color5 = usetl == true ? trends > 4 ? blue : na : na
plot(pricelo * (1 - 5 * per), color=color5, linewidth=1, title="SILA-line")
color6 = usetl == true ? trends > 5 ? blue : na : na
plot(pricelo * (1 - 6 * per), color=color6, linewidth=1, title="SILA-line")
color7 = usetl == true ? trends > 6 ? blue : na : na
plot(pricelo * (1 - 7 * per), color=color7, linewidth=1, title="SILA-line")
color8 = usetl == true ? trends > 7 ? blue : na : na
plot(pricelo * (1 - 8 * per), color=color8, linewidth=1, title="SILA-line")

color10 = usetl == true ? trends < 0 ? black : na : na
plot(pricehi * (1 + per), color=color10, linewidth=1, title="SILA-line")
color11 = usetl == true ? trends < -1 ? black : na : na
plot(pricehi * (1 + 2 * per), color=color11, linewidth=1, title="SILA-line")
color12 = usetl == true ? trends < -2 ? black : na : na
plot(pricehi * (1 + 3 * per), color=color12, linewidth=1, title="SILA-line")
color13 = usetl == true ? trends < -3 ? black : na : na
plot(pricehi * (1 + 4 * per), color=color13, linewidth=1, title="SILA-line")
color14 = usetl == true ? trends < -4 ? black : na : na
plot(pricehi * (1 + 5 * per), color=color14, linewidth=1, title="SILA-line")
color15 = usetl == true ? trends < -5 ? black : na : na
plot(pricehi * (1 + 6 * per), color=color15, linewidth=1, title="SILA-line")
color16 = usetl == true ? trends < -6 ? black : na : na
plot(pricehi * (1 + 7 * per), color=color16, linewidth=1, title="SILA-line")
color17 = usetl == true ? trends < -7 ? black : na : na
plot(pricehi * (1 + 8 * per), color=color17, linewidth=1, title="SILA-line")

//background
col = usebgup == true and trends >= sensup ? 1 : usebgdn == true and trends <= (-1 * sensdn) ? -1 : usealw == true ? col[1] : 0
bgcolor = col == 1 ? lime : col == -1 ? red : na
//bgcolor(bgcolor, transp=70)

//arrows
posi = trends >= sensup ? 1 : trends <= (-1 * sensdn) ? -1 : posi[1]
arr = usearr == true ? posi == 1 and posi[1] < 1 ? 1 : posi == -1 and posi[1] > -1 ? -1 : na : na
//plotarrow(arr == 1 ? 1 : na, title="UpArrow", colorup=blue, maxheight=60, minheight=50, transp=0)
//plotarrow(arr == -1 ? -1 : na, title="DnArrow", colordown=blue, maxheight=60, minheight=50, transp=0)

//locomotive
bar = close > open ? 1 : close < open ? -1 : 0
locotop = bar == -1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0
locobot = bar == 1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
entry = useloco == false ? 1 : posi == posi[1] ? (locotop == 1 and posi == -1) or (locobot == 1 and posi == 1) ? 1 : entry[1] : 0
//plotarrow(locobot == 1 and entry[1] == 0 and posi == 1 ? 1 : na, title="UpLocomotive", colorup=yellow, maxheight=60, minheight=50, transp=0)
//plotarrow(locotop == 1 and entry[1] == 0 and posi == -1 ? -1 : na, title="DnLocomotive", colordown=yellow, maxheight=60, minheight=50, transp=0)

longCondition = arr == 1
if (longCondition)
    strategy.entry("Long", strategy.long)

shortCondition = arr == -1
if (shortCondition)
    strategy.entry("Short", strategy.short)

더 많은