Esta estrategia está basada en el índice STOCH, diseñado para ser un sistema de comercio automático sencillo. La estrategia es adecuada para mercados como divisas, índices de acciones, commodities, y también se puede ampliar a los mercados de acciones y criptomonedas.
La estrategia utiliza el indicador STOCH para identificar el estado de sobreventa y sobreventa, en combinación con el punto PIVOT para establecer la posición de parada y pérdida, para lograr el seguimiento de la tendencia. Cuando el indicador STOCH muestra sobreventa y sobreventa, realice más operaciones de corto plazo. El punto de parada está ubicado cerca del punto PIVOT del día, lo que permite controlar el riesgo de manera efectiva.
La estrategia utiliza la línea rápida%K y la línea lenta%D del indicador STOCH para realizar el forcado de oro y el forcado muerto. La lógica específica es que se realice la operación de más cuando la línea%K rompe de abajo hacia arriba la línea%D; cuando la línea%K rompe de arriba hacia abajo la línea%D, se realiza la operación de menos.
Para controlar el riesgo, la posición larga hace un punto de parada de pérdidas más cerca del punto PIVOT más bajo del día, y la posición vacía hace un punto de parada de pérdidas más cerca del punto PIVOT más alto del día, para bloquear el riesgo de manera efectiva.
Parte de la lógica del stop-loss consiste en cerrar el 50% de la posición cuando se alcanza un determinado nivel de ganancias después de la apertura de la posición. Esto optimiza la eficiencia del uso de los fondos.
En resumen, la estrategia en general es el punto exacto en el que Capture está sobrecomprando; Control en control de riesgos; Optimize en la eficiencia del uso de los fondos. Se puede decir que es una combinación orgánica de Capture, Control y Optimize.
El indicador STOCH permite capturar de manera efectiva el fenómeno de sobreventa y sobrecompra, y el punto PIVOT permite controlar el riesgo, lo que permite controlar completamente el riesgo de la operación.
El mecanismo de suspensión parcial optimiza la eficiencia del uso de los fondos. El método de cierre parcial asegura una parte de los beneficios y mantiene un margen de beneficio posterior.
Los parámetros de la estrategia se pueden personalizar, y el comerciante puede ajustar los parámetros de acuerdo con las preferencias de mercado y riesgo, lo que permite una aplicación flexible de la estrategia.
La lógica de la estrategia es muy simple y clara, fácil de entender y dominar, adecuada para diferentes operadores. El código es intuitivo y fácil de leer, fácil de modificar y mantener.
Como estrategia de seguimiento de tendencias, es fácil quedar atrapado en situaciones de crisis y no obtener beneficios.
El índice STOCH puede generar señales erróneas, lo que provoca un comportamiento de negociación innecesario. Se debe filtrar adecuadamente las señales para evitar operaciones inútiles.
El punto de parada está cerca del eje del día, y puede estar demasiado cerca después de la reajuste de la ruptura, por lo que debe ampliarse la distancia de parada adecuadamente.
Algunos parámetros de la estrategia, como la duración del período, necesitan ser ajustados según los diferentes mercados, de lo contrario, afectarán el rendimiento de la estrategia.
La retroalimentación se basa solo en datos históricos y no garantiza el rendimiento futuro. El disco real puede verse afectado por factores más incontrolables.
El sistema de transacciones automáticas debe garantizar la estabilidad del servidor y evitar que los problemas de conexión impidan la operación normal.
Se puede introducir un filtro de tendencia para evitar el comercio a ciegas cuando no se conoce la tendencia. Por ejemplo, se puede agregar el indicador MA para determinar la dirección de la tendencia.
Se puede agregar monitoreo de volumen de transacciones, como la liberación, la liberación en blanco, etc., para filtrar brechas falsas.
Se pueden ajustar los parámetros según la variedad y el ciclo para optimizar el rendimiento de la estrategia. Por ejemplo, se pueden ajustar los parámetros de STOCH.
Se puede considerar la incorporación de algoritmos de aprendizaje automático, el uso de modelos de entrenamiento de grandes datos, la optimización automática de los parámetros.
Se puede configurar el índice de pérdidas y ganancias para introducir un control de riesgos y evitar que se produzcan grandes pérdidas.
Se pueden agregar más condiciones para filtrar el momento de entrada y mejorar la tasa de éxito de la estrategia. Por ejemplo, la introducción del modelo básico de acciones.
La estrategia en su conjunto utiliza un método de seguimiento de tendencias más simple e intuitivo para identificar el estado de sobreventa y sobreventa con el indicador STOCH y agregar el PIVOT Stop Loss para controlar el riesgo, al tiempo que introduce paradas parciales para optimizar la eficiencia de los fondos. Diseñada a partir de los tres niveles de Captura, Control y Optimizar, forma un sistema de comercio automático más completo. La lógica de la estrategia es fácil de entender, los parámetros se pueden personalizar y se pueden usar para diferentes operadores.
/*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)