
Эта стратегия использует множество технических показателей в сочетании для принятия решений о долгосрочных двусторонних сделках. В основном включает в себя такие показатели, как линия буринга, RSI, ADX, а также в сочетании с равномерной линией, чтобы определить направление тенденции.
Эта стратегия основана на оценке ценовых колебаний с помощью линии буринга, где сокращение линии буринга означает снижение ценовых колебаний, возможно, произойдет прорыв; в то же время в сочетании с RSI для определения сверхпокупа и сверхпродажи, RSI выше 70 - это зона сверхпокупа, а ниже 30 - зона сверхпродажи. Когда линия буринга сокращается, индикатор RSI приближается к зоне сверхпокупа и сверхпродажи.
Кроме того, эта стратегия также использует ADX для определения силы ценового движения. Когда ADX выше, это означает, что тенденция сильна, и тогда можно выбрать походную торговлю; когда ADX ниже, это означает, что нет очевидной тенденции, и тогда можно рассмотреть обратную торговлю. Наконец, в сочетании с равновесием, чтобы определить направление долгосрочной тенденции, можно рассмотреть покупку, если цена находится в восходящей тенденции; если цена находится в нисходящей тенденции, можно рассмотреть продажу.
В частности, когда буринская полоса сокращается, RSI приближается к зоне перепродажи, и цена падает, считается, что ситуация может подняться, и в этот момент следует подумать о большем; когда буринская полоса сокращается, RSI приближается к зоне перепродажи, и цена взрывается, считается, что ситуация может упасть, и в этот момент следует подумать об убывании. Кроме того, если ADX выше, цена может быть увеличена в восходящей тенденции; если ADX ниже, цена может быть увеличена в нисходящей тенденции.
Такой комплексный подход имеет следующие преимущества:
Комплексный учет нескольких технических показателей повышает точность и устойчивость торговых сигналов. Одиночный показатель подвержен ошибочным выводам, таким как поддельные прорывы, а комбинация нескольких показателей может подтвердить сигнал и избежать ошибочных сделок.
Учитывает как тенденции, так и колебания, способен адаптироваться к различным рыночным условиям, гибкость изменяется. Трендовые сделки преследуют большие тенденции, колебания торговой цели - небольшая прибыль.
В то же время, при увеличении количества ликвидных позиций, можно снизить риски позиций на односторонних рынках, чтобы предотвратить экстремальные ситуации.
Установка стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп-стоп
Посредством оптимизации параметров можно постоянно повышать эффективность стратегии и адаптироваться к изменениям рынка.
В этой стратегии также есть некоторые риски, о которых следует помнить:
Многопоказательная комбинация увеличивает стратегическую сложность, неправильная настройка параметров может снизить эффективность. Необходимо тщательно тестировать и оптимизировать.
Чрезмерное полагаться на технические индикаторы, игнорируя основную информацию, может привести к тому, что торговые сигналы будут неточными.
В то время, когда индикатор дает сигнал, ситуация может измениться, и существует риск преследования. Необходимо подождать до соответствующего отклика.
Повышение частоты сделок, повышение комиссионных расходов и финансовое давление. Необходимо контролировать размер позиции.
Существует определенный риск кривой соответствия, поэтому целесообразно тестировать стратегию на прочность на нескольких рынках.
Риск можно контролировать с помощью строгих остановок, осторожного пополнения позиций и разумного контроля позиций. В целом, эта стратегия имеет сильную практическую ценность.
Эта стратегия может быть оптимизирована в следующих аспектах:
Тестирование различных комбинаций параметров, поиск оптимальных параметров. Параметры могут быть оптимизированы с помощью методов, таких как пошаговый процесс, случайный поиск и генетические алгоритмы.
Добавление дополнительных показателей, таких как KDJ, William, чтобы сформировать группу показателей и повысить устойчивость стратегии.
Оптимизация управления позициями, управление рисками с помощью динамической корректировки позиций.
В сочетании с алгоритмами машинного обучения используются количественные модели для оценки ценовых тенденций и будущих движений.
Испытание стратегии в разных видах, периодах времени и на разных рынках для улучшения адаптации.
Оптимизация времени входа и выхода с целью захвата тенденций на ранней стадии и выхода перед реверсией.
Применение методов, таких как отслеживание стоп-стопов, мобильные стопы для блокирования прибыли и управления рисками.
Фильтрация сигналов, полученных от технических индикаторов, с помощью базовых факторов и оценок структуры рынка.
Эта стратегия использует различные показатели для определения ценовых тенденций и автоматизации торгов. У стратегии есть преимущества, такие как проверка группы показателей, двусторонняя торговля и остановка убытков, что может повысить эффективность торгов. Но также следует обратить внимание на такие проблемы, как оптимизация и ложные сигналы.
/*backtest
start: 2023-09-24 00:00:00
end: 2023-10-24 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © The_Bigger_Bull
//@version=5
strategy("Best TradingView Strategy", overlay=true, margin_long=0, margin_short=0)
//Bollinger Bands
source1 = close
length1 = input.int(15, minval=1)
mult1 = input.float(2.0, minval=0.001, maxval=50)
basis1 = ta.sma(source1, length1)
dev1 = mult1 * ta.stdev(source1, length1)
upper1 = basis1 + dev1
lower1 = basis1 - dev1
//buyEntry = ta.crossover(source1, lower1)
//sellEntry = ta.crossunder(source1, upper1)
//RSI
ma(source, length, type) =>
switch type
"SMA" => ta.sma(source, length)
"Bollinger Bands" => ta.sma(source, length)
"EMA" => ta.ema(source, length)
"SMMA (RMA)" => ta.rma(source, length)
"WMA" => ta.wma(source, length)
"VWMA" => ta.vwma(source, length)
rsiLengthInput = input.int(14, minval=1, title="RSI Length", group="RSI Settings")
rsiSourceInput = input.source(close, "Source", group="RSI Settings")
maTypeInput = input.string("SMA", title="MA Type", options=["SMA", "Bollinger Bands", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings")
maLengthInput = input.int(14, title="MA Length", group="MA Settings")
bbMultInput = input.float(2.0, minval=0.001, maxval=50, title="BB StdDev", group="MA Settings")
up = ta.rma(math.max(ta.change(rsiSourceInput), 0), rsiLengthInput)
down = ta.rma(-math.min(ta.change(rsiSourceInput), 0), rsiLengthInput)
rsi = down == 0 ? 100 : up == 0 ? 0 : 100 - (100 / (1 + up / down))
rsiMA = ma(rsi, maLengthInput, maTypeInput)
isBB = maTypeInput == "Bollinger Bands"
//plot(rsi, "RSI", color=#7E57C2)
//plot(rsiMA, "RSI-based MA", color=color.yellow)
rsiUpperBand = hline(70, "RSI Upper Band", color=#787B86)
hline(50, "RSI Middle Band", color=color.new(#787B86, 50))
rsiLowerBand = hline(30, "RSI Lower Band", color=#787B86)
fill(rsiUpperBand, rsiLowerBand, color=color.rgb(126, 87, 194, 90), title="RSI Background Fill")
bbUpperBand = plot(isBB ? rsiMA + ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Upper Bollinger Band", color=color.green)
bbLowerBand = plot(isBB ? rsiMA - ta.stdev(rsi, maLengthInput) * bbMultInput : na, title = "Lower Bollinger Band", color=color.green)
fill(bbUpperBand, bbLowerBand, color= isBB ? color.new(color.green, 90) : na, title="Bollinger Bands Background Fill")
//ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
up1 = ta.change(high)
down1 = -ta.change(low)
plusDM = na(up1) ? na : (up1 > down1 and up1 > 0 ? up1 : 0)
minusDM = na(down1) ? na : (down1 > up1 and down1 > 0 ? down1 : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
out = ta.sma(close, 14)
sma1=ta.sma(close,55)
ema200=ta.ema(close,200)
longCondition = (out>sma1) and ta.crossover(source1, lower1)
if (longCondition )
strategy.entry("long", strategy.long)
shortCondition = (out<sma1) and ta.crossunder(source1, lower1)
if (shortCondition )
strategy.entry("short", strategy.short)
stopl=strategy.position_avg_price-50
tptgt=strategy.position_avg_price+100
stopshort=strategy.position_avg_price+50
tptgtshort=strategy.position_avg_price-100
strategy.exit("longclose","long",trail_offset=5,trail_points=45,when=ta.crossover(sma1,out))
strategy.exit("shortclose","short",trail_offset=5,trail_points=45,when=ta.crossover(out,sma1))
//if strategy.position_avg_price<0
plot(sma1 , color=color.blue)
plot(out, color=color.green)
//plot(ema200,color=color.red)