La estrategia se basa en la forma en que la línea K aparece en el mismo nivel de alto y bajo. Cuando aparece la forma de doble fondo o doble cima de la línea K durante una semana, como condición de activación de la señal de negociación.
La lógica de la transacción es la siguiente:
juzgar que el precio máximo de la línea K actual o de la línea K anterior es igual al precio máximo de las líneas K anteriores
Juzgar que el precio mínimo de la línea K actual o de la línea K anterior es igual al precio mínimo de las dos líneas K anteriores
Cuando surge la forma de doble fondo, se hace más cuando el precio se rompe el punto bajo
Cuando aparece la forma de la copa doble, cuando el precio se rompe en el punto más alto, queda vacío
El punto de parada se establece como cerca del punto de ruptura y el punto de parada es el valor del indicador ATR multiplicado por el factor
La estrategia trata de aprovechar las oportunidades de ejecución de la tendencia después de que el precio rompa el punto más bajo de su nivel. El riesgo se controla con una estrategia de parada de pérdidas.
El mismo nivel de alta y baja es fácil de identificar, la señal de ruptura es clara.
ATR para detener el seguimiento dinámico de tendencias
Las reglas son simples, claras y los riesgos controlables
Formación de niveles más altos y más bajos es menos común
El punto de parada está demasiado cerca y existe el riesgo de que se detenga
Necesidad de prestar atención a la configuración de los parámetros ATR
La estrategia se utiliza para el comercio de tendencias mediante la captura de oportunidades de ruptura de pares altos y bajos. Sin embargo, se debe tener en cuenta la configuración de la estrategia de stop loss y la frecuencia de la negociación.
/*backtest
start: 2023-09-06 00:00:00
end: 2023-09-13 00:00:00
period: 10m
basePeriod: 1m
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/
// © cherepanovvsb
//@version=5
strategy("SHL", overlay=true, margin_long=100, margin_short=100,initial_capital=100,default_qty_type = strategy.cash,default_qty_value =40,commission_type = strategy.commission.percent,commission_value =0.04,currency="EUR", process_orders_on_close=true)
atr = input.int(title="ATR length for abnormal candles", defval=5)
plotshape(low == low[1], style=shape.triangleup, location=location.belowbar, color=color.blue, title="1 Setup")
plotshape(high==high[1], style=shape.triangledown, location=location.abovebar, color=color.blue, title="1 Setup")
plotshape(low == low[1] and low[1]==low[2], style=shape.triangleup, location=location.belowbar, color=color.red, title="Triple Setup")
plotshape(low==high[1] or low==high[2] or low==high[3] or low==high[4] or low==high[5] or low==high[6], style=shape.triangleup, location=location.belowbar, color=color.green, title="Mirror Setup")
plotshape(high==low[1] or high==low[2] or high==low[3] or high==low[4] or high==low[5] or high==low[6], style=shape.triangledown, location=location.abovebar, color=color.green, title="Mirror Setup")
barcolor(high-low>2*ta.atr(atr)? color.yellow:na)
ATRlenght = input.int(title="ATR length for take profit", defval=14, group="Strategy Settings")
rewardMultiplier= input.int(title="ATR multiplier", defval=5, group="Strategy Settings")
// Get ATR
atr1 = ta.atr(ATRlenght)
validlow = low[1] == low[2] and not na(atr1)
validhigh = high[1]==high[2] and not na(atr1)
validlong = validlow and strategy.position_size == 0 and low[1]<low
validshort = validhigh and strategy.position_size == 0 and high[1]>high
// Calculate Entrance, SL/TP
longStopPrice = low[1]-syminfo.mintick
longStopDistance = close - longStopPrice
longTargetPrice = close + (longStopDistance * rewardMultiplier)
shortStopPrice = high[1]+syminfo.mintick
shortStopDistance = shortStopPrice - close
shortTargetPrice = close - (shortStopDistance * rewardMultiplier)
var tradeStopPrice = 0.0
var tradeTargetPrice = 0.0
if validlong
tradeStopPrice := longStopPrice
tradeTargetPrice := longTargetPrice
if validshort
tradeStopPrice := shortStopPrice
tradeTargetPrice := shortTargetPrice
strategy.entry ("Long", strategy.long,1, when=validlong)
strategy.entry ("Short", strategy.short,1, when=validshort)
strategy.exit(id="Long Exit", from_entry="Long", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size > 0)
strategy.exit(id="Short Exit", from_entry="Short", limit=tradeTargetPrice, stop=tradeStopPrice, when=strategy.position_size < 0)
plot(strategy.position_size != 0 or validlong or validshort ? tradeStopPrice : na, title="Trade Stop Price", color=color.red, style=plot.style_linebr, transp=0)
plot(strategy.position_size != 0 or validlong or validshort ? tradeTargetPrice : na, title="Trade Target Price", color=color.green, style=plot.style_linebr, transp=0)