Это стратегия, которая занимает позиции в обоих направлениях, используя сигналы о сильных прорывах в обоих направлениях. Она выберет направление для открытия позиций после того, как две последовательные сильные свечи появятся в том же направлении, а затем установит стоп-прибыль и стоп-затраты для управления рисками.
Эта стратегия оценивает направление рынка на основе сигналов двух последовательных сильных свечей. В частности, она рассчитывает процент увеличения/уменьшения каждой свечи. Когда процент увеличения/уменьшения двух последовательных свечей превышает порог, установленный пользователем (например, 6%), она определяет, что направление сильное, и открывает длинную/короткую позицию в третьей свечи.
Долгое условие: цены закрытия двух последовательных свечников повышаются более чем на 6% по сравнению с предыдущей ценой закрытия
Короткое условие: цены закрытия двух последовательных свечей падают более чем на 6% по сравнению с предыдущей ценой закрытия
После открытия позиций он будет устанавливать стоп-прибыль и стоп-затраты, чтобы контролировать риски.
Эта стратегия также имеет некоторые вспомогательные функции для контроля рисков, такие как разрешение открывать позиции только в течение определенных периодов времени, установление максимальной суммы убытков и т.д.
Это относительно стабильная и надежная двусторонняя стратегия торговли.
Двусторонняя торговля может приносить прибыль, когда рынок поднимается и опускается, улучшая стабильность.
Суждение о тренде на основе двух сильных сигналов может эффективно отфильтровать шум и улучшить качество открытых позиций.
Настройки стоп-прибыли и стоп-потери разумны, что полезно для контроля риска и ограничения потерь.
Вспомогательные функции являются всеобъемлющими, такие как контроль времени, контроль максимальных потерь и т. Д. Они могут очень хорошо контролировать риски.
Эта стратегия легко проверить и оптимизировать, поскольку логика проста и ясна.
Основными рисками этой стратегии являются:
Мы можем корректировать параметр первого сигнала, чтобы обеспечить качество сигнала.
Вероятность трех последовательных сверхсильных свечей относительно мала, что может привести к меньшему количеству возможностей для открытия позиций.
Ирациональное поведение, вызванное внезапными событиями, может привести к огромным потерям, превышающим расстояние остановки.
Для осуществления двусторонней торговли необходимо обратить внимание на проблемы распределения средств, иначе это может привести к получению прибыли без остановки потерь.
Эта стратегия может быть дополнительно оптимизирована в следующих аспектах:
Оптимизировать логику первого суждения о сигнале для улучшения качества сигнала.
Оптимизировать стандарты стоп-прибыли и стоп-потери. Корректировать параметры на основе различных рынков, чтобы сделать соотношение риск-вознаграждение более разумным. Расстояние стоп-потери также может быть установлено как динамический стоп-потеря.
Добавьте дополнительные модули управления рисками, например, максимальный ежедневный убыток, максимальный последовательный убыток и т. д., чтобы обеспечить эффективное и безопасное использование средств.
Оптимизировать соотношение распределения средств, чтобы сделать распределение капитала двойной торговли более разумным, предотвращая получение прибыли без остановки потерь.
Установка различных комбинаций параметров для оптимизации обратного тестирования в отношении различных торговых сортов, чтобы улучшить адаптивность.
Эта стратегия является относительно надежной двусторонней стратегией позиций. Она имеет высокое качество сигнала и определенные возможности контроля рисков. Она также имеет большое пространство для оптимизации для дальнейшего улучшения стабильности прибыли. Стратегия подходит для средне-долгосрочных трендовых рынков, а также может использовать возможности во время консолидации рынка.
/*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