Estrategia de stop-profit y stop-loss de saw-through basada en media móvil y media móvil


Fecha de creación: 2023-12-21 12:26:18 Última modificación: 2023-12-21 12:26:18
Copiar: 0 Número de Visitas: 625
1
Seguir
1623
Seguidores

Estrategia de stop-profit y stop-loss de saw-through basada en media móvil y media móvil

Descripción general

Esta estrategia se basa en la línea media y la media móvil para abrir posiciones y establecer paradas y pérdidas con el método de penetración. Sus principales características son:

  1. Filtración de la ciudad con un sistema de medianería
  2. La adopción de un Stop Loss móvil para la gestión dinámica de fondos
  3. Se puede configurar un filtro de posición para evitar la apertura unilateral de posiciones

Principio de estrategia

La estrategia tiene cuatro partes principales:

  1. Sistema de línea uniforme

El uso de la cruz dorada y el tenedor muerto de la línea media para juzgar la tendencia y filtrar el mercado de la oscilación.

  1. Detención de pérdidas móviles

El uso de un determinado porcentaje de stop-loss móvil para bloquear ganancias y controlar el riesgo, permite la gestión dinámica de los fondos.

  1. Filtrado de posiciones

Se puede configurar si se puede activar el filtro de posición. Si la posición anterior es múltiple, la siguiente señal debe ser nula para abrir la posición, evitando la posesión unilateral.

  1. Cancelación de ATR

Utilice el ATR para limitar el rango máximo de pérdidas y evitar pérdidas excesivas.

Concretamente, la estrategia calcula primero la línea media y hace más cuando aparece un cruce de oro en la línea media, y hace un vacío en la horquilla. Después de la entrada, establece un stop y una línea de parada móviles en cierta proporción. Si el precio toca la línea de parada, se detiene; si toca la línea de parada o supera el rango de parada ATR, se detiene.

Ventajas estratégicas

Las principales ventajas de esta estrategia son:

  1. Fuerte configuración

Muchos de los parámetros de la estrategia son configurables y los usuarios pueden ajustarlos según su estilo de negociación.

  1. La buena gestión de los fondos

El uso de paradas móviles y paradas ATR permite un control efectivo de la amplitud de las paradas individuales y una excelente administración de fondos.

  1. Apto para el mercado de tendencias

Las estrategias de línea media se adaptan a mercados con tendencias más fuertes y pueden filtrar las oscilaciones.

Riesgos y contramedidas

La estrategia también presenta algunos riesgos, principalmente:

  1. El error de juicio de las tendencias

La línea media por sí misma no es perfecta para juzgar situaciones complejas, y puede haber casos de error de juicio. En este caso, se debe ajustar adecuadamente los parámetros de la línea media o combinar con otros indicadores para juzgar.

  1. El bloqueo es demasiado radical

El stop loss móvil puede ser negado en el temblor, y se debe configurar el rango de stop loss en combinación con el parámetro ATR.

  1. Riesgo de abrir una posición unilateral

La apertura de filtros de posiciones puede tener un efecto en la frecuencia de las operaciones, y el mantenimiento de posiciones unilaterales durante mucho tiempo puede conllevar riesgos adicionales.

Dirección de optimización de la estrategia

Las principales direcciones de optimización de esta estrategia son:

  1. Optimización de parámetros

Ajuste los parámetros como el promedio de la línea, el parámetro ATR y el índice de stop loss para optimizar el efecto de la estrategia.

  1. Aumentar las cifras

Aumentar el CMF, OBV y otros indicadores para determinar el flujo de capital y evitar pérdidas excesivas.

  1. Combinar otras estrategias

La combinación de estrategias como la ruptura y el seguimiento después de la estabilización de la tendencia puede tener un mejor efecto.

Resumir

En general, esta estrategia permite una gestión dinámica de fondos basada en la tendencia a través de filtros uniformes y paradas de pérdidas móviles. Es altamente configurable y razonable para que los inversores la utilicen según su estilo. Como una estrategia de tipo universal y cuantitativa, tiene mucho espacio para optimización y merece un estudio profundo.

Código Fuente de la Estrategia
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-11 00:00:00
period: 1h
basePeriod: 15m
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/
// © MGULHANN

//@version=5

