La estrategia se basa en la idea de que los puntos de precio de parada y parada a menudo se establecen en precios enteros o niveles de precios clave, que a menudo actúan como puntos de soporte y resistencia. La estrategia identifica estos niveles de precios clave para realizar operaciones de compra o venta cuando los precios se acercan.
La estrategia incluye principalmente las siguientes reglas:
Cuando el precio de cierre está por encima del nivel de precio clave y no ha tocado ese precio en las últimas 10 líneas K, se realiza una operación de compra.
Luego se usa el seguimiento de la escalada para seguir el movimiento de los precios que superan los precios clave. La escalada es de 20 pasos.
La operación de venta es lo contrario a la compra, cuando el precio de cierre está por debajo del nivel de precio clave y no ha tocado ese precio en las últimas 10 líneas K.
La identificación de los niveles clave de precios se hace de la siguiente manera:
La estrategia se basa en la psicología de los precios, donde los precios enteros o los niveles clave suelen ser las posiciones más importantes para las partes que compiten por el espacio, lo que tiene un efecto como señal de negociación. Al mismo tiempo, el seguimiento de la escalada puede seguir la tendencia después de la ruptura de los precios.
La estrategia tiene las siguientes ventajas:
La estrategia también tiene los siguientes riesgos:
Resolución de las mismas:
La estrategia puede ser optimizada en los siguientes aspectos:
Aumentar los criterios para determinar la importancia de los puntos clave y evitar el riesgo de falsas rupturas. Indicadores como el volumen de transacciones.
Parámetros de optimización, en particular, para determinar la longitud de los pasos en las áreas clave de precios, el ciclo de la línea K y otros parámetros. Para que se ajusten mejor a las características de las diferentes variedades.
Optimización de los mecanismos de seguimiento de las pérdidas, como el uso de pérdidas de seguimiento dinámico en lugar de pérdidas de escalada fijas.
El aumento de algoritmos de aprendizaje automático que utilizan datos históricos para determinar la fortaleza y la debilidad de las áreas de precios clave para mejorar la calidad de la señal.
Ampliar la estrategia a través de períodos de tiempo, al mismo tiempo que se evalúa la tendencia en períodos de tiempo más altos y se realiza el seguimiento en períodos de tiempo más bajos.
Esta estrategia se basa en la idea de que los puntos clave de los precios son simples e intuitivos, que utilizan los hábitos de negociación generalizados para formar señales de negociación. Las oportunidades de la estrategia son abundantes, pero se requiere una optimización adicional para tratar las falsas brechas.
/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//Strategy based on the idea that stop loss and take profit are often placed at full price levels or round numbers, whcih acts as resistance and supports levels
//Buy Rules:
//Actual price (close) is above round number.
//Round number level was not touched in previous ten bars (arbitrary value).
//Place a buy and follow the order with a trail step because price can bounce at round number (support) or can go through it.
//Sell Rules are the same of buy rules but inverted.
//
//Need improvement on conditions' logic and round numbers definitions
strategy("dP magnet", overlay=true, pyramiding=0,default_qty_type=strategy.percent_of_equity,default_qty_value=100,currency=currency.USD)
//Round Levels credit to RKchartest
roundLevel50 = input(500, 'Round Level 1, pips')
//roundLevel100 = input(1000, 'Round Level 2, pips')
deviation = input(1000, 'Max distance, pips', minval=0)
rDelimeter = 1/syminfo.mintick
intRoundLevel = close[1] * rDelimeter
intRemainder = intRoundLevel % roundLevel50
toRound = (intRemainder >= roundLevel50/2) ? roundLevel50 : 0
roundLevel = (intRoundLevel - intRemainder + toRound) / rDelimeter
plot(roundLevel, title='Round Level 1', color=black, style=line, transp=0, linewidth=1, trackprice=false)
//intRemainder2 = intRoundLevel % roundLevel100
//toRound2 = (intRemainder2 >= roundLevel100/2) ? roundLevel100 : 0
//roundLevel2 = (intRoundLevel - intRemainder2 + toRound2) / rDelimeter
//plot((abs(roundLevel2 - close) * rDelimeter < deviation) ? roundLevel2 : na, title='Round Level 2', color=black, style=circles, transp=0, linewidth=1, trackprice=true)
// end
//Start of strategy
distToFullNumber=(close-roundLevel) //can be positive or negative number
distPips=input(100,'Distance in pips to full level',minval=10) //user defined: this distance defines when to open an order at market price
TrailS=input(20,'Trail Step points',minval=10) //trail step that follows the order
longCondition = iff(distToFullNumber>0 and abs(distToFullNumber)<=distPips and lowest(low,10)>roundLevel,true,false)
if (longCondition)
strategy.entry("LongMagnet", strategy.long)
strategy.exit("ExitMagnet","LongMagnet",trail_points=TrailS)
shortCondition = iff(distToFullNumber<0 and abs(distToFullNumber)<=distPips and highest(high,10)<roundLevel,true,false)
if (shortCondition)
strategy.entry("ShortMagnet", strategy.short)
strategy.exit("Exit_Magnet","ShortMagnet",trail_points=TrailS)