
A estratégia de compra-venda é uma estratégia de negociação de longo prazo muito simples, mas eficaz. Esta estratégia compra automaticamente após uma queda significativa da criptomoeda e vende quando a alta atinge o objetivo definido, obtendo assim ganhos em caso de grande flutuação no mercado.
O núcleo da estratégia consiste em determinar se o mercado está em uma queda significativa, calculando a queda e queda das criptomoedas em um determinado período retrospectivo. Quando o preço da criptomoeda cai significativamente em um período recente acima do seu limite, o que significa que o mercado pode estar em extremo pânico, a estratégia compra automaticamente. Além disso, a estratégia também define um ponto de parada e um ponto de parada, que são automaticamente suspensos ou parados quando o preço toca esses dois pontos.
Especificamente, esta estratégia usa a função trailing_change para calcular o aumento e o declínio do total de criptomoedas em um determinado período retrospectivo. Quando o aumento e o declínio das criptomoedas na linha K da raiz inp_lkb mais recente são menores do que o valor negativo do dip definido para o parâmetro, é uma queda significativa que corresponde às condições de compra. Nesse momento, dentro da janela de tempo de retrospecção, a operação de abertura de compra da estratégia é acionada.
Depois de comprar e abrir uma posição, esta estratégia acompanha as mudanças de preço em tempo real, definindo duas condições de saída: 1) Quando o preço cai abaixo de 1% do preço de abertura da posição, a parada de perda é acionada; 2) Quando o preço se abre acima de 1% do preço de abertura da posição, a parada de perda é acionada.
A maior vantagem desta estratégia de compra e venda de baixo preço é que é muito simples e fácil de executar. Não requer indicadores técnicos complexos, baseando-se apenas nos altos e baixos do mercado nos últimos tempos, e é muito adequado para os iniciantes de negociação.
Além disso, a estratégia suporta paradas de perda e paradas de paradas, o que permite controlar efetivamente as perdas de cada transação e bloquear parte dos lucros. Isso também torna a estratégia adequada para negociação em disco rígido, mesmo que haja uma grande flutuação adversa no mercado, o controle de perdas pode ser aceitável.
O principal risco desta estratégia reside na incapacidade de determinar o momento em que o mercado se inverterá. Se o mercado continuar a cair e não se recuperar, a posição de compra aberta pode apresentar um grande fluxo de perdas.
Outro risco a ser observado é que, se houver uma forte oscilação, o preço pode desencadear um stop loss ou um stop condition em curto prazo. Isso pode acarretar custos de negociação adicionais. Não é raro que o preço desencadeie vários stop loss em curto prazo, especialmente quando há uma forte oscilação.
Para os riscos acima, podemos definir um período de retrocesso mais amplo, para garantir que o sinal de compra seja mais estável e confiável, e filtrar os falsos sinais em parte da oscilação. Além disso, adicionar um período de tranqüilidade de negociação, não abrindo novas posições por um período de tempo após a liquidação, também pode reduzir efetivamente o problema da frequência excessiva de negociação causada pela oscilação de preços.
A estratégia ainda tem espaço para ser melhorada, e concentra-se principalmente nos seguintes aspectos:
Ajuste dinâmico do parâmetro de parada de perda. Pode-se ajustar a amplitude de parada de perda e a amplitude de parada de perda de acordo com a dinâmica da volatilidade do mercado, ajustando a amplitude de parada de perda em caso de pânico no mercado e ajustando a amplitude de parada de parada quando a situação for boa.
A combinação de vários fatores para determinar a hora de comprar. Além dos altos e baixos recentes, outros fatores, como a mudança no volume de transação, podem ser introduzidos para determinar um sinal de reversão mais confiável.
Adotar um mecanismo de reentrada. Após um stop loss ou parada, pode-se definir uma estratégia de reentrada para comprar novamente em novas oportunidades de reversão.
Esta estratégia de compra e venda de baixo preço é muito adequada para o mercado de criptomoedas altamente volátil como um todo. Captura as oportunidades de reversão do mercado e configura o risco de controle de stop loss. Esta estratégia é muito simples, fácil de entender e implementar e é muito adequada para iniciantes de negociação.
/*backtest
start: 2023-11-25 00:00:00
end: 2023-12-25 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/
// © Coinrule
//@version=3
strategy(shorttitle='Buy the Dips',title='Buy the Dips (by Coinrule)', overlay=true, initial_capital = 1000, default_qty_type = strategy.percent_of_equity, default_qty_value = 30, commission_type=strategy.commission.percent, commission_value=0.1)
//Backtest dates
fromMonth = input(defval = 1, title = "From Month")
fromDay = input(defval = 10, title = "From Day")
fromYear = input(defval = 2020, title = "From Year")
thruMonth = input(defval = 1, title = "Thru Month")
thruDay = input(defval = 1, title = "Thru Day")
thruYear = input(defval = 2112, title = "Thru Year")
showDate = input(defval = true, title = "Show Date Range")
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
inp_lkb = input(1, title='Lookback Period')
perc_change(lkb) =>
overall_change = ((close[0] - close[lkb]) / close[lkb]) * 100
// Call the function
overall = perc_change(inp_lkb)
//Entry
dip= -(input(2))
strategy.entry(id="long", long = true, when = overall< dip and window())
//Exit
Stop_loss= ((input (2))/100)
Take_profit= ((input (2))/100)
longStopPrice = strategy.position_avg_price * (1 - Stop_loss)
longTakeProfit = strategy.position_avg_price * (1 + Take_profit)
strategy.close("long", when = close < longStopPrice or close > longTakeProfit and window())