
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:
La estrategia tiene cuatro partes principales:
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.
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.
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.
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.
Las principales ventajas de esta estrategia son:
Muchos de los parámetros de la estrategia son configurables y los usuarios pueden ajustarlos según su estilo de negociación.
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.
Las estrategias de línea media se adaptan a mercados con tendencias más fuertes y pueden filtrar las oscilaciones.
La estrategia también presenta algunos riesgos, principalmente:
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.
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.
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.
Las principales direcciones de optimización de esta estrategia son:
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.
Aumentar el CMF, OBV y otros indicadores para determinar el flujo de capital y evitar pérdidas excesivas.
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.
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.
/*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)