Esta estrategia diseña un simple sistema de negociación automática basado en el indicador STOCH. Es adecuado para Forex, índices bursátiles, materias primas y se puede extender a las acciones y los mercados criptográficos.
Esta estrategia identifica los estados de sobrecompra y sobreventa utilizando el indicador STOCH combinado con puntos PIVOT para establecer posiciones de stop loss, realizando la tendencia siguiente. Va largo o corto cuando el indicador STOCH muestra señales de sobrecompra o sobreventa. Los puntos de stop loss se establecen cerca de los puntos PIVOT del día para controlar eficazmente los riesgos. Los puntos de take profit parcial se establecen para cerrar posiciones parciales después de cierto nivel de ganancia.
Esta estrategia utiliza el cruce de las líneas %K y %D del indicador STOCH para generar señales largas y cortas. Específicamente, cuando la línea %K cruza por encima de la línea %D, será larga. Cuando la línea %K cruza por debajo de la línea %D, será corta. Esto captura los estados de sobrecompra y sobreventa.
Para controlar los riesgos, el punto de stop loss largo se establece cerca del punto PIVOT más bajo diario y el punto de stop loss corto se establece cerca del punto PIVOT más alto diario.
Para obtener ganancias parciales, cierra el 50% de la posición después de un cierto nivel de ganancia después de abrir la posición.
En resumen, esta estrategia captura los puntos de sobrecompra y sobreventa de manera apropiada; controla los riesgos utilizando stop loss; y optimiza la eficiencia del uso del capital.
El uso del indicador STOCH captura de manera efectiva los estados de sobrecompra y sobreventa.
El mecanismo de toma parcial de ganancias optimiza la eficiencia del uso del capital.
Los parámetros personalizables permiten una flexibilidad basada en las condiciones del mercado y la preferencia de riesgo.
Lógica simple y clara, fácil de entender y dominar para todos los comerciantes.
Como estrategia de tendencia, puede quedar atrapada en mercados de rango y no obtener ganancias.
El STOCH puede generar señales falsas, causando operaciones innecesarias.
Las pérdidas de parada cerca de los puntos de pivote pueden estar demasiado cerca después de las rupturas.
Algunos parámetros, como el período, pueden necesitar ajustes para diferentes mercados, de lo contrario afectan al rendimiento de la estrategia.
La prueba de retroceso sólo se basa en datos históricos no puede garantizar el rendimiento futuro más factores incontrolables en el comercio en vivo.
Los sistemas de negociación automática requieren conexiones estables para evitar problemas de ejecución de operaciones.
Añadir un filtro de tendencia para evitar el comercio sin tendencias claras, como usar MA para determinar la dirección de la tendencia.
Añadir análisis de volumen para detectar falsas rupturas y evitar trampas. por ejemplo, volumen alcista/bajista.
Ajustar parámetros como las entradas de STOCH basadas en diferentes productos y plazos para optimizar el rendimiento.
Considere algoritmos de aprendizaje automático para entrenar modelos utilizando grandes datos y optimizar parámetros automáticamente.
Establezca la relación de factor de ganancia para introducir el control de riesgos y evitar grandes pérdidas de operaciones.
Añadir más filtros como las condiciones comerciales, los fundamentos para mejorar la tasa de ganancia.
Esta estrategia adopta un enfoque de tendencia simple e intuitivo basado en el indicador STOCH para identificar los puntos de sobrecompra / sobreventa. Con PIVOT stop loss para controlar el riesgo y partial take profit para optimizar la eficiencia del capital. El diseño cubre Capture, Control y Optimize.
/*backtest start: 2022-09-21 00:00:00 end: 2023-09-27 00:00:00 period: 1d basePeriod: 1h 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/ // © Peter_O //@version=4 // strategy(title="TradingView Alerts to MT4 MT5 - Forex, indices, commodities, stocks, crypto", commission_type=strategy.commission.cash_per_contract, commission_value=0.00003, overlay=false, default_qty_value=20000, initial_capital=1000) // // This script was created for educational purposes only. // It is showing how to use Alerts-Straight-From-Strategies and // dynamic variables in TradingView alerts. // And how to auto-execute them in Forex, indices, commodities markets // // (This method will also work with stocks and crypto - anything your // broker is offering via their MT4/MT5 platform). TakeProfitLevel=input(400) TakePartialProfitLevel=input(150) // **** Entries logic **** { periodK = input(13, title="K", minval=1) periodD = input(3, title="D", minval=1) smoothK = input(4, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) plot(k, title="%K", color=color.blue) plot(d, title="%D", color=color.orange) h0 = hline(80) h1 = hline(20) fill(h0, h1, color=color.purple, transp=75) GoLong=crossover(k,d) and k<80 and year>2009 GoShort=crossunder(k,d) and k>20 and year>2009 AlertTest=open>close or open<close or open==close // } End of entries logic // **** Pivot-points and stop-loss logic **** { piv_high = pivothigh(high,1,1) piv_low = pivotlow(low,1,1) var float stoploss_long=low var float stoploss_short=high pl=valuewhen(piv_low,piv_low,0) ph=valuewhen(piv_high,piv_high,0) if GoLong stoploss_long := low<pl ? low : pl if GoShort stoploss_short := high>ph ? high : ph // } End of Pivot-points and stop-loss logic // **** Trade counter and partial closing mechanism **** { var int trade_id=0 if GoLong or GoShort trade_id:=trade_id+1 TakePartialProfitLong = barssince(GoLong)<barssince(GoShort) and crossover(high,(valuewhen(GoLong,close,0)+TakePartialProfitLevel*syminfo.mintick)) TakePartialProfitShort = barssince(GoLong)>barssince(GoShort) and crossunder(low,(valuewhen(GoShort,close,0)-TakePartialProfitLevel*syminfo.mintick)) // } End of Trade counter and partial closing mechanism strategy.entry("Long", strategy.long, when=GoLong) strategy.exit("XPartLong", from_entry="Long", qty_percent=50, profit=TakePartialProfitLevel) strategy.exit("XLong", from_entry="Long", stop=stoploss_long, profit=TakeProfitLevel) strategy.entry("Short", strategy.short, when=GoShort) strategy.exit("XPartShort", from_entry="Short", qty_percent=50, profit=TakePartialProfitLevel) strategy.exit("XShort", from_entry="Short", stop=stoploss_short, profit=TakeProfitLevel) if GoLong alertsyntax_golong='long slprice=' + tostring(stoploss_long) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel) alert(message=alertsyntax_golong, freq=alert.freq_once_per_bar_close) if GoShort alertsyntax_goshort='short slprice=' + tostring(stoploss_short) + ' tradeid=' + tostring(trade_id) + ' tp=' + tostring(TakeProfitLevel) alert(message=alertsyntax_goshort, freq=alert.freq_once_per_bar_close) if TakePartialProfitLong alertsyntax_closepartlong='closepart tradeid=' + tostring(trade_id) + ' part=0.5' alert(message=alertsyntax_closepartlong, freq=alert.freq_once_per_bar_close) if TakePartialProfitShort alertsyntax_closepartshort='closepart tradeid=' + tostring(trade_id) + ' part=0.5' alert(message=alertsyntax_closepartshort, freq=alert.freq_once_per_bar_close)