Compre na baixa e lucre na alta


Data de criação: 2023-11-23 11:03:18 última modificação: 2023-11-23 11:03:18
cópia: 1 Cliques: 667
1
focar em
1617
Seguidores

Compre na baixa e lucre na alta

Visão geral

A estratégia baseia-se na ideia de comprar no ponto baixo do mercado e vender no ponto alto. Ela rastreia os preços mais altos e mais baixos do passado em um determinado período, estabelece posições em vários níveis quando o preço ultrapassa o preço mais baixo e se posiciona quando o preço cai abaixo do preço mais alto ou atinge a condição de parada.

Princípio da estratégia

Calculação de preços mínimos e máximos

  • Preços mínimos ((lowcriteria): a função ta.lowest é chamada para calcular os preços mínimos dos últimos períodos de tempo, com base no ciclo de revisão definido pelo usuário (a linha K de 20 por defeito) e traçar a linha de preços mínimos.

  • Highcriteria: chama a função ta.highest, com base no ciclo de revisão definido pelo usuário (linha K de 10 por defeito) para calcular o preço mais alto de um determinado período anterior e traçar a linha de preço mais alto.

Sinais de entrada

Quando o preço atual ultrapassa a linha de preço mais baixa, um sinal de compra é emitido, criando uma posição de compra.

Sinais de saída

A partir de agora, o jogo será transmitido em dois formatos:

  1. Stop Fixed: Arbitragem de liquidação quando o preço atinge o nível de stop definido (por exemplo, acima de 8% do preço de entrada).

  2. Breakout: quando o preço cai abaixo da linha de alta, a tendência é invertida e a posição é parada.

Filtros de tendências

O filtro pode ser ativado ou desativado. O filtro pode ser ativado ou desativado.

Análise de vantagens

  • A estratégia de comprar e vender de acordo com as leis básicas do mercado.

  • Aumentar os mecanismos de avaliação de tendências para evitar a abertura de posições frequentes em situações de volatilidade.

  • O jogo oferece duas opções de partida, que permitem a busca de um parâmetro alto e a redução de perdas.

  • Parâmetros personalizáveis para um ambiente de mercado mais amplo.

  • Há muito espaço para otimizar as estratégias, que podem ser aperfeiçoadas por meio de ajustes de parâmetros, design de filtros, etc.

Análise de Riscos

  • A parada fixa não pode ser ajustada de acordo com a tendência real do mercado, podendo resultar em parada prematura ou em uma parada muito pequena.

  • Quando se vende a mais alta, pode haver grandes perdas que não podem ser efetivamente controladas.

  • O EMA julga a tendência apenas a partir de um determinado período histórico, podendo atrasar a mudança de tendência real.

  • Os dados de detecção não são representativos do futuro, existem incertezas sobre os efeitos reais.

Direção de otimização

  • Aumentar o modo de suspensão: como suspensão móvel, suspensão de diferença de nível, etc., permitindo que o nível de suspensão seja ajustado em tempo real de acordo com a tendência do mercado.

  • Otimização do sinal de saída: por exemplo, mudança de saída em lotes ou adição de outros indicadores de julgamento.

  • Otimizar o julgamento de tendências: como adicionar mais indicadores ou julgamento de aprendizagem de máquina.

  • Parâmetros de otimização: Encontrar a melhor combinação de parâmetros através de um maior feedback.

  • Aumentar o modo de parar perdas: tornar o controle de perdas mais flexível e eficaz.

Resumir

Esta estratégia em geral usa o clássico princípio de compra baixa e venda alta, em certas condições, pode obter melhores resultados. Mas a estratégia em si ainda tem espaço para otimização, através de ajuste de parâmetros, otimização de saída, melhoria de stop loss, etc. Pode obter um rendimento mais estável. Este artigo analisa em profundidade os princípios, vantagens, riscos e direções de otimização da estratégia, com o objetivo de fornecer ideias estratégicas e, ao mesmo tempo, alertar os investidores para os riscos e ser cautelosos com as negociações quantitativas.

Código-fonte da estratégia
/*backtest
start: 2022-11-16 00:00:00
end: 2023-11-22 00:00:00
period: 1d
basePeriod: 1h
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/
// @version=5
// Author = TradeAutomation


strategy(title="Low-High-Trend Strategy", shorttitle="Low-High-Trend Strategy", process_orders_on_close=true, overlay=true, commission_type=strategy.commission.cash_per_order, commission_value=1, slippage=3, initial_capital = 25000, margin_long=50, margin_short=50, default_qty_type=strategy.percent_of_equity, default_qty_value=110)


// Backtest Date Range Inputs // 
StartTime = input(defval=timestamp('01 Jan 2000 05:00 +0000'), title='Start Time')
EndTime = input(defval=timestamp('01 Jan 2099 00:00 +0000'), title='End Time')
InDateRange = true

// Strategy Calculations //
lowcriteria = ta.lowest(close, input(20, "Lowest Price Lookback", tooltip="The strategy will BUY when the price crosses over the lowest it has been in the last X amount of bars"))[1]
highcriteria = ta.highest(close, input(10, "Highest Price Lookback", tooltip="If Take-Profit is not checked, the strategy will SELL when the price crosses under the highest it has been in the last X amount of bars"))[1]
plot(highcriteria, color=color.green)
plot(lowcriteria, color=color.red)

// Take Profit //
TakeProfitInput = input(true, "Sell with Take-Profit % intead of highest price cross?")
TakeProfit = ta.crossover(close,strategy.position_avg_price*(1+(.01*input.float(8, title="Take Profit %", step=.25))))

// Operational Functions //
TrendFilterInput = input(true, "Only buy when price is above EMA trend?")
ema = ta.ema(close, input(200, "EMA Length"))
TrendisLong = (close>ema)
plot(ema)

// Entry & Exit Functions//
if (InDateRange and TrendFilterInput==true)
    strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria) and TrendisLong)
if (InDateRange and TrendFilterInput==false)
    strategy.entry("Long", strategy.long, when = ta.crossover(close, lowcriteria))
if (InDateRange and TakeProfitInput==true)
    strategy.close("Long", when = TakeProfit)
if (InDateRange and TakeProfitInput==false)
    strategy.close("Long", when = ta.crossunder(close, highcriteria))
if (not InDateRange)
    strategy.close_all()