Краткосрочные торговые стратегии, следующие за трендом


Дата создания: 2023-11-16 11:11:32 Последнее изменение: 2023-11-16 11:11:32
Копировать: 0 Количество просмотров: 667
1
Подписаться
1617
Подписчики

Краткосрочные торговые стратегии, следующие за трендом

Обзор

Эта стратегия является короткой линейной торговой стратегией, основанной на определении тенденции на основе нескольких индикаторов. Она использует восемь индикаторов, включая WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI и WTO, чтобы определить направление тенденции и принять решения о покупке и продаже.

Стратегический принцип

Сначала стратегия рассчитывает и определяет направление тренда по восьми показателям: WOW, BMA, BarColor, SuperTrend, DI, TTS, RSI и WTO.

Индекс WOW используется для определения полярных тенденций в зависимости от позиции объекта в цене. Если позиция объекта близка к верхней траектории, то она является положительной; если близка к нижней траектории, то она является отрицательной.

Индекс BMA используется для определения тенденции на основе однородности SMA. Если цена на закрытие SMA проходит через открытие SMA, то она становится позитивной, а цена на закрытие SMA - позитивной.

BarColor индикатор определяет тенденцию по цвету K-линии, последовательное множество солнечных линий - положительные, и солнечные - отрицательные.

Индекс SuperTrend определяет тенденцию цены в зависимости от среднего диапазона колебаний, цены находятся в позитивном состоянии выше верхнего трека, а в пониженном состоянии ниже нижнего трека.

Диапазон динамики (DI) определяется как отношение величины и величины плюсовой динамики к тренду, а плюсовая динамика больше, чем пустая динамика.

TTS-индикатор оценивает тенденцию на фоне отношений между ценой и позицией средней линии.

Индекс RSI определяет направление тренда в зависимости от того, где находится более сильный индикатор по сравнению со слабым.

Показатели ВТО оценивают направление тенденции на основе большей свободы в показателях волатильности.

Затем стратегия подсчитывает количество положительных отзывов по этим восьми показателям и на основе этого составляет классифицированные позитивные и отрицательные линии поддержки и сопротивления SILA. Чем больше количество линий поддержки и сопротивления, тем сильнее сигнал тренда.

Когда несколько индикаторов положительно настроены, если цена на закрытие находится выше нижней поддержки, это создает сигнал к покупке; когда несколько индикаторов положительно настроены, если цена на закрытие находится ниже нижней поддержки, это создает сигнал к продаже.

Кроме того, стратегия использует K-линию для оценки возможности краткосрочного отклонения и поиска более выгодных входных точек при обратном тренде.

Стратегические преимущества

  1. Анализ тенденций по нескольким показателям для повышения точности оценки

Стратегия не зависит от одного показателя, а использует восемь часто используемых показателей для определения тенденций, чтобы оценивать тенденции в нескольких направлениях, что повышает их точность и надежность.

  1. Система SILA отображает устойчивость к поддержке в разрезе и идентифицирует сильные и слабые сигналы тренда

Эта стратегия основана на bullish-bullish сигналах из нескольких индикаторов, используя систему SILA, чтобы нарисовать несколько уровней линий поддержки и сопротивления. Чем больше линий, тем сильнее сигнал тренда. Это может помочь трейдерам в дальнейшем определить силу сигнала.

  1. В сочетании с K-линейной формой, поиск возможности для отзыва, лучший вход в игру

Эта стратегия не только определяет направление на основе трендовых показателей, но и использует K-линию для поиска возможности краткосрочного отклонения, чтобы войти в позицию входа, которая может быть лучше, когда тенденция переворачивается.

Стратегический риск

  1. Некоторые показатели могут расходиться.

В этой стратегии используются несколько показателей, которые в некоторых случаях могут расходиться между собой, что требует от трейдера самостоятельного взвешивания, что увеличивает сложность принятия решений.

  1. Настройки параметров индикатора могут потребовать оптимизации

Многие показатели в этой стратегии используют параметры по умолчанию, которые могут быть оптимизированы для оптимального эффекта.

  1. Систематические риски

В случае крупного черного свинца системный риск может привести к сбоям в нормальных технических показателях, поэтому следует обратить внимание на оценку системного риска рынка.

  1. Риск отступления

Вслед за тенденцией, отзывы могут быть значительными в период расширения, поэтому следует следить за тем, чтобы ограничить их количество в отдельных сделках.

Направление оптимизации стратегии

  1. Тестирование и оптимизация параметров показателя

Можно более систематически оптимизировать параметры различных показателей, таких как длина цикла, размер значения и т. Д., Чтобы найти оптимальную комбинацию параметров.

  1. Увеличение убытков

Можно рассмотреть возможность увеличения мобильного стоп-лоста или процента стоп-лоста для контроля вывода.

  1. Показатель объединенной мощности

Можно вводить такие количественные показатели, как MAVP, OBV в сочетании с трендовыми показателями, чтобы повысить точность тактических решений.

  1. Оптимизация управления позициями

Можно изучить пропорции позиций на разных этапах рынка, чтобы увеличить позиции, когда тенденции более яркие.

Подвести итог

Эта стратегия Overall является короткой линейной торговой стратегией, которая отслеживает тенденции в нескольких показателях. Она использует несколько показателей для определения направления тенденции, использует систему SILA для идентификации силы сигнала и оптимизирует вход в K-линейную форму. Эта стратегия может повысить точность суждения, но следует обратить внимание на риск расхождения различных показателей.

Исходный код стратегии
/*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)