Esta estratégia abre posições baseadas na cruz de ouro e cruz de morte das médias móveis, e os conjuntos tomam lucros e param perdas de uma forma que cruza o chão.
A estratégia consiste em quatro partes:
Sistema de médias móveis
Utilize a cruz de ouro e a cruz de morte das médias móveis para determinar tendências e filtrar choques.
Mudar-se é lucrativo e não é prejudicial
Utilize o take profit e o stop loss com uma certa percentagem para bloquear os lucros e controlar os riscos, realizando uma gestão dinâmica do capital.
Filtragem de posição
Se a posição anterior for longa, o próximo sinal deve ser curto para abrir a posição, evitando a retenção unilateral.
ATR Stop Loss
Utilize o ATR para limitar a gama máxima de perdas de parada e evitar perdas de parada excessivas.
Especificamente, a estratégia primeiro calcula a média móvel, os longs na cruz dourada e os shorts na cruz da morte. Após a entrada, defina as linhas móveis de lucro e stop loss com uma certa porcentagem. Se o preço tocar a linha de lucro, então tire lucro; se tocar a linha de stop loss ou exceder a faixa de stop loss ATR, então pare de perder.
As principais vantagens desta estratégia são:
Alta configurabilidade
Muitos parâmetros da estratégia são configuráveis para que os usuários ajustem com base em seus estilos de negociação.
Boa gestão de capitais
A adoção de movimentos de take profit e stop loss e de ATR stop loss pode controlar eficazmente a amplitude de um único stop loss e alcançar uma excelente gestão de capital.
Adequado para o mercado de tendências
A própria estratégia da média móvel é mais adequada para mercados com tendências fortes para filtrar os choques de forma eficaz.
Esta estratégia apresenta também alguns riscos:
A tendência é um equívoco
O julgamento das médias móveis em mercados complexos não é perfeito e podem ocorrer erros de julgamento.
Excesso de Stop Loss
Os parâmetros ATR devem ser combinados para definir o intervalo de stop loss.
Riscos de abertura unidireccionais
A possibilidade de filtragem de posições terá um certo impacto na frequência de negociação.
As principais direcções de otimização são:
Optimização de parâmetros
Ajustar o ciclo da média móvel, os parâmetros ATR, os rácios de lucro e stop loss e outros parâmetros para otimizar o desempenho da estratégia.
Adição de indicadores
Adicionar indicadores como CMF, OBV para julgar o fluxo de capital e evitar stop loss excessivos.
Combinação com outras estratégias
Combine com estratégias de ruptura para seguir tendências após a estabilização da tendência para obter melhores resultados.
Em resumo, por meio do filtro de média móvel e do take profit e stop loss móvel, esta estratégia realiza uma gestão dinâmica de capital baseada em tendências.
/*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)