Type/to search
2
Follow
484
Followers
Estratégia de Grade de Venda de Contratos Removida pela Binance: Do Monitoramento à Negociação Automática
Discussions
Created 2026-05-09 18:31:25  Updated 2026-05-18 11:08:07
 1
 202

img

⚠️ Aviso Importante

Antes de ler e utilizar esta estratégia, preste atenção aos três pontos a seguir:

1. A estratégia requer paciência para aguardar oportunidades de abertura de posição

A deslistagem de contratos perpétuos na Binance é um evento de baixa frequência, que não ocorre todos os dias. Após iniciar a estratégia, pode ser necessário aguardar vários dias ou até mais tempo para que a primeira abertura de posição seja acionada. Durante a maior parte do tempo de execução, o programa ficará em estado de "monitoramento em espera". Esteja preparado psicologicamente para longos períodos de espera e não ache que a estratégia falhou por não haver negociações em curto prazo.

2. Ainda há espaço para otimização no momento da detecção de abertura de posição

Este artigo adota uma abordagem de consulta da interface fapi/v1/exchangeInfo a cada 15 segundos, identificando o sinal de deslistagem através da alteração no campo deliveryDate. Este método apresenta certa latência em testes com conta real, não sendo o caminho mais rápido. Os leitores podem otimizar o método de detecção conforme suas necessidades, por exemplo: reduzindo o intervalo de consulta, monitorando em paralelo a API de anúncios da Binance, assinando push via WebSocket, ou combinando múltiplas fontes de sinal para validação cruzada, a fim de buscar um ponto de entrada mais precoce. Quanto mais cedo entrar, maior será a queda máxima aproveitada na primeira onda de queda acentuada.

3. É fundamental desligar a estratégia a tempo de evitar o recuo dos lucros

Em observações com conta real, nem todos os pares deslistados caem de forma monotônica até o momento da deslistagem. Alguns ativos sofrem uma queda acentuada após o anúncio, mas depois se recuperam gradualmente ao longo de horas ou até um dia, podendo o preço retornar ao nível anterior ao anúncio. Se a estratégia não for desligada a tempo, os lucros flutuantes acumulados anteriormente podem ser drasticamente consumidos na recuperação, podendo até mesmo transformar lucro em prejuízo.

Recomenda-se definir qualquer uma das seguintes condições como sinal de saída ativa:
-- Encerrar imediatamente a posição ao atingir a meta de lucro pré-definida;
-- Forçar o fechamento da posição quando o preço se recuperar acima de uma certa proporção (por exemplo, 20%~30%) do ponto mais baixo após o anúncio;
-- Acionar a proteção de take profit quando o recuo da posição atingir uma certa proporção do lucro máximo (por exemplo, 30%~50%).

Não espere passivamente até os 60 minutos finais antes da deslistagem para fechar a posição — esse é um mecanismo de segurança, não o momento ideal de saída.

Introdução

No mercado de contratos perpétuos da Binance, existe um tipo especial de oportunidade de negociação que a maioria das pessoas ignora — eventos de deslistagem de contratos.

Periodicamente, a Binance publica anúncios declarando que certos contratos perpétuos com baixa liquidez ou volume de negociação reduzido serão deslistados. No momento do anúncio, o mercado reage rapidamente: traders com posições compradas são forçados a liquidar, vendas em pânico se sucedem, e o preço da moeda geralmente sofre uma queda violenta nos primeiros minutos após o anúncio, entrando depois em uma longa tendência de baixa oscilante até a deslistagem final.

Tomando MLNUSDT como exemplo:

img

Em meia hora, perdeu quase um terço do valor, e todo o ciclo de deslistagem geralmente dura vários dias, durante os quais o preço oscila em níveis baixos. Esse tipo de mercado é um campo fértil natural para estratégias vendidas.

No entanto, operar manualmente esse tipo de oportunidade apresenta dois desafios:

Primeiro, a informação é extremamente sensível ao tempo. Os primeiros 5 minutos após o anúncio são a janela de maior queda. Se perder o momento de entrada, o risco de vender a descoberto depois aumenta significativamente. O monitoramento manual não consegue responder em tempo real 24 horas por dia, 7 dias por semana.

