
Это стратегия использования сильных обоюдных рыночных сигналов для открытия позиции в обоих направлениях. Она выбирает направление открытия позиции после появления двух сильных K-линий в обоих направлениях, а затем устанавливает стоп-стоп для управления риском.
Эта стратегия основана на двух сильных K-линейных сигналах, чтобы определить направление рынка. В частности, она рассчитывает убыль и убыль для каждой K-линии, а когда убыль и убыль двух последовательных K-линий превышают установленный пользователем порог (например, 6%), она определяет это направление как сильное, открывая позицию на третьей K-линии.
При условии, что две последовательные K-линии закрываются, цены на них выросли более чем на 6%. Условия открытия: закрытие двух последовательных K-линий сократилось более чем на 6% по сравнению с предыдущим днем
После открытия позиции устанавливается стоп-стоп-стап-стап-расстояние для управления риском. Стоп-стап-расстояние вводится пользователем, стоп-стап-расстояние является определенным кратным цене открытия позиции (например, 8 раз).
Стратегия также имеет некоторые вспомогательные функции для контроля риска, такие как открытие позиции только в определенный период времени, установление максимальной суммы убытков и т. д.
Это более стабильная и надежная двунаправленная торговая стратегия. Основные преимущества:
Используя двустороннюю торговлю, можно получать прибыль как при подъеме, так и при падении рынка, увеличивая стабильность.
Основываясь на двух сильных сигналах, можно эффективно отфильтровывать шум, входящие позиции имеют более высокое качество
Стоп-стоп имеет разумную настройку, способствует контролю риска, убытки ограничены.
Дополнительные функции, такие как контроль времени, контроль максимального убытка и т. д., позволяют хорошо контролировать риск.
Легко проверяется и оптимизируется в реальном времени, логика стратегии проста и понятна.
Основные риски этой стратегии:
При рыночных колебаниях легко возникают стоп-слова. Можно соответствующим образом скорректировать параметры оценки первого сигнала, чтобы обеспечить качество сигнала.
Встреча с тремя сверхмощными K-линиями имеет меньшую вероятность, возможно, меньше шансов на открытие позиции. Параметры могут быть соответствующим образом снижены, но необходимо взвесить качество сигнала.
Нерациональное поведение, вызванное внезапными событиями, может привести к значительным потерям, превышающим пределы стоп-дальности. Это требует дополнительного контроля максимальных потерь.
При осуществлении двусторонних сделок следует обратить внимание на управление средствами. Неравномерное распределение средств может привести к тому, что счета будут только убыточными.
Эта стратегия может быть улучшена в следующих аспектах:
Оптимизация логики суждения первого сигнала, повышение качества сигнала. Можно рассмотреть возможность добавления дополнительных факторов, таких как изменение объема торговли, волатильность и т. д.
Оптимизируйте критерии стоп-стоп-убытков. Параметры могут быть скорректированы в зависимости от различных рынков, чтобы сделать убытки более разумными. Стоп-расстояние также может быть настроено на динамический стоп.
Добавление дополнительных модулей управления рисками. Например, максимальный однодневный убыток, максимальный последовательный убыток и т. Д.
Оптимизируйте соотношение использования средств. Сделайте распределение средств в многомерных сделках более рациональным, чтобы предотвратить простой доход.
Оптимизация обратной связи с использованием различных комбинаций параметров для различных торговых видов, повышение адаптивности.
Эта стратегия является более устойчивой двусторонней компенсационной стратегией. Она имеет высокое качество сигнала и определенную способность контролировать риск.
/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="GAVAD", shorttitle="GAVAD", overlay=false, initial_capital=36000)
////////////////////////////////////////////////////////
// //
// //
// GAVAD % //
// //
// //
////////////////////////////////////////////////////////
Sinal = input(6, title="Sinal", type=input.integer, minval=1, maxval=150)
//Objetivo = input(6, title="Objetivo", type=input.integer, minval=1, maxval=100)
Multip = input(10000, title="Sinal", type=input.integer, minval=1, maxval=100000)
//GavadEntrada1 = (close - low [1])/close[1]
//plot(GavadEntrada1, style=plot.style_line, linewidth=3, color=color.yellow)
//sombra
//DownOL = (low - open ) / open * -10000
//plot(DownOL, style=plot.style_area, linewidth=3, color=color.silver)
// imprime o GAVAD
GavadEntrada = (close - close [1])/close[1] * Multip
plot(GavadEntrada, style=plot.style_histogram, linewidth=3, color=color.purple)
//linha do Sinal
plot(Sinal, style=plot.style_line, linewidth=1, color=color.yellow)
//linha do Objetivo
//plot(Objetivo, style=plot.style_line, linewidth=1, color=color.white)
Fura1 = GavadEntrada [0] >= Sinal
Fura2 = GavadEntrada [1] >= Sinal
Alert = Fura1
plotshape(Alert, style=shape.circle, location = location.top, color= color.yellow)
SinalON = Fura1 and Fura2
plotshape(SinalON, style=shape.circle, location = location.bottom, color= color.green)
////////////////////////////////////////////////////////
// //
// //
// CONDIÇÕES DE OPERACAO //
// //
// //
////////////////////////////////////////////////////////
Sell_Forte2 = SinalON
//plotshape(Sell_Forte2, style=shape.xcross, color=color.yellow, location=location.bottom)
//Call_Forte2 = SinalON
//plotshape(Call_Forte2, style=shape.xcross, color=color.yellow, location=location.top)
////////////////////////////////////////////////////////
// //
// //
// CALENDARIO //
// //
// //
////////////////////////////////////////////////////////
//052)
// trading view solicita que se ja informado data para gerar backtest a partir de tal data
//começa backtest do trading sistem em qual data ?
ano = input(2021, minval=1, title="Ano")
mes = input(1, minval=1, maxval=12, title="Mes")
dia = input(1, minval=1, maxval=30, title="Dia")
hora = input(0, minval=1, maxval=23, title="hora")
minuto = input(0, minval=1, maxval=59, title="minuto")
horaabertura = input(10, minval=1, maxval=23, title="hora Inicio Operacao Robo")
minutoabertura = input(40, minval=1, maxval=59, title="Minuto Encerra Tudo")
horaencerra = input(17, minval=1, maxval=23, title="hora Fechamento")
minutoencerra = input(50, minval=1, maxval=59, title="Minuto Encerra Novas Operacoes")
minutofinaliza = input(50, minval=1, maxval=59, title="Minuto Encerra Tudo")
//valida se o dia de hoje é posterior ao dia informado acima
Validadia = year >= ano and month >= mes and dayofmonth >= dia
//cria horario de abertura de negociaçao, considerar default 10 hs, pois os indicadores ja estarão corrigidos
abreloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaabertura
//and minute >= minutoabertura)
//cria horario de fechamento de todas as negociaçoes, considerar default 17:00 hs
//nenhuma ordem pode ser aberta depois dessa data e as abertas devem ser fechadas
fechaloja = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutoencerra)
fechaloja2 = year >= ano and month >= mes and dayofmonth >= dia and hour >= horaencerra
//and minute >= minutofinaliza)
//valida horario de negociação, pra liberar as operacoes.
lojaaberta = abreloja == true and fechaloja == false and fechaloja2 == false
////////////////////////////////////////////////////////
// //
// //
// GERENCIAMENTO DE RISCO //
// //
// //
////////////////////////////////////////////////////////
//seta meta mensal
meta = input(150000, "Meta de Lucro")
Contratos= input(5, "Contratos")
//seta tamanho do lote (ordem inicial-unica)
tamanhodolote = Contratos
//seta stop gain final em pontos (metade da barra anterior)
//gaintotal = input(30, "Gain")
gaintotal = input(3, "Gain")
//seta stop loss final em pontos
lossmaximo = input(8, "Loss")
//lossmaximo = (open- close)*100
////////////////////////////////////////////////////////
// //
// Checkbox //
// //
////////////////////////////////////////////////////////
//ativacomprasretorno = input(title="Ativar Compras Retorno", type=input.bool , defval=true)
//ativavendasretorno = input(title="Ativar Vendas Retorno", type=input.bool , defval=true)
////////////////////////////////////////////////////////
// //
// //
// COMPRA E VENDA //
// //
// //
////////////////////////////////////////////////////////
Tradenumber = strategy.closedtrades + 1
Batemeta = strategy.netprofit < meta
//COMPRA RETORNO
//longcondition2 = Validadia and Call_Forte2 and Batemeta
//strategy.entry("Comprar", strategy.long, tamanhodolote, when=longcondition2, comment="[Oper=" + tostring(Tradenumber) + "]win=" + tostring(strategy.wintrades) + " | Loss=" + tostring(strategy.losstrades))
//strategy.exit("Saida Compra", "Comprar", profit=gaintotal, loss=lossmaximo)
//if (CruzamentoFechaCallGG)
//strategy.close(id="Comprar")
//if (EscapeFechaCall)
// strategy.close(id="Comprar")
//plotchar(longcondition2, char="C", location=location.bottom, color=color.lime, transp=0)
//alertcondition(longcondition2, "Comprar", "Compra Rápida!")
//VENDA RETORNO
Shortcondition2 = Validadia and Sell_Forte2 and Batemeta
strategy.entry("Vender", strategy.short, tamanhodolote, when=Shortcondition2)
strategy.exit("Fecha Venda", "Vender", profit=gaintotal, loss=lossmaximo)
//if (CruzamentoFechaSellGG)
// strategy.close(id="Vender")
//if (EscapeFechaSell)
// strategy.close(id="Comprar")
//plotchar(CruzamentoFechaSellGG, char="Y", location=location.top, color=color.lime, transp=0)
//plotchar(longcondition2, char="S", location=location.bottom, color=color.lime, transp=0)
//alertcondition(longcondition2, "Vender", "Venda Rápida!")
//fim do codigo