Esta estratégia utiliza indicadores técnicos de ciclo cruzado para identificar a direção da tendência, combinando filtragem de tendência e filtragem de flutuação, para realizar transações de seguimento de tendência de baixo risco.
Use a quebra de alta e baixa para avaliar os sinais de compra e venda. Olhe para baixo quando o preço ultrapassa a alta de 7 ciclos e olhe para cima quando ultrapassa a baixa de 7 ciclos.
O indicador Trendflex determina a direção da tendência principal. O indicador combina a técnica de dupla suavização para identificar efetivamente o período médio da tendência. Valores acima de 1 indicam uma tendência ascendente e valores abaixo de -1 indicam uma tendência descendente.
Os movimentos das Bollinger Bands levam a identificar oscilações. Quando o preço está próximo da faixa, evite fazer mais curto-circuito.
A utilização de stop loss móvel e de stop-loss móvel para gerir posições.
Os indicadores inter-periódicos, combinados com a tecnologia de dupla-escalonamento, permitem identificar a direção da tendência e evitar a perturbação de mercados de turbulência.
Ao mesmo tempo, leva em consideração a direção da tendência e as leis de oscilação, tornando os sinais de negociação mais confiáveis.
O Stop Loss Stop é uma configuração razoável para bloquear o lucro e evitar a expansão dos prejuízos.
A estratégia é simples, fácil de entender e de implementar.
O sinal de ruptura pode apresentar falsas rupturas, resultando em transações erradas. Pode-se considerar a adição de mais condições de interferência.
Os parâmetros de ciclo fixo não podem se adaptar às mudanças do mercado, e os parâmetros de otimização dinâmica podem ser considerados.
A falta de paradas de preços não impede os enormes prejuízos causados por situações extremas.
O ponto de parada e de perda é fixo e não pode ser ajustado de acordo com as flutuações do mercado.
Pode-se considerar a inclusão de mais indicadores de discernimento de tendências, formando um portfólio de estratégias para melhorar a precisão de discernimento.
A adição de módulos de reconhecimento de tremores, suspensão de transações em caso de tremores intensos e redução de riscos.
Introdução de algoritmos de aprendizagem de máquina para a otimização dinâmica dos parâmetros.
Adicionando o módulo de parada de preço, você pode parar a perda e sair quando a perda atingir um determinado desvalorização.
O Stop Loss Ratio é calculado com base na flutuação do mercado e permite o ajuste inteligente do Stop Loss.
A estratégia é bastante robusta e confiável em geral, mas também há espaço para melhorias. A ideia central é determinar a direção da tendência entre os períodos, em combinação com os indicadores de força da tendência e os indicadores de flutuação para filtrar, resultando em um sinal de alta qualidade. A estratégia é simples e prática, muito adequada para o acompanhamento de tendências de linha longa.
/*backtest
start: 2023-08-27 00:00:00
end: 2023-09-26 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Eltrut", shorttitle="Eltrut Strat", overlay=true, pyramiding=0, default_qty_type= strategy.percent_of_equity,calc_on_order_fills=false, slippage=25,commission_type=strategy.commission.percent,commission_value=0.075)
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
// R E F L E X / T R E N D F L E X
f_supersmoother(_src,_len)=>
pi = 2 * asin(1)
_a = exp(-sqrt(2) * pi / _len)
_c2 = 2 * _a * cos(sqrt(2) * pi / _len)
_c3 = -_a * _a
_c1 = 1 - _c2 - _c3
_out = 0.0
_out := _c1 * _src + _c2 * nz(_out[1],nz(_src[1],_src)) + _c3 * nz(_out[2],nz(_src[2],nz(_src[1],_src)))
f_IQIFM(_src1,_max)=>
_src = _src1 < 0.001 ? _src1 * 10000 : _src1
_imult = 0.635, _qmult = 0.338 , _inphase = 0.0, _quad = 0.0
_re = 0.0, _im = 0.0, _deltaphase = 0.0, _instper = 0.0, _per = 0.0, _v4 = 0.0
_v1 = _src - nz(_src[7])
_inphase := 1.25 * (nz(_v1[4]) - _imult * _v1[2]) + _imult * nz(_inphase[3])
_quad := _v1[2] - _qmult * _v1 + _qmult * nz(_quad[2])
_re := 0.2 * (_inphase * _inphase[1] + _quad * _quad[1]) + 0.8 * nz(_re[1])
_im := 0.2 * (_inphase * _quad[1] - _inphase[1] * _quad) + 0.8 * nz(_im[1])
if _re != 0.0
_deltaphase := atan(_im / _re)
for i = 0 to _max
_v4 := _v4 + _deltaphase[i]
if _v4 > 4 * asin(1) and _instper == 0.0
_instper := i
if _instper == 0.0
_instper := nz(_instper[1])
_per := 0.25 * _instper + 0.75 * nz(_per[1])
_per
f_flex(_src1, _fixed_len, _reflex) =>
_src = _src1
_len = _fixed_len
_ss1 = f_supersmoother(_src, _len)
_ss = _ss1
_slope = (_ss[_len] - _ss) / _len
_sum = 0.0
for _i = 1 to _len
_c1 = _reflex ? _ss + _i * _slope - _ss[_i] : _ss - _ss[_i]
_sum := _sum + _c1
_sum := _sum / _len
_ms = 0.0
_ms := 0.04 * pow(_sum,2) + 0.96 * nz(_ms[1])
_flex1 = _ms != 0 ? _sum / sqrt(nz(_ms)) : 0.0
_flex = _flex1
_flex
rflx = f_flex(close, 20, true)
trndflx = f_flex(close, 20, false)
// S I G N A L
hi7 = highest(7)
lo7 = lowest(7)
long_cond = crossunder(close, lo7[1])
short_cond = crossover(close, hi7[1])
// F I L T E R S
long_filter1 = trndflx < 1
short_filter1 = trndflx > -1
basis = sma(close, 35)
dev = 3 * stdev(close, 35)
long_filter2 = close > basis - dev
short_filter2 = close < basis + dev
// S T R A T E G Y
long = long_cond and long_filter1 and long_filter2
short = short_cond and short_filter1 and short_filter2
if( true)
strategy.entry("Long", strategy.long, when = long)
strategy.entry("Long", strategy.long, when = short)
// User Options to Change Inputs (%)
stopPer = input(3, title='Stop Loss %', type=input.float) / 100
takePer = input(9, title='Take Profit %', type=input.float) / 100
// Determine where you've entered and in what direction
longStop = strategy.position_avg_price * (1 - stopPer)
shortStop = strategy.position_avg_price * (1 + stopPer)
shortTake = strategy.position_avg_price * (1 - takePer)
longTake = strategy.position_avg_price * (1 + takePer)
if strategy.position_size > 0
strategy.exit(id="Exit Long", stop=longStop, limit=longTake)
if strategy.position_size < 0
strategy.exit(id="Exit Short", stop=shortStop, limit=shortTake)
// P L O T
plotshape(long, color = #1e90ff, text = "", style=shape.triangleup, location=location.belowbar, size=size.tiny)
plotshape(short, color = #ff69b4, text = "", style=shape.triangledown, location=location.abovebar, size=size.tiny)
alertcondition(long, "Long", "Enter Long")
alertcondition(short, "Short", "Enter S")