
A estratégia de equilíbrio de fissuras de leão é uma estratégia de negociação de linha curta simples, baseada no cruzamento de equilíbrio. A estratégia usa principalmente duas médias móveis, fazendo excesso quando a média móvel rápida atravessa a média móvel lenta de baixo; e a posição de equilíbrio quando a média móvel rápida atravessa a média móvel lenta de cima. O nome da estratégia é tirado do popular termo de fissuras de leão de leão, que significa capturar pequenos movimentos no preço da linha curta e lucrar em pequenas fissuras de equilíbrio.
A estratégia usa duas médias móveis: a média móvel rápida do pequeno MAPeriod e a média móvel lenta do bigMAPeriod. As duas médias móveis formam um canal de preços, abaixo do canal uma média móvel rápida, acima do canal uma média móvel lenta.
Especificamente, a estratégia primeiro calcula a média móvel rápida smallMA e a média móvel lenta bigMA. Em seguida, calcula a linha de compra buyMA ao longo do canal, que é o ((100 - percentBelowToBuy) %) da média móvel lenta. Quando a média móvel rápida smallMA atravessa a linha de compra buyMA a partir da direção inferior, faça mais; quando o lucro atingir 1% ou não lucrativo, mas depois de manter uma posição de 7K.
Em suma, a estratégia captura a fenda de um leão de prata na linha de equilíbrio, ou seja, a oportunidade de romper a borda inferior do canal, com o objetivo de obter lucros em linha curta. Simultaneamente, configura condições de parada e parada de perda para controlar o risco de uma única transação.
A estratégia tem as seguintes vantagens:
O conceito é simples, fácil de entender e de implementar. O uso de duplo equilíbrio é a estratégia de indicadores técnicos mais básica.
A estratégia usa diretamente o recurso de retorno do TradingView, sem necessidade de implementação adicional.
Visualização robusta. Com o TradingView, os pontos de sinalização de negociação e as estatísticas de retrospectiva podem ser exibidas diretamente no gráfico.
Risco controlado. A estratégia define as condições de stop-loss e stop-loss para controlar efetivamente as perdas de uma única transação.
Flexibilidade de ajuste: os usuários podem ajustar os parâmetros da linha média e outros indicadores técnicos de acordo com suas necessidades, para que a estratégia seja mais adequada a diferentes variedades e estilos de negociação.
A estratégia também apresenta os seguintes riscos:
Pode gerar excesso de sinais. A estratégia de dupla equilíbrio é propensa a gerar sinais de falha múltiplos na compilação.
Dependência de um único indicador. Usando apenas o cruzamento linear para tomar decisões, ignorando outros fatores, a qualidade do sinal pode ser pior.
Otimização de parâmetros é muito difícil. Otimização de conjuntos de parâmetros de ciclo médio linear requer uma grande quantidade de cálculos e não é fácil encontrar o melhor parâmetro.
O desvio de detecção. Uma simples estratégia de dupla equilíbrio tende a ser melhor do que o disco rígido.
Dificuldade em parar o prejuízo. A configuração de um ponto de parada fixo dificulta a adaptação às mudanças de situação.
A estratégia pode ser otimizada em:
Combinado com outros indicadores de filtragem de sinais, tais como volume de transação, taxa de flutuação, etc., para evitar a criação de sinais de invalidez na liquidação.
Aumentar o julgamento baseado em tendências, evitando negociações contractuais. A linha média de períodos mais longos pode ser adicionada para julgar a direção da tendência.
Buscar o melhor parâmetro usando aprendizado de máquina. Buscar automaticamente a melhor combinação de parâmetros usando otimização de parâmetros em sequência ou algoritmos genéticos.
Aumentar as estratégias de stop loss, como o rastreamento de stop loss, o stop loss móvel, etc., para tornar o stop loss mais flexível.
Otimizar o horário de entrada. Outros indicadores podem ser usados para identificar os horários de entrada mais eficazes.
A combinação de pesquisas quantitativas com o teste de resposta para otimizar a combinação de parâmetros aumenta a estabilidade.
Desenvolvimento de sistemas de negociação automática para otimizar pacotes de parâmetros e avaliar estratégias usando negociações programadas.
A estratégia de equilíbrio da fenda do leão é uma estratégia de introdução muito adequada para o aprendizado de novatos. Ela usa um simples princípio de cruzamento bidirecional, configura regras de stop loss e pode capturar os movimentos de preços de linhas curtas. A estratégia é fácil de entender e executar, com um bom efeito de retrocesso.
/*backtest
start: 2023-10-02 00:00:00
end: 2023-11-01 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/
// © TraderHalai
// This script was born out of my quest to be able to display strategy back test statistics on charts to allow for easier backtesting on devices that do not natively support backtest engine (such as mobile phones, when I am backtesting from away from my computer). There are already a few good ones on TradingView, but most / many are too complicated for my needs.
//
//Found an excellent display backtest engine by 'The Art of Trading'. This script is a snippet of his hard work, with some very minor tweaks and changes. Much respect to the original author.
//
//Full credit to the original author of this script. It can be found here: https://www.tradingview.com/script/t776tkZv-Hammers-Stars-Strategy/?offer_id=10&aff_id=15271
//
// This script can be copied and airlifted onto existing strategy scripts of your own, and integrates out of the box without implementation of additional functions. I've also added Max Runup, Average Win and Average Loss per trade to the orignal script.
//
//Will look to add in more performance metrics in future, as I further develop this script.
//
//Feel free to use this display panel in your scripts and strategies.
//Thanks and enjoy! :)
//@version=5
// strategy("Strategy BackTest Display Statistics - TraderHalai", overlay=true, default_qty_value= 5, default_qty_type = strategy.percent_of_equity, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.1)
//DEMO basic strategy - Use your own strategy here - Jaws Mean Reversion from my profile used here
source = input(title = "Source", defval = close)
smallMAPeriod = input(title = "Small Moving Average", defval = 2)
bigMAPeriod = input(title = "Big Moving Average", defval = 8)
percentBelowToBuy = input(title = "Percent below to buy %", defval = 1)
smallMA = ta.sma(source, smallMAPeriod)
bigMA = ta.sma(source, bigMAPeriod)
buyMA = ((100 - percentBelowToBuy) / 100) * ta.sma(source, bigMAPeriod)[0]
buy = ta.crossunder(smallMA, buyMA)
if(buy)
strategy.entry("BUY", strategy.long)
if(strategy.openprofit >= strategy.position_avg_price * 0.01) // 1% profit target
strategy.close("BUY")
if(ta.barssince(buy) >= 7) //Timed Exit, if you fail to make 1 percent in 7 candles.
strategy.close("BUY")
///////////////////////////// --- BEGIN TESTER CODE --- ////////////////////////
// COPY below into your strategy to enable display
////////////////////////////////////////////////////////////////////////////////
// strategy.initial_capital = 50000
// // Declare performance tracking variables
// drawTester = input.bool(true, "Draw Tester")
// var balance = strategy.initial_capital
// var drawdown = 0.0
// var maxDrawdown = 0.0
// var maxBalance = 0.0
// var totalWins = 0
// var totalLoss = 0
// // Prepare stats table
// var table testTable = table.new(position.top_right, 5, 2, border_width=1)
// f_fillCell(_table, _column, _row, _title, _value, _bgcolor, _txtcolor) =>
// _cellText = _title + "\n" + _value
// table.cell(_table, _column, _row, _cellText, bgcolor=_bgcolor, text_color=_txtcolor)
// // Custom function to truncate (cut) excess decimal places
// truncate(_number, _decimalPlaces) =>
// _factor = math.pow(10, _decimalPlaces)
// int(_number * _factor) / _factor
// // Draw stats table
// var bgcolor = color.new(color.black,0)
// if drawTester
// if barstate.islastconfirmedhistory
// // Update table
// dollarReturn = strategy.netprofit
// f_fillCell(testTable, 0, 0, "Total Trades:", str.tostring(strategy.closedtrades), bgcolor, color.white)
// f_fillCell(testTable, 0, 1, "Win Rate:", str.tostring(truncate((strategy.wintrades/strategy.closedtrades)*100,2)) + "%", bgcolor, color.white)
// f_fillCell(testTable, 1, 0, "Starting:", "$" + str.tostring(strategy.initial_capital), bgcolor, color.white)
// f_fillCell(testTable, 1, 1, "Ending:", "$" + str.tostring(truncate(strategy.initial_capital + strategy.netprofit,2)), bgcolor, color.white)
// f_fillCell(testTable, 2, 0, "Avg Win:", "$"+ str.tostring(truncate(strategy.grossprofit / strategy.wintrades, 2)), bgcolor, color.white)
// f_fillCell(testTable, 2, 1, "Avg Loss:", "$"+ str.tostring(truncate(strategy.grossloss / strategy.losstrades, 2)), bgcolor, color.white)
// f_fillCell(testTable, 3, 0, "Profit Factor:", str.tostring(truncate(strategy.grossprofit / strategy.grossloss,2)), strategy.grossprofit > strategy.grossloss ? color.green : color.red, color.white)
// f_fillCell(testTable, 3, 1, "Max Runup:", str.tostring(truncate(strategy.max_runup, 2 )), bgcolor, color.white)
// f_fillCell(testTable, 4, 0, "Return:", (dollarReturn > 0 ? "+" : "") + str.tostring(truncate((dollarReturn / strategy.initial_capital)*100,2)) + "%", dollarReturn > 0 ? color.green : color.red, color.white)
// f_fillCell(testTable, 4, 1, "Max DD:", str.tostring(truncate((strategy.max_drawdown / strategy.equity) * 100 ,2)) + "%", color.red, color.white)
// // --- END TESTER CODE --- ///////////////