Estrategia de detención de ganancias con dientes de sierra de cruce de piso basada en la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-12-21 12:26:18
Las etiquetas:

img

Resumen general

Esta estrategia abre posiciones basadas en la cruz de oro y la cruz de la muerte de los promedios móviles, y los conjuntos toman ganancias y detienen pérdidas de una manera que cruza el piso.

  1. Utilice el sistema de promedios móviles para filtrar las descargas
  2. Adoptar el movimiento para obtener ganancias y detener pérdidas para una gestión dinámica del capital
  3. Filtración de posición configurable para evitar la apertura unidireccional

Principio de la estrategia

La estrategia consta de cuatro partes:

  1. Sistema de medias móviles

    Utilice la cruz dorada y la cruz muerta de las medias móviles para determinar las tendencias y filtrar los choques.

  2. Mudarse es beneficioso y no perjudicial

    Utilice tomar ganancias y detener pérdidas con un cierto porcentaje para bloquear las ganancias y controlar los riesgos, realizando una gestión dinámica del capital.

  3. Filtración de posición

    Si la posición anterior es larga, la siguiente señal debe ser corta para abrir la posición, evitando mantener unilateralmente.

  4. Pérdida de parada de ATR

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

Específicamente, la estrategia primero calcula el promedio móvil, los largos en la cruz dorada y los cortos en la cruz de la muerte. Después de ingresar, establece las líneas móviles de toma de ganancias y stop loss con un cierto porcentaje. Si el precio toca la línea de toma de ganancias, luego tome ganancias; si toca la línea de stop loss o excede el rango de stop loss ATR, entonces detenga la pérdida.

Ventajas

Las principales ventajas de esta estrategia son las siguientes:

  1. Alta configurabilidad

    Muchos parámetros de la estrategia son configurables para que los usuarios se ajusten en función de sus estilos de negociación.

  2. Una buena gestión del capital

    La adopción de movimientos de toma de ganancias y stop loss y ATR stop loss puede controlar eficazmente la amplitud de una sola stop loss y lograr una excelente gestión de capital.

  3. Adecuado para el mercado de tendencias

    La estrategia de la media móvil en sí misma es más adecuada para mercados con tendencias fuertes para filtrar los choques de manera efectiva.

Riesgos y contramedidas

Esta estrategia también presenta algunos riesgos:

  1. Equivocamiento de la tendencia

    El juicio de las medias móviles en mercados complejos no es perfecto, y pueden ocurrir errores de juicio.

  2. Exceso de pérdidas de parada

    Los parámetros ATR deben combinarse para establecer el rango de stop loss.

  3. Riesgos de apertura unidireccionales

    El hecho de permitir el filtrado de posiciones tendrá cierto impacto en la frecuencia de negociación.

Direcciones de optimización

Las principales direcciones de optimización son:

  1. Optimización de parámetros

    Ajustar el ciclo de promedio móvil, los parámetros ATR, las tasas de toma de ganancias y de stop loss y otros parámetros para optimizar el rendimiento de la estrategia.

  2. Adición de indicadores

    Añadir indicadores como CMF, OBV para juzgar el flujo de capital y evitar el exceso de stop loss.

  3. Combinación con otras estrategias

    Combinar con estrategias de ruptura para seguir las tendencias después de que la tendencia se estabilice para lograr mejores resultados.

Resumen de las actividades

En resumen, a través del filtro de promedio móvil y el movimiento de las ganancias y pérdidas, esta estrategia realiza una gestión dinámica del capital basada en las tendencias. Tiene una alta configurabilidad, adecuada para que los inversores racionales se ajusten y usen de acuerdo con sus propios estilos. Como estrategia cuantitativa universal, todavía tiene un gran potencial de optimización y vale la pena una investigación en profundidad.


/*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)


Más.