
A estratégia é uma estratégia de negociação em linha curta baseada em vários indicadores para determinar a tendência. Ela usa integralmente oito indicadores, incluindo WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI e WTO, para determinar a direção da tendência e, com isso, tomar decisões de compra e venda.
A estratégia começa por calcular e determinar a direção da tendência em oito indicadores: WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI e WTO.
O indicador WOW é usado para julgar a tendência de alta altitude com base na posição da entidade no preço. Se a posição da entidade estiver perto da linha de cima, é um ganho; se estiver perto da linha de baixo, é uma queda.
O indicador BMA é baseado na correlação entre o SMA e o mercado de ações. Se o preço de fechamento do SMA for positivo, o preço de fechamento do SMA será positivo.
O indicador BarColor é baseado na cor da linha K para julgar a tendência, com várias linhas positivas e negativas consecutivas.
O indicador de SuperTrend é usado para avaliar a tendência de preços com base no intervalo médio de flutuação, com os preços sendo positivos acima do trajeto superior e negativos abaixo do trajeto inferior.
O DI é um indicador de tendências baseado na relação entre o tamanho e o volume de ações, sendo a ação maior do que o volume de ações a favor ou contra.
O indicador de TTS julga a tendência de pluralidade com base na relação entre a posição do preço e a linha média.
O indicador RSI julga a direção da tendência com base na posição do indicador de força relativamente fraco.
Os indicadores da OMC julgam a direção da tendência com base na abundância de indicadores de volatilidade.
Em seguida, a estratégia calcula o número de pontos positivos nos 8 indicadores e, com base nisso, traça uma linha de apoio e resistência de baixa e baixa do SILA. Quanto maior o número de linhas de apoio e resistência, mais forte é o sinal de tendência.
Quando vários indicadores são positivos, um sinal de compra é gerado se o preço de fechamento estiver acima da linha de suporte do nível mais baixo; Quando vários indicadores são negativos, se o preço de fechamento estiver abaixo da linha de resistência do nível mais baixo, um sinal de venda é gerado.
Além disso, a estratégia também usa a forma da linha K para avaliar as oportunidades de retração em curto prazo, procurando por pontos de entrada mais favoráveis quando a tendência se inverte.
A estratégia não se baseia em um único indicador, mas sim na aplicação integrada de oito indicadores comuns de avaliação de tendências, que permitem uma avaliação multidimensional das tendências, o que aumenta a precisão e a confiabilidade do julgamento.
A estratégia baseia-se em sinais de tendência de alta e baixa de vários indicadores, usando o sistema SILA para traçar linhas de suporte e resistência em vários níveis. Quanto maior o número de linhas, mais forte é o sinal de tendência. Isso pode ajudar os comerciantes a identificar ainda mais a força do sinal.
A estratégia não só baseia-se na direção dos indicadores de tendência, mas também combina a forma de linha K para procurar oportunidades de reversão de curto prazo, entrando no ponto de reversão de tendência, para obter um melhor ponto de entrada.
Esta estratégia usa vários indicadores, entre os quais pode haver divergências de julgamento em algumas situações, o que requer o próprio equilíbrio do comerciante, aumentando a dificuldade de decisão.
Muitos dos indicadores desta estratégia usam parâmetros padrão, que podem ser otimizados para obter o melhor resultado.
No caso de um grande evento de Black Swan, o risco sistêmico pode levar à falha dos indicadores técnicos normais, e é necessário prestar atenção na avaliação do risco sistêmico do mercado.
As retrações de acordo com a tendência podem ser maiores durante a fase de expansão, e é necessário ter cuidado para controlar a escala de cada transação para limitar as retrações.
Os parâmetros de cada indicador, como o comprimento do ciclo, o tamanho do valor, etc., podem ser otimizados por meio de uma abordagem mais sistemática, procurando a melhor combinação de parâmetros.
Pode-se considerar o aumento do stop loss móvel ou o stop loss percentual para controlar a retirada.
Pode-se introduzir indicadores quantitativos como o MAVP, OBV e outros indicadores combinados com indicadores de tendência para melhorar a precisão das decisões táticas.
Pode-se estudar a proporção de posições em diferentes fases do mercado para aumentar as posições quando a tendência é mais clara.
Esta estratégia Overall é uma estratégia de negociação de curta linha de seguimento de tendências de vários indicadores. Ela usa o uso integrado de vários indicadores para determinar a direção da tendência, usando o sistema SILA para identificar a intensidade do sinal e auxiliando a otimização de entrada em forma de linha K. A estratégia pode melhorar a precisão do julgamento, mas é necessário ter em conta o risco de discordância de diferentes indicadores.
/*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)