A principal ideia da estratégia de ordens de compra-venda é comprar e vender em um horário personalizado pelo usuário. A estratégia permite ao usuário definir um ponto de tempo preciso, em que ele venderá sua posição atual e depois comprará a um preço limite 1% abaixo do preço atual. Isso permite a realização de reajustes periódicos em horários específicos todos os dias.
A estratégia primeiro obtém as horas e minutos personalizadas pelo usuário por meio da função de entrada e, em seguida, usa a função de timestamp para gerar o tempo de execução do pedido. Se o tempo atual for posterior ao ponto de tempo especificado, a operação de venda e compra será acionada.
Especificamente, a estratégia julga primeiro se o momento atual está dentro do intervalo de datas de início e término especificado pelo usuário. Se for satisfeito, o preço de mercado será vendido no momento em que o ponto de execução do pedido for atingido, e depois será comprado pelo preço de limite de 99% do preço atual. Assim, é possível realizar um reajuste de posição a um preço 1% abaixo do preço atual em um determinado momento.
A maior vantagem da estratégia é que pode ser reajustado regularmente em um determinado ponto do tempo, sem a necessidade de operação manual, reduzindo o custo de trabalho. Além disso, cada realocação de comprar a um preço um pouco mais baixo do que o preço atual, pode obter uma certa vantagem de compra ultra-baixo.
As vantagens incluem:
Operação totalmente automatizada, reduzindo custos de mão de obra.
A posição pode ser reajustada regularmente em determinados momentos.
A cada reposicionamento, é possível obter uma oportunidade de compra ultra-baixa de um pouco menos de 1% do preço atual.
A transferência pode ser feita a partir de um ponto de transferência personalizado, com uma flexibilidade de ajuste.
Pode-se personalizar a data de início e fim do ciclo de desmontagem para facilitar a otimização de retrospectiva.
A estratégia também apresenta alguns riscos que devem ser lembrados:
Se você não escolher o momento certo para fazer a troca regular, você pode perder uma boa oportunidade de compra ou vender no momento errado.
O preço de compra é apenas 1% inferior ao preço de venda, podendo não ser possível obter uma diferença de preço de compra ultra-baixa suficiente em cada período de liquidação.
As vendas e compras são feitas a preços de mercado e podem ser afetadas por um certo grau de deslizamento.
Se uma estratégia opera apenas em um determinado ponto de tempo, não é possível administrar o mercado entre esses pontos de tempo.
A troca de posições frequente gera mais taxas de transação.
Resolução:
A escolha de um momento apropriado para a deslocação, em combinação com outros indicadores técnicos.
O parâmetro de diferença de preço de compra pode ser aumentado, se necessário.
Tente escolher uma variedade de negociação com melhor profundidade e menor volatilidade.
Pode ser combinado com outras estratégias para a gestão de risco durante o período de não-deslocação.
Controle adequado da frequência de negociação, equilíbrio entre vantagens de negociação e custos de negociação.
A estratégia pode ser otimizada em várias direções:
Optimizar a escolha do ponto de negociação, combinando características do ciclo diário da variedade de negociação para escolher o melhor ponto de negociação.
Adicionar outros indicadores técnicos de julgamento para evitar mudanças de posição em momentos desfavoráveis. Por exemplo, indicadores de julgamento de tendências, como a combinação de médias móveis.
Optimizar os parâmetros de compra ultra-baixos, equilibrando vantagens e custos de transação.
A utilização de tracking stop loss para gerenciamento de posições em intervalos de deslocamento.
Combinado com algoritmos de aprendizagem de máquina para treinar dados históricos, otimizando automaticamente o ponto de tempo de embarque.
A função de recuperação de direitos foi adicionada para acompanhar os pontos de ajuste de equilíbrio em momentos de divisão de ações, dividendos e outros.
De um modo geral, a estratégia de ordenação por tempo fixo pode automatizar o processo de negociação e reduzir os custos de operação manual, ajustando periodicamente a posição. A estratégia de otimização é grande e pode ser aprimorada a partir da escolha do ponto de negociação, configuração de parâmetros de compra, parada de perda e otimização de algoritmos.
/*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