//İchimoku Leading Span 2 Hesaplaması ve Girişleri
strategy("Stairs Gain Strategy - MG", overlay=true, margin_long=100, margin_short=100)
laggingSpan2Periods = input.int(52, minval=1, title="Leading Periot")
displacement = input.int(1, minval=1, title="Displacement")
donchian(len) => math.avg(ta.lowest(len), ta.highest(len))
leadLine2 = donchian(laggingSpan2Periods)
p2 = plot(leadLine2, offset = displacement - 1, color=#EF9A9A,
	 title="Leading Span B")

// İşlem Tekrarını Filtrele	 
filtreUygula = input.bool(true,title="Pozisyon Sıra Filtresi Uygula")

//Kar Al / Zarar Durdur Seviyeleri Girişleri
zararDurdurmaYuzde = input.float(1.0, title='Zarar Durdurma %', step=0.01) / 100
karAlmaYuzde = input.float(2.0, title='Kar Alma %', step=0.01) / 100

//ATR Hesaplaması
atrCarpani = input.float(0.3, title="ATR Çarpanı", step= 0.01)
atrDegeri = ta.atr(14) * atrCarpani

//ATR Değer Girişleri
atrbuyukdeger = input.float(0.01, title="ATR Üst Limit", step=0.01)
atrkucukdeger = input.float(0.06, title="ATR Alt Limit", step=0.01)

//Buy ve Sell Şartları
buycross =   ta.crossover(close,leadLine2[displacement-1]) ? atrDegeri > atrbuyukdeger : strategy.position_size == 0
sellcross = ta.crossover(leadLine2[displacement-1],close) ? atrDegeri < atrkucukdeger : strategy.position_size == 0

//KONTROL
var sonPozisyonYonu = 0
//Son kapanan pozisyon long ise degiskenin degerini 1 olarak ata
if strategy.position_size[1] > 0 and strategy.position_size == 0
    sonPozisyonYonu := 1

//Son kapanan pozisyon short ise degiskenin degerini -1 olarak ata
if strategy.position_size[1] < 0 and strategy.position_size == 0
    sonPozisyonYonu := -1
    
//eger filtre uygulama seçiliyse ve son pozisyon yönü long ise 'longFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun long olmasını engelle
longFiltreSonuc = filtreUygula ? sonPozisyonYonu == 1 ? false : true : true

//eger filtre uygulama seçiliyse ve son pozisyon yönü short ise 'shortFiltreSonuc' degiskenine false degeri ata ve bir sonraki pozisyonun short olmasını engelle
shortFiltreSonuc = filtreUygula ? sonPozisyonYonu == -1 ? false : true : true

//LONG GİRİŞ
strategy.entry("Long", strategy.long, when=buycross and longFiltreSonuc)
longKarAl = strategy.position_avg_price * (1 + karAlmaYuzde)
longZararDurdur = strategy.position_avg_price * (1 - zararDurdurmaYuzde)
strategy.exit("Long Exit","Long",limit=longKarAl, stop=longZararDurdur)

//SHORT GİRİŞ
strategy.entry("Short", strategy.short, when=sellcross and shortFiltreSonuc)
shortKarAl = strategy.position_avg_price * (1 - karAlmaYuzde)
shortZararDurdur = strategy.position_avg_price * (1 + zararDurdurmaYuzde)
strategy.exit("Short Exit","Short",limit=shortKarAl, stop=shortZararDurdur)

//Kar Al ve Zarar Durdur Seviyelerinin Grafikte İşaretlenmesi
plot(strategy.position_size != 0 ? strategy.position_avg_price : na, color=color.navy, linewidth=2, style=plot.style_linebr, title="İşleme Giriş Seviyesi")
plot(strategy.position_size > 0 ? longKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Long Kar Alım Seviyesi")
plot(strategy.position_size > 0 ? longZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Long Zarar Durdurma Seviyesi")
plot(strategy.position_size < 0 ? shortKarAl : na, color=color.green, linewidth=2, style=plot.style_linebr, title="Short Kar Alım Seviyesi")
plot(strategy.position_size < 0 ? shortZararDurdur : na, color=color.red, linewidth=2, style=plot.style_linebr, title="Short Zarar Durdurma Seviyesi")

//plotshape(buycross,size=size.small,style=shape.labelup,location=location.belowbar,color=color.green,text="Al", offset = displacement-1, textcolor=color.white)
//plotshape(sellcross,size=size.small,style=shape.labeldown,location=location.abovebar,color=color.red,text="Sat", offset = displacement-1, textcolor=color.white)