Estrategia de alto-bajo


Fecha de creación: 2023-09-14 17:53:17 Última modificación: 2023-09-14 17:53:17
Copiar: 0 Número de Visitas: 612
1
Seguir
1617
Seguidores

Principio de estrategia

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:

  1. 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

  2. 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

  3. Cuando surge la forma de doble fondo, se hace más cuando el precio se rompe el punto bajo

  4. Cuando aparece la forma de la copa doble, cuando el precio se rompe en el punto más alto, queda vacío

  5. 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.

Ventajas estratégicas

  • 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

Riesgo estratégico

  • 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

Resumir

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.

Código Fuente de la Estrategia
/*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)