Esta estratégia adota uma abordagem de negociação de rede fixa, definindo o preço inicial e a porcentagem entre cada camada de rede.
A estratégia define primeiro o preço inicial e a distância percentual da rede, em percentagem da rede.Em seguida, calcula 10 camadas de preços de compra e venda com base no preço inicial e na percentagem.
Fórmula do preço de compra:
b1=preço-preço*p1)
b2=preço-preço*p2)
b3=preço-preço*p3)
…
Onde p1~p10 são percentagens calculadas camada por camada com base no percentual da rede.
Fórmula do preço de venda:
S1=b1+(preço*p1)
S2=b2+(preço*p1)
s3=b3+(preço*p1)
…
A condição de compra é acionada quando o preço de fechamento é inferior ao preço de compra:
se (cerca de < b1)
estratégia.entry ((
Da mesma forma, a condição de venda é acionada quando o preço de fechamento é superior ao preço de venda:
se (aproximadamente>s1)
strategy.exit("b1", quando=(fechar>s1))
Esta é a implementação da estratégia de negociação de rede de baixa compra-alta venda.
A estratégia da rede fixa tem as seguintes vantagens:
Atinge auto low-buy-high-sell sem cronometrar o mercado, reduz a dificuldade de negociação.
A fixação da distância adequada da grelha controla eficazmente o risco e evita a perseguição.
Lucrativo, quer o mercado suba ou desça.
Flexibilidade para ajustar os parâmetros da rede às diferentes condições do mercado.
Aumentar o tamanho da posição adicionando camadas de grade.
Incorporar o stop loss evita grandes perdas em eventos de mercado extremos.
A estratégia apresenta também alguns riscos:
As taxas de negociação consomem o lucro durante o mercado de gama.
Preços iniciais e configurações de rede incorretos levam a perdas.
A diferença de preços pode causar perdas durante eventos extremos.
A negociação mecânica tem risco de inserção de ordens.
Eventos concentrados podem amplificar as perdas.
Soluções:
Otimizar os parâmetros da rede para garantir lucro > taxas.
Backtest para encontrar o preço de partida ideal e distância da grade.
Adicionar stop loss ao controlo dos riscos.
Relaxa o preço da ordem para evitar a inserção.
Configure o controlo de risco para limitar a perda máxima.
A estratégia pode ser reforçada das seguintes formas:
Ajustar dinamicamente a distância da rede com base na volatilidade.
Calcular a faixa de preços para definir dinamicamente o preço inicial.
Adicionar o modelo ML para prever o preço e ajustar a grade.
Otimizar o stop loss com base nos pontos de stop loss históricos.
Incorporar o dimensionamento das posições com base no nível de lucro.
Otimizar a gestão de posições para maximizar a utilização do capital.
Melhorar a execução utilizando o TWAP para reduzir os custos de impacto.
A estratégia implementa a negociação de rede fixa estabelecendo preços de compra e venda com base no preço inicial e na porcentagem da rede, alcançando auto low-buy-high-sell. É importante gerenciar os riscos ao otimizar parâmetros, ajustes dinâmicos e stop loss para bloqueio de lucro e controle de perdas. Incorporar técnicas avançadas de ML e gerenciamento de dinheiro pode melhorar ainda mais a lucratividade da estratégia e a taxa de ganho.
/*backtest start: 2022-11-09 00:00:00 end: 2023-11-15 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/ // © Lionkind //@version=5 strategy("Grid HW", overlay = true, margin_long = 1, margin_short = 1) // Fix 35k price as starting point and 1% as a distance sprice=input(40500,"Starting price") gridpercent=input(1,"Percent") // calculate the % of the 10 layers p1=((gridpercent*1)/100) p2=((gridpercent*2)/100) p3=((gridpercent*3)/100) p4=((gridpercent*4)/100) p5=((gridpercent*5)/100) p6=((gridpercent*6)/100) p7=((gridpercent*7)/100) p8=((gridpercent*8)/100) p9=((gridpercent*9)/100) p10=((gridpercent*10)/100) //set buy prices b1=sprice-(sprice*p1) b2=sprice-(sprice*p2) b3=sprice-(sprice*p3) b4=sprice-(sprice*p4) b5=sprice-(sprice*p5) b6=sprice-(sprice*p6) b7=sprice-(sprice*p7) b8=sprice-(sprice*p8) b9=sprice-(sprice*p9) b10=sprice-(sprice*p10) //set sell prices s1=b1+(sprice*p1) s2=b2+(sprice*p1) s3=b3+(sprice*p1) s4=b4+(sprice*p1) s5=b5+(sprice*p1) s6=b6+(sprice*p1) s7=b7+(sprice*p1) s8=b8+(sprice*p1) s9=b9+(sprice*p1) s10=b10+(sprice*p1) //Long conditions lc1=close<b1 lc2=close<b2 lc3=close<b3 lc4=close<b4 lc5=close<b5 lc6=close<b6 lc7=close<b7 lc8=close<b8 lc9=close<b9 lc10=close<b10 //exit conditions ec1=close>s1 ec2=close>s2 ec3=close>s3 ec4=close>s4 ec5=close>s5 ec6=close>s6 ec7=close>s7 ec8=close>s8 ec9=close>s9 ec10=close>s10 //long orders if (lc1) strategy.entry("b1", strategy.long, when=(lc1)) if (lc2) strategy.entry("b2", strategy.long, when=(lc2)) if (lc3) strategy.entry("b3", strategy.long, when=(lc3)) if (lc4) strategy.entry("b4", strategy.long, when=(lc4)) if (lc5) strategy.entry("b5", strategy.long, when=(lc5)) if (lc6) strategy.entry("b6", strategy.long, when=(lc6)) if (lc7) strategy.entry("b7", strategy.long, when=(lc7)) if (lc8) strategy.entry("b8", strategy.long, when=(lc8)) if (lc9) strategy.entry("b9", strategy.long, when=(lc9)) if (lc10) strategy.entry("b10", strategy.long, when=(lc10)) //exit orders if (ec1) strategy.exit("b1", when=(ec1), limit=1) if (ec2) strategy.exit("b2", when=(ec2), limit=1) if (ec3) strategy.exit("b3", when=(ec3), limit=1) if (ec4) strategy.exit("b4", when=(ec4), limit=1) if (ec5) strategy.exit("b5", when=(ec5), limit=1) if (ec6) strategy.exit("b6", when=(ec6), limit=1) if (ec7) strategy.exit("b7", when=(ec7), limit=1) if (ec8) strategy.exit("b8", when=(ec8), limit=1) if (ec9) strategy.exit("b9", when=(ec9), limit=1) if (ec10) strategy.exit("b10", when=(ec10), limit=1) plot(b1,color=color.green) plot(s1, color=color.red) plot(b2, color=color.purple)