Estratégia de ordem cronometrada

Autora:ChaoZhang, Data: 28 de setembro de 2023
Tags:

Resumo

A principal ideia da estratégia de ordem cronometrada é realizar operações de compra e venda em pontos de tempo definidos pelo usuário. Esta estratégia permite que os usuários definam um ponto de tempo exato. Neste ponto de tempo, ele primeiro venderá a posição atual e, em seguida, colocará uma ordem de compra limite a 1% abaixo do preço atual. Isso permite que o reequilíbrio periódico seja realizado em um horário específico todos os dias.

Estratégia lógica

A estratégia usa primeiro a função de entrada para obter a hora e o minuto personalizados definidos pelo usuário e, em seguida, gera o tempo de execução da ordem usando a função de carimbo horário.

Especificamente, a estratégia primeiro verifica se o tempo atual está dentro do intervalo de data de início e final definido pelo usuário. Se sim, quando o ponto de tempo de execução da ordem especificado é atingido, ele primeiro venderá a posição atual ao preço de mercado e, em seguida, colocará uma ordem de compra limite a 99% do preço atual. Isso alcança o reequilíbrio a um preço 1% menor do que o preço atual no ponto de tempo específico.

Análise das vantagens

A maior vantagem desta estratégia é que pode reequilibrar periodicamente as posições em pontos de tempo específicos sem intervenção manual, reduzindo os custos de mão-de-obra.

As vantagens específicas incluem:

  1. Operação totalmente automatizada, reduzindo os custos manuais.

  2. Permite o reequilíbrio periódico das posições em pontos de tempo específicos.

  3. Ganha oportunidades de compra extremamente baixas, cerca de 1% abaixo dos preços correntes, durante cada reequilíbrio.

  4. Pontos de tempo de reequilíbrio personalizáveis, ajuste flexível.

  5. Datas de início e de fim personalizáveis para ciclos de reequilíbrio, convenientes para otimização de backtesting.

Análise de riscos

A estratégia tem também alguns riscos a ter em conta:

  1. Se o momento de reequilíbrio periódico for mal escolhido, pode perder melhores oportunidades de compra ou vender em momentos inadequados.

  2. O preço de compra é apenas 1% inferior ao preço de venda, não pode ganhar uma diferença de preço de compra ultra-baixa suficiente em cada ciclo de reequilíbrio.

  3. Tanto a venda como a compra são ordens de mercado, podendo sofrer de algum grau de deslizamento.

  4. Se a estratégia operar apenas em momentos específicos, o mercado não pode ser gerido entre esses momentos.

  5. O reequilíbrio frequente implicará taxas de negociação relativamente mais elevadas.

As soluções correspondentes:

  1. Escolher os pontos de tempo de reequilíbrio adequados, também combinando com outros indicadores técnicos.

  2. Aumentar o parâmetro de diferença de preço de compra, conforme adequado.

  3. Escolha produtos com boa profundidade e baixa volatilidade.

  4. Combinar com outras estratégias de gestão do risco durante os períodos de não reequilíbrio.

  5. Controlar adequadamente a frequência de reequilíbrio para equilibrar as vantagens e os custos de negociação.

Orientações de otimização

A estratégia pode ser otimizada nos seguintes aspectos:

  1. Otimizar a seleção dos pontos de tempo de reequilíbrio com base nas características do ciclo intradiário dos produtos de negociação.

  2. Adicionar outros indicadores técnicos para evitar o reequilíbrio em momentos desfavoráveis, por exemplo, combinando indicadores de tendência da média móvel.

  3. Otimizar o parâmetro de compra ultra-baixo para equilibrar vantagem e custo de negociação.

  4. Adotar um stop loss/take profit para gerir as posições entre os reequilíbrios.

  5. Usar algoritmos de aprendizagem de máquina para treinar em dados históricos e otimizar automaticamente pontos de tempo de reequilíbrio.

  6. Adicionar ajustes em torno de divisões de ações, dividendos, etc. para acompanhar as mudanças de tempo.

Resumo

Em geral, a estratégia de ordem cronometrada pode automatizar o processo de negociação e reduzir os custos de operação manual através do reequilíbrio periódico. Há grande espaço para otimização em áreas como seleção de ponto de tempo de reequilíbrio, configuração de parâmetros de compra, stop loss / take profit e melhoria do algoritmo. Também precisa notar certos riscos comerciais e tomar medidas apropriadas de gerenciamento de riscos.


/*backtest
start: 2023-08-28 00:00:00
end: 2023-09-27 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/
// © ytrevor

//@version=4
strategy("Order At Specified Time", overlay=true)


// -- These inputs are for customizing the times of your desired orders -- //
customHour = input(title="Hour for Order Execution", type=input.integer, defval=01, minval=00, maxval=24) //
customMinute = input(title="Minute for Order Execution", type=input.integer, defval=00, minval=00, maxval=59)
targetTime = timestamp("UTC", year, month, dayofmonth, customHour, customMinute, 00) //Order executes at this time

inDateRange = (time >= targetTime) and (time <= targetTime) //Orders are placed everyday at 01:00 UTC, or any other time specified via input


// -- These inputs are for back testing. Feel free to change the start and end dates via input -- // 
startDay = input(title="Start Day", type=input.integer, defval=10, minval=1, maxval=31) 
startMonth = input(title="Start Month", type=input.integer, defval=2, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2021)
endDay = input(title="End Day", type=input.integer, defval=22, minval=1, maxval=31)
endMonth = input(title="End Month", type=input.integer, defval=3, minval=1, maxval=12)
endYear = input(title="End Year", type=input.integer, defval=2021)

betweenDates = true


// -- Order execution --  //
if betweenDates
    buyPrice = close*0.99 //Buy at 1% lower than selling price
    strategy.entry("Sell", strategy.short, when=inDateRange) //Sell at 01:00 UTC, or at any other time specified via input
    strategy.entry("Buy", strategy.long, limit=buyPrice, when=inDateRange) //Buy limit order placed at the same time, 1% lower than selling price




Mais.