Segundo, o mercado não é uma queda linear. Durante o processo de queda do preço, ocorrem constantes recuperações. Manter apenas posições vendidas, embora capture o lucro da tendência, perde inúmeras oportunidades de diferença de preço de alta frequência durante as recuperações.

É para resolver esses dois problemas que este artigo apresenta uma estratégia automatizada completa: através de um programa que monitora em tempo real os sinais de deslistagem da Binance, abre automaticamente uma posição vendida de base no momento do anúncio, enquanto inicia uma grade vendida dinâmica para capturar continuamente diferenças de preço oscilantes na tendência geral de baixa, e finalmente fecha a posição automaticamente antes da deslistagem, sem qualquer intervenção manual.


I. Por que este tipo de mercado

Antes de aprofundar na estratégia, precisamos primeiro entender as características do movimento de preços dos pares deslistados, que são a base do design de toda a estratégia.

1.1 O impacto de mercado do anúncio de deslistagem

Quando a Binance anuncia a deslistagem de um contrato perpétuo, a primeira reação do mercado é pânico. Os traders com posições compradas sabem que o contrato está prestes a desaparecer e precisam liquidar antes da deslistagem, caso contrário, serão forçados a liquidar. Essa venda concentrada forma uma forte pressão de venda de curto prazo, levando a uma rápida queda no preço.

Ao mesmo tempo, os formadores de mercado rapidamente reduzem seus spreads ou retiram liquidez, amplificando ainda mais a volatilidade dos preços. É por isso que os primeiros minutos após o anúncio de deslistagem geralmente são o período de maior queda em todo o ciclo.

1.2 O padrão de queda oscilante

Após a primeira queda acentuada, o preço não cai em linha reta até o fundo, mas apresenta um movimento típico de queda oscilante:

img

A formação desse movimento tem sua lógica interna: cada recuperação é resultado de traders de curto prazo que acreditam que a queda foi excessiva e tentam comprar na baixa, mas como o cenário fundamental não mudou (o contrato está prestes a desaparecer), essas compras logo ficam presas e o preço recomeça a cair. As alturas das recuperações tornam-se cada vez mais baixas, até que a liquidez se esgota completamente antes da deslistagem.

Essa oscilação regular é o ambiente mais adequado para estratégias de grade.

1.3 Duas fontes de lucro

Com base na análise acima, podemos projetar dois caminhos de lucro independentes:

Fonte de LucroFerramenta CorrespondenteCondição de Lucro
Queda de tendênciaPosição vendida de basePreço geralmente para baixo
Diferença de oscilaçãoGrade vendidaPreço oscila repetidamente dentro de um intervalo

A combinação de ambos confere à estratégia uma forte capacidade de lucro em mercados de deslistagem. Mesmo que o preço se recupere significativamente, a parte da grade ainda pode continuar colhendo diferenças de preço; e enquanto a tendência geral for de baixa, a posição de base continua lucrando.


II. Princípio de Monitoramento: Como detectar o sinal de deslistagem o mais rápido possível

Para monitorar informações de contratos, esta estratégia adota um método mais direto: monitorar diretamente as alterações de dados na interface de contratos da Binance.

2.1 O segredo do campo deliveryDate

A interface fapi/v1/exchangeInfo da Binance retorna informações detalhadas de todos os contratos, incluindo um campo chamado deliveryDate, que indica o momento de entrega do contrato.

Para contratos perpétuos, este campo é geralmente definido com um timestamp de um futuro distante:

4133404800000 → corresponde a 31 de dezembro de 2100

Isso atua como um placeholder equivalente a "nunca expira".

O ponto chave é: quando a Binance decide deslistar um contrato perpétuo, ao mesmo tempo em que publica o anúncio, ela altera o deliveryDate do contrato para o timestamp real do momento da deslistagem.

Contrato perpétuo normal: deliveryDate = 4133404800000 (nunca expira) Contrato prestes a ser deslistado: deliveryDate = 1744106400000 (2026-04-08 17:00:00)

Essa alteração é refletida imediatamente nos dados da interface, sendo mais rápida e estruturada do que a renderização da página de anúncio, sem necessidade de analisar nenhum HTML.

