Estrategia de trading con stop loss dinámico


Fecha de creación: 2023-09-18 17:20:06 Última modificación: 2023-09-18 17:20:06
Copiar: 0 Número de Visitas: 901
1
Seguir
1617
Seguidores

Descripción general

La estrategia muestra cómo se puede usar la variable dinámica de TradingView para transmitir el precio de parada en las alertas y ejecutar las operaciones en la plataforma MT4/5 a través de TradingConnector. La estrategia utiliza el indicador estocástico para determinar el momento de entrada, establece dinámicamente la resistencia al soporte más reciente como punto de parada y puede detenerse parcialmente.

Principio de estrategia

La línea K y la línea D del indicador estocástico hacen más, la línea D hace vacío. El punto de resistencia de soporte más reciente se calcula como el precio de parada. Después de la entrada, el precio de parada se transmite al broker en tiempo real a través de variables dinámicas.

Análisis de las ventajas

  • El stop loss dinámico permite ajustar el precio de stop loss con precisión
  • La suspensión parcial mejora la eficiencia del uso de fondos
  • Transmisión en tiempo real del precio de parada a la cuenta del broker
  • Determinación del precio de parada cercano al disco real, simulación de realidad virtual

Análisis de riesgos

  • Los indicadores estocásticos están rezagados
  • El efecto de la parálisis parcial es demasiado frecuente
  • Las variables dinámicas tienen diferentes efectos en diferentes marcos de tiempo
  • Se necesita optimizar la proporción de bloqueo parcial

Se puede reducir el ciclo de parámetros de Stochastic, ajustar la proporción de paradas parciales, etc. para controlar el riesgo.

Dirección de optimización

  • Prueba diferentes combinaciones de parámetros estocásticos
  • Optimización de la configuración de proporción de la parte de frenado
  • Prueba diferentes formas de detener el riesgo, como el movimiento de la pérdida.
  • Pruebas en varios mercados y variedades

Resumir

La estrategia muestra cómo se puede utilizar la nueva función de TradingView para ejecutar operaciones de stop loss dinámicas en MT4 / 5. Se puede utilizar como marco básico para la posterior prueba posterior. Todavía se necesitan ajustes optimizados para variedades específicas.

Código Fuente de la Estrategia
/*backtest
start: 2023-08-18 00:00:00
end: 2023-09-17 00:00:00
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// strategy(title="TradingView Alerts to MT4 MT5 Strategy example", commission_type=strategy.commission.cash_per_order, commission_value=0.00003, overlay=false, default_qty_value=100000, initial_capital=1000)
// study(title="TradingView Alerts to MT4 MT5 Strategy example")  //uncomment this line and comment previous one to make it a study producing alerts
//
// This script was created for educational purposes only.
// It is showing how to use dynamic variables in TradingView alerts.
// And how to execute them in Forex, indices and commodities markets
// thanks to www.tradingconnector.com

TakeProfitLevel=input(400)
TakePartialProfitLevel=input(150)

// **** Entries logic **** {
periodK = input(14, 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
GoShort=crossunder(k,d)// and k>20
// } 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]+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)


// alertcondition("Long", when=GoLong, message="long slprice={{stoploss_long}} tradeid={{trade_id}} tp=TakeProfitLevel")
// alertcondition("Short", when=GoShort, message="short slprice={{stoploss_short}} tradeid={{trade_id}} tp=TakeProfitLevel")
// alertcondition("ClosePartLong", when=TakePartialProfitLong, message="closepart tradeit={{trade_id}} part=0.5")
// alertcondition("ClosePartShort", when=TakePartialProfitShort, message="closepart tradeit={{trade_id}} part=0.5")