Эта стратегия использует четыре различных технических показателя, включая Brin Belt, RSI, MACD и Stochastic, для длинных и коротких двусторонних торгов. Сначала она определяет, находится ли цена за пределами коридора Brin Belt, и если да, то делает дополнительный пробел в зависимости от направления; затем она определяет, находится ли RSI в зоне сверхпокупа, и если да, то может войти в зону сверхпродажи; затем она определяет, происходит ли MACD, и если да, то может войти в зону сверхпродажи; и, наконец, она определяет, производит ли Stochastic сверхпокупа и находится ли в зоне сверхпокупа, и может войти в зону сверхпродажи, если соответствует условиям.
Стратегия основана на использовании четырех индикаторов: Brin, RSI, MACD и Stochastic.
Полоса бурин - это стандартная разница между ценой акций, которая выходит за пределы полосы бурин и означает, что цена акции вышла из нормального диапазона колебаний, и в этом случае может быть сделано больше.
RSI рассчитывает свои значения с помощью быстрых Rise и быстрых Fall, когда RSI ниже 30 - это перепродажа, а выше 70 - это перекуп, и это может служить сигналом о покупке или продаже.
MACD представляет собой среднеиндексовое значение DIFF минус отклонение от DEA, DIFF вверх, чтобы преодолеть DEA, делает больше сигналов для золотой форки, DIFF вниз, чтобы преодолеть DEA, делает пустые сигналы для мертвой форки.
Стохастическая K-линия и прорыв D-линии также могут использоваться в качестве торговых сигналов, K-линия ниже 20 - это перепродажа, а выше 80 - это перекуп, K-линия с прорывом D-линии - это многоголовый сигнал, а D-линия с прорывом D-линии - это пустой сигнал.
Комбинированный анализ этих четырех показателей может повысить вероятность успешного входа в рынок. В частности, когда цена выходит за пределы Бринского пояса, считается многосигналом; когда RSI ниже 30, считается многосигналом; когда MACD Gold Fork считается многосигналом; когда Stochastic K пересекает линию D и линию K ниже 20, считается многосигналом.
Наибольшим преимуществом этой стратегии является то, что объединение нескольких индикаторов для определения тенденций дает более высокую точность и вероятность победы по сравнению с одним индикатором.
Во-первых, стратегия объединяет несколько временных диапазонов, включая среднесрочные и долгосрочные трендовые оценки по Бриндо, а также краткосрочные оценки по MACD, RSI и Stochastic, что позволяет стратегии делать выводы на нескольких временных измерениях и снижает вероятность ошибочных выводов.
Во-вторых, в стратегии используется принцип подтверждения входа с использованием нескольких индикаторов, что гарантирует точность времени входа только в том случае, если несколько индикаторов посылают сигналы одновременно. Например, для входа необходимо выполнить все четыре индикатора: буринская полоса, RSI, MACD и Stochastic. Это позволяет избежать возможных сбоев в одном индикаторе.
Более того, в этой стратегии используется комбинация индикаторов, которые могут взаимодополнять преимущества различных индикаторов, повышая выигрышную вероятность. Например, RSI может определить перепродажу, Бринбанк может определить отклонение от тенденции, MACD может обнаружить краткосрочные изменения и т. Д. Используйте эти комбинации индикаторов, чтобы использовать свои преимущества.
Наконец, стратегия использует стратегию набора позиций, которая при определенных индикаторных сигналах может принести больше прибыли. При определенных четырех индикаторных сигналах набор позиций может принести больше прибыли, чем количественная торговля.
В этой стратегии также есть некоторые риски, о которых следует помнить.
Во-первых, в стратегии используется множество параметров и показателей, что увеличивает сложность оптимизации стратегии. Существует большое количество параметров, которые необходимо скорректировать, и требуется много исторических данных для повторного тестирования, чтобы найти оптимальную комбинацию параметров.
Во-вторых, стратегия зависит от нескольких индикаторов для одновременного подачи сигналов, что нередко приводит к низкой частоте торгов. Если долгое время не получать синхронных сигналов, стратегия будет слаба.
Более того, стратегия нажима может увеличить прибыль, но также может увеличить убытки. Принимая нажима, когда четыре индикатора ошибочно посылают синхронный сигнал, это может привести к большим убыткам.
В конце концов, стратегия предполагает, что несколько индикаторов посылают сигналы одновременно с более сильным подтверждением, но необходимо учитывать, как принимать решения при разбросе индикаторов. В случае несоответствия индикаторов стратегия должна создавать количественные механизмы принятия решений.
Эта стратегия может быть оптимизирована в следующих аспектах:
Оптимизация параметров показателя для поиска оптимального сочетания параметров. Общий оптимизированный поиск параметров показателя может проводиться с помощью генетических алгоритмов, сетевого поиска и других методов.
Применение стратегии сдерживания убытков, чтобы контролировать убытки. Применение стратегии сдерживания убытков, чтобы предотвратить расширение убытков, когда цена прорывается в неблагоприятном направлении.
Оптимизация логики зачисления, создание количественных механизмов оценки, когда показатели не совпадают. Например, установление веса различных показателей, в соответствии с оценкой зачисления.
Оптимизация логики выхода, изучение доходности и убыточности при различных периодах хранения позиций, разработка оптимальных правил выхода.
Оптимизация типов и периодов торгов, адаптация типов и периодов торгов к стратегии.
Влияние на стоимость сделки, параметры оптимизации стратегии в зависимости от скольжения и комиссий.
Добавление алгоритмов машинного обучения, использование нейронных сетей для параметрической адаптации и оптимизации стратегий.
Стратегия использует множество показателей и многочисленные механизмы подтверждения для принятия решений. При разумном контроле параметров и строгих условиях можно получить лучший эффект от стратегии. Но в ней также есть определенные операционные трудности и риски, которые необходимо постоянно оптимизировать для повышения стабильности и надежности стратегии.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy("MD strategy", overlay=true)
lengthrsi = input( 14 )
overSold = input( 30 )
overBought = input( 70 )
price = close
source = close
lengthbb = input(20, minval=1)
mult = input(2.0, minval=0.001, maxval=50)
direction = input(0, title = "Strategy Direction", minval=-1, maxval=1)
fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
consecutiveBarsUp = input(3)
consecutiveBarsDown = input(3)
lengthch = input( minval=1, maxval=1000, defval=5)
upBound = highest(high, lengthch)
downBound = lowest(low, lengthch)
lengthst = input(14, minval=1)
OverBoughtst = input(80)
OverSoldst = input(20)
smoothK = 3
smoothD = 3
k = sma(stoch(close, high, low, lengthst), smoothK)
d = sma(k, smoothD)
ups = price > price[1] ? nz(ups[1]) + 1 : 0
dns = price < price[1] ? nz(dns[1]) + 1 : 0
MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))
basis = sma(source, lengthbb)
dev = mult * stdev(source, lengthbb)
upper = basis + dev
lower = basis - dev
vrsi = rsi(price, lengthrsi)
if (not na(vrsi))
if (crossover(vrsi, overSold))
strategy.entry("RsiLE", strategy.long, comment="RsiLE")
if (crossunder(vrsi, overBought))
strategy.entry("RsiSE", strategy.short, comment="RsiSE")
if (crossover(source, lower))
strategy.entry("BBandLE", strategy.long, stop=lower, oca_name="BollingerBands", comment="BBandLE")
else
strategy.cancel(id="BBandLE")
if (crossunder(source, upper))
strategy.entry("BBandSE", strategy.short, stop=upper, oca_name="BollingerBands", comment="BBandSE")
else
strategy.cancel(id="BBandSE")
if (not na(k) and not na(d))
if (crossover(k,d) and k < OverSoldst)
strategy.entry("StochLE", strategy.long, comment="StochLE")
if (crossunder(k,d) and k > OverBoughtst)
strategy.entry("StochSE", strategy.short, comment="StochSE")
if (crossover(delta, 0))
strategy.entry("MacdLE", strategy.long, comment="MacdLE")
if (crossunder(delta, 0))
strategy.entry("MacdSE", strategy.short, comment="MacdSE")