2.2 Implementação do código de monitoramento

A cada 15 segundos, a interface é consultada, filtrando os contratos perpétuos USDT cujo deliveryDate já mudou para um timestamp real:

python
def fetch_delist_symbols(): body = HttpQuery("https://fapi.binance.com/fapi/v1/exchangeInfo") data = json.loads(body) now_ms = get_now_ms() result = {} for s in data.get("symbols", []): if not s["symbol"].endswith("USDT"): continue if s.get("contractType") != "PERPETUAL": continue dd = s.get("deliveryDate", PERPETUAL_END) if dd < PERPETUAL_END and dd > now_ms: result[s["symbol"]] = dd return result

Exemplo de resultado retornado:

python
{ "HIPPOUSDT": 1744106400000, # 2026-04-08 17:00:00 "OLUSDT": 1744106400000, "RLSUSDT": 1744106400000, "PUFFERUSDT":1744106400000, }

Nota: Em testes com conta real, houve um pequeno atraso; métodos de verificação mais rápidos podem ser escolhidos.


III. Arquitetura da Estratégia

Toda a estratégia é composta por dois módulos executados em paralelo:

img

Ao descobrir um novo contrato, um objeto task é criado de forma independente para cada contrato, contendo todo o seu estado:

python
task = { "symbol": "HIPPO_USDT", "delist_time_ms": 1744106400000, "fund_per_task": 250.0, # Fundos alocados "base_short_qty": 1500000, # Quantidade da posição vendida de base "range_high": 0.0005287, # Limite superior da grade "range_low": 0.0004758, # Limite inferior da grade "grid_width": 0.0000529, # Largura do intervalo (fixa) "grids": [...], # Estado dos 10 intervalos da grade "shift_count": 0, # Número de movimentos já realizados ... }

Os tasks de múltiplos contratos são independentes entre si, não interferindo e sendo executados em paralelo.


IV. Alocação de Capital

Ao descobrir N contratos prestes a serem deslistados, o saldo disponível da conta é dividido dinamicamente de forma igual:

Capital alocado por contrato = Saldo disponível × 80% / N

Os 20% restantes servem como buffer de margem, para evitar liquidação devido a uma recuperação de preço de curto prazo.

Detalhe crucial: Ao inicializar vários contratos sequencialmente, a cada inicialização de um contrato, o saldo disponível da conta diminui (a posição de base ocupa margem). Portanto, o capital alocado para todos os contratos não pode ser calculado de uma só vez antes do início do loop; em vez disso, a consulta deve ser refeita antes de cada inicialização:

python
for idx, (binance_sym, delist_ms) in enumerate(delist_map.items()): update_global_account() remaining_count = total_new - idx available_now = total_balance - margin_used fund_per_task = available_now * 0.8 / remaining_count task = init_task(binance_sym, delist_ms, fund_per_task)

Isso garante que cada contrato receba uma alocação razoável de fundos, evitando que os contratos anteriores consumam muita margem e deixem os posteriores com capital insuficiente.


5. Detalhamento da Posição Base e da Grade

5.1 Abertura de Venda da Posição Base

Assim que o anúncio é emitido, na inicialização, abre-se imediatamente uma venda a mercado, sem esperar pela grade:

Posição nominal da posição base = Fundos alocados × 50% × Alavancagem Exemplo: Fundos alocados = 250U, Alavancagem = 10x Posição nominal da posição base = 250 × 50% × 10 = 1250U

A posição base é mantida durante todo o percurso, não participa das aberturas e fechamentos repetitivos da grade, e só é liquidada juntamente com o fechamento forçado antes do delisting.

A posição base é a parte mais lucrativa de toda a estratégia — se o ativo a ser delistado cair 50% desde o anúncio até o delisting, a posição base contribui com esses 50% de ganho na venda (multiplicados pela alavancagem).

5.2 Configuração da Grade de Venda

Com o preço atual como limite superior e 10% abaixo como limite inferior, dividido uniformemente em 10 níveis:

Exemplo (preço atual 0.0005287, largura do intervalo 10%): Limite superior = 0.0005287 Limite inferior = 0.0005287 × (1 - 10%) = 0.0004758 Espaçamento = (0.0005287 - 0.0004758) / 10 = 0.0000053 Nível 9: Abrir venda @0.0005287 → Fechar venda @0.0005234 Nível 8: Abrir venda @0.0005234 → Fechar venda @0.0005181 Nível 7: Abrir venda @0.0005181 → Fechar venda @0.0005128 ... Nível 0: Abrir venda @0.0004811 → Fechar venda @0.0004758

Os fundos de cada nível são igualmente distribuídos. A lógica é simples: quando o preço sobe até o preço de abertura da venda, a ordem pendente é executada e a venda é aberta; quando o preço cai até o preço de fechamento da venda, a ordem pendente é executada e a venda é fechada; concluído um ciclo, a ordem de venda é recolocada, aguardando a próxima recuperação.

5.3 Estratégia de Colocação de Ordens na Iniciação

Na inicialização, todas as grades cujo preço de abertura da venda seja >= o preço atual são colocadas:

Preço atual 0.0005287 Nível 9 preço de abertura = 0.0005287 ≥ 0.0005287 → Ordem colocada ✅ Nível 8 preço de abertura = 0.0005234 < 0.0005287 → skip_below (preço já caiu) Níveis 7 e abaixo: todos skip_below

Colocam-se todas as grades acima do preço atual porque, em um movimento de queda, o preço pode ter recuperações inesperadas a qualquer momento. Colocar todas as grades antecipadamente garante que nenhuma oportunidade de venda devido a essas recuperações seja perdida.


6. Movimentação Dinâmica do Intervalo

Este é o mecanismo mais central de toda a estratégia. O preço não permanece para sempre no intervalo inicial; a grade precisa acompanhar o movimento do preço para continuar capturando os spreads.

6.1 Movimento para Baixo (Abaixo do Limite Inferior)

Quando o preço cai abaixo do limite inferior da grade, significa que a queda ultrapassou a cobertura do intervalo atual, sendo necessário mover todo o intervalo para baixo:

Intervalo antigo: 0.0004758 ~ 0.0005287 Preço atual: 0.0004500 (abaixo do limite inferior 0.0004758) Cálculo do novo intervalo (passo de movimento 5%): shift_step = 0.0004500 × 5% = 0.0000225 Novo limite superior = 0.0005287 - 0.0000225 = 0.0005062 Novo limite inferior = 0.0005062 - 0.0000529 = 0.0004533 Novo intervalo: 0.0004533 ~ 0.0005062

6.2 Movimento para Cima (Recuperação Acima do Limite Superior)

Quando o preço sobe acima do limite superior da grade, o intervalo acompanha o movimento para cima:

Intervalo antigo: 0.0004494 ~ 0.0005023 Preço atual: 0.0005100 (acima do limite superior 0.0005023) Novo intervalo desloca-se para cima, garantindo que o preço atual esteja dentro do novo intervalo. Novo intervalo: 0.0004758 ~ 0.0005287

Este mecanismo garante que, independentemente da volatilidade do preço, a grade sempre acompanha a movimentação, evitando que o preço saia do intervalo e todas as grades fiquem vazias.

6.3 Largura do Intervalo Permanece Constante

Cada movimento altera apenas a posição do intervalo, não a sua largura:

python
grid_width = round(range_high - range_low, 8) # Fixado na inicialização # Ao mover para baixo range_high = fp(task, range_high - shift_step) range_low = fp(task, range_high - grid_width) # Calculado com largura fixa

Isso evita que erros de arredondamento em ponto flutuante façam o intervalo ficar cada vez mais estreito ou mais largo.

6.4 Mecanismo de Proteção de Posições

Ao mover o intervalo, todas as ordens pendentes são canceladas e a grade é reconstruída. Mas o que fazer com as grades que já abriram venda e estão aguardando fechamento?

Se forem reconstruídas diretamente, as posições dessas grades ficam "órfãs" — há posições vendidas sem ordens de fechamento correspondentes, tornando-se posições nuas, totalmente expostas ao risco de recuperação.

Solução: Antes de mover, registra-se a quantidade de contratos em todas as grades com posição; após o movimento, coloca-se uma ordem de fechamento de venda no nível mais baixo do novo intervalo:

python
# Resumir posições antes do movimento holding_contracts = sum( g.get("sell_contracts", 0) for g in task["grids"] if g["status"] in ("pending_cover", "holding_no_cover") ) cancel_all_orders(task) activate_grids(task, new_high, new_low) # Após o movimento, colocar ordem de cobertura de venda no nível mais baixo if holding_contracts > 0: _place_grid_cover(task, 0, holding_contracts)

Dessa forma, não importa quantas vezes o intervalo se mova, as posições vendidas já abertas nunca perdem o rastreamento.


7. Gerenciamento Paralelo de Múltiplos Contratos

7.1 Lógica de Tratamento ao Descobrir Novos Contratos

img

Os fundos liberados com o fechamento de contratos antigos são redistribuídos, garantindo que novos contratos recebam capital suficiente.

7.2 Gerenciamento do Ciclo de Vida

Ciclo de vida de cada contrato:

img


8. Alguns Detalhes Cruciais

8.1 Armadilha de Precisão em Moedas de Preço Baixo

Moedas como HIPPOUSDT, com preço na ordem de 0.0003, enfrentam problemas de precisão ao calcular o passo de movimento do intervalo:

shift_step = 0.0003 × 5% = 0.000015 Se PricePrecision = 4 (4 casas decimais) round(0.000015, 4) = 0.0 ← O passo se torna 0! → O loop while nunca termina, loop infinito

A solução é não truncar a precisão do passo e definir um passo mínimo como salvaguarda:

python
shift_step = price * SHIFT_STEP_PCT min_step = 10 ** (-PricePrecision) shift_step = max(shift_step, min_step) # Pelo menos igual à unidade mínima de precisão

8.2 Tratamento de Falha na Abertura da Posição Base

A abertura de venda a mercado pode falhar por falta de capital ou problemas de rede. Nesse caso, não se deve prosseguir com a construção da grade, pois isso resultaria em uma grade nua sem posição base:

python
def open_base_short(task): oid = place_market_short(task, usdt_amount) Sleep(1000) amt, _, _ = get_short_position(task) task["base_short_qty"] = amt if amt <= 0: Log(f"Falha ao abrir posição base, pulando este contrato") return False return True # Em init_task if not open_base_short(task): return None # Inicialização falhou, não adicionar a tasks

8.3 Momento e Método do Fechamento Forçado

Escolhe-se 60 minutos antes do delisting em vez de 30 minutos (momento em que a Binance proíbe abertura de novas posições) para dar uma janela de tempo suficiente para o fechamento. Quanto mais próximo do delisting, menor a liquidez e maior a dificuldade de liquidar.

No fechamento, utiliza-se uma ordem limitada ligeiramente acima do preço de mercado, em vez de uma ordem verdadeiramente a mercado, para evitar ser mal combinado em condições de liquidez extremamente baixa:

python
buy_p = fp(task, price * 1.005) # 0.5% acima do mercado exchange.CreateOrder(swapcode, "closesell", buy_p, fc)

Se não liquidar de uma vez, repete-se até 10 vezes, obtendo o preço mais recente a cada tentativa.

8.4 Ganho Adicional com Taxa de Funding

Em mercados em queda, a taxa de funding geralmente favorece os vendedores (os vendidos recebem). Esse é um ganho extra da manutenção da posição base, que não aparece nas estatísticas de spread da grade, mas reflete-se no crescimento do patrimônio da conta.


9. Sugestões de Parâmetros

python
LEVERAGE = 10 # Alavancagem, recomenda-se 5~10, não muito alta GRID_WIDTH_PCT = 0.10 # Largura do intervalo 10%, cobre a amplitude normal de oscilação SHIFT_STEP_PCT = 0.05 # Passo de deslocamento 5%, aproximadamente metade da largura do intervalo GRID_COUNT = 10 # Número de grades, quanto mais grades, menos capital por grade BASE_SHORT_RATIO = 0.5 # Posição base ocupa 50%, grades 40%, reserva 10% de margem FORCE_CLOSE_MINS = 60 # Fechar posição 60 minutos antes MONITOR_INTERVAL = 15000 # Monitorar a cada 15 segundos, equilibrando atualidade e frequência

Escolha da largura do intervalo: Quanto maior a largura, maior a faixa de oscilação coberta, mas a distância entre grades também aumenta, reduzindo a frequência de colheita. Recomenda-se ajustar com base na volatilidade histórica da moeda. Normalmente, 10% é um ponto de partida razoável.

Escolha do número de grades: Quanto mais grades, menor a distância entre elas, maior a frequência de colheita, mas menor o capital por grade e menor o lucro individual. Muitas grades podem causar problemas como capital insuficiente por grade para atender ao lote mínimo. 10 grades são uma escolha equilibrada.


Dez, Aviso de Riscos

Antes de usar esta estratégia, é necessário compreender plenamente os seguintes riscos:

Risco de rebote: Se a notícia já foi precificada pelo mercado antecipadamente, após o anúncio pode ocorrer um rebote do tipo "notícia ruim já precificada", causando perda temporária na posição base. A parte das grades ainda pode lucrar com a diferença durante o rebote, mas pode haver um retrocesso geral de curto prazo.

Risco de liquidez: Quanto mais próximo do momento de exclusão, pior a liquidez do contrato, maior o spread entre compra e venda, e maior o slippage ao fechar posição. A estratégia inclui um prêmio de 0,5% e 10 tentativas para mitigar isso, mas em situações extremas ainda pode não ser possível liquidar totalmente.

Risco de falso sinal: Em casos raros, a Binance pode cancelar ou adiar o plano de exclusão. Nesse cenário, a estratégia continuará mantendo posições vendidas até intervenção manual ou próxima atualização do monitoramento.

Risco de alta alavancagem: Moedas em processo de exclusão têm volatilidade extrema. Com alavancagem de 10x, mesmo um rebote de 10% pode causar perda próxima de todo o capital. Recomenda-se ajustar a alavancagem de acordo com a própria tolerância ao risco e controlar o tamanho total da posição.

Início e parada oportunos da estratégia: Com base em operações reais, alguns ativos, após um dia de queda oscilante, podem gradualmente retornar ao preço anterior ao anúncio. É necessário desligar a estratégia a tempo.

Tempo de execução: A estratégia requer espera prolongada para detectar oportunidades. É preciso paciência.


Onze, Conclusão

O valor central desta estratégia está em transformar vantagem informacional (detecção imediata do sinal de exclusão) em vantagem de negociação (execução automatizada), enquanto, por meio da estrutura dupla de posição base + grades, captura tanto o lucro da tendência quanto as diferenças de oscilação em movimentos de queda unilateral.

Os principais pontos de design de todo o sistema:

MóduloDesign centralProblema resolvido
Monitoramento deliveryDateLeitura direta da alteração do campo da interfaceDescoberta do sinal de exclusão em segundos
Alocação dinâmica de capitalConsultar saldo novamente antes de cada inicializaçãoAlocação equilibrada de capital entre múltiplos contratos
Abrir venda a mercado na posição baseExecutar imediatamente após o anúncioNão perder a primeira queda brusca
Ordens em todas as gradesColocar ordens em todas as grades acima do preço atualNão perder rebotes acima do esperado
Largura de intervalo fixaManter largura constante ao deslocarEvitar desvios de ponto flutuante
Proteção de posiçãoRecolocar ordens de venda após deslocamentoEvitar posição descoberta
Fechamento 60 minutos antesDeixar janela de tempo suficiente para liquidarLidar com baixa liquidez

O movimento de exclusão não ocorre todos os dias, mas cada vez que aparece, é uma oportunidade de negociação com relativa alta certeza. Por meio de monitoramento e execução automatizados, é possível participar dessas oportunidades de forma estável, sem necessidade de acompanhamento constante da tela.

Código fonte da estratégia: Estratégia de grade para contratos em exclusão

Comment
All comments (1)

    文章很好,我统计了下,一个月只有5次
    img

    a month ago
  • 1
iPhone Download
Forums
PINE Language
© 2015 - ∞ INVENTOR PTE LTD (SG)