
Esta estratégia baseia-se na linha média e nas médias móveis para abrir posições e estabelecer um stop-loss através de um penetrador. As principais características são:
A estratégia consiste em quatro partes principais:
O uso de um cruzeiro e um garfo dourado para avaliar a tendência e filtrar os mercados de turbulência.
O uso de um determinado percentual de stop-loss móvel para bloquear os lucros e controlar o risco, permite a gestão dinâmica do capital.
Pode ser configurado para abrir o filtro de posição. Se a posição anterior for multi-cabeça, o próximo sinal deve ser para a cabeça vazia para abrir a posição, evitando a posse unilateral.
Use o ATR para limitar o limite máximo de perda e evitar perdas excessivas.
Especificamente, a estratégia calcula primeiro a linha média e faz mais quando a linha média aparece em um cruzamento dourado, fazendo um vazio na hora da morte. Após a entrada, configure o stop e a linha de parada móveis em uma proporção determinada. Se o preço tocar a linha de parada, pare; se tocar a linha de parada ou exceder o limite de parada ATR, pare.
As principais vantagens desta estratégia são:
Muitos dos parâmetros da estratégia são configuráveis e podem ser ajustados de acordo com o estilo de negociação do usuário.
O uso de Stop Loss móvel e Stop Loss ATR permite o controle efetivo da amplitude de um único Stop Loss para uma excelente gestão de fundos.
A estratégia de linha média, por si só, é mais adequada para mercados com uma forte tendência e pode filtrar oscilações.
A estratégia também apresenta alguns riscos, principalmente:
A mediana em si não é perfeita para o julgamento de situações complexas, podendo ocorrer erros de julgamento. Nesse caso, os parâmetros da mediana devem ser ajustados adequadamente ou combinados com outros indicadores para julgar.
O stop loss móvel pode ser negado durante a vibração, e deve ser combinado com o parâmetro ATR para definir o alcance do stop loss.
A abertura de um filtro de posição pode ter um impacto na frequência de negociação, e a posse unilateral por um longo período pode trazer riscos adicionais.
Os principais pontos de otimização desta estratégia são:
Ajustar os parâmetros como o período de linha média, o parâmetro ATR e o parâmetro Stop Loss Ratio para otimizar o efeito da estratégia.
Adicionar CMF, OBV e outros indicadores para avaliar o fluxo de capital e evitar perdas excessivas.
A combinação de estratégias como a ruptura e o acompanhamento após a estabilização da tendência podem ser mais eficazes.
Em geral, esta estratégia, através de filtragem linear e stop loss móvel, permite a gestão de fundos dinâmicos baseados em tendências. É altamente configurável e razoável para que os investidores ajustem o uso de acordo com o seu estilo. Como uma estratégia de quantificação genérica, há muito espaço para otimização e vale a pena um estudo aprofundado.
/*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)