Muitas vezes é dito que a negociação é uma arte, e a arte vem da inspiração.
O que geralmente chamamos de inspiração refere-se ao estado criativo que as pessoas produzem no processo de pensamento. Para os traders, nosso hemisfério esquerdo do nosso cérebro completou a formulação de uma série de regras, como escrita de estratégia, alocação de capital e configuração de parâmetros. A inspiração e a sensação de mercado da negociação vem do hemisfério direito do cérebro.
Muitas pessoas já ouviram falar da palavra "sentimento de mercado", que é uma espécie de sentimento vago, como um déjà vu do que está acontecendo no momento.
Nos olhos de um leigo, o sentimento de mercado é misterioso. É um talento misterioso. Com ele, você pode ficar no mercado. Na verdade, é um resumo da experiência de negociação subjetiva pelo cérebro. É um vago sentimento de preconceito realizado através de anos de observação do mercado.
Embora, estritamente falando, a inspiração não seja exatamente a mesma coisa que o sentimento do mercado, acreditamos que, após milhares de vezes de refinamento do mercado, teremos uma compreensão mais profunda do mercado e poderemos desenvolver estratégias com facilidade.
No entanto, os futuros de commodities domésticos e as ações têm apenas algumas horas de tempo de negociação por dia, por isso seria esmagador melhorar a experiência de observar o mercado, formar seus próprios padrões de lucro e regras de negociação e treinar seus reflexos condicionados subconscientemente apenas a partir da negociação ao vivo. Além de pagar um longo custo de tempo, a maioria dos comerciantes também suporta o custo de perdas de capital.
A função de reprodução de dados pode ser treinada independentemente dos horários de negociação da bolsa, e suporta uma variedade de futuros de commodities e variedades de moeda digital. O mercado pode ser reproduzido manualmente ou automaticamente, e o tempo de início e fim e a velocidade de reprodução do mercado histórico podem ser definidos livremente.
Abrir o sítio oficial da FMZ Quant (fmz.comPara registrar e fazer login, clique no banco de dados no painel de controle para exibir a página da função de reprodução de dados. Existem quatro caixas de opções e um botão de seleção. Primeiro, clique no botão de seleção para exibir apenas as variedades que suportam a reprodução de bots reais, selecione as variedades a serem reproduzidas no canto superior esquerdo, selecione a hora de início e final dos dados nas duas caixas de opções seguintes, selecione o período de tempo dos dados como reprodução de bots reais e, finalmente, clique no botão Go no canto direito para iniciar a função de reprodução de dados.
Há três seções sob o rótulo de dados. À esquerda está o histórico de negociação, onde todos os pedidos que foram fechados são exibidos em ordem cronológica. No meio está a profundidade de 20 posições de cada pedido de compra e venda. À direita está a área de controle de reprodução de dados, onde você pode selecionar métodos manuais e automáticos de reprodução de dados, assim como usando um media player.
O índice de posição pode arrastar o cursor para frente e para trás da esquerda para a direita, permitindo que você selecione a hora de início da reprodução de dados rapidamente.
A velocidade de reprodução de dados também pode ser controlada na parte inferior movendo o cursor para a direita e para a esquerda, em milissegundos, para acelerar e desacelerar os dados durante a reprodução.
Embora existam muitos fatores que afetam o aumento e diminuição do preço, incluindo o ambiente econômico global, políticas macroeconômicas nacionais, políticas industriais relevantes, relações de oferta e demanda, eventos internacionais, taxas de juros e taxas de câmbio, inflação e deflação, psicologia do mercado, fatores desconhecidos, etc., o preço final no mercado é o resultado da concorrência entre várias partes e o lado da posição curta. Se mais pessoas comprarem do que venderem, o preço aumentará; Pelo contrário, se mais pessoas venderem do que comprarem, o preço diminuirá. Então só precisamos analisar o preço para fazer uma estratégia de negociação.
Através da reprodução FMZ Quant dos últimos meses
A resposta é sim.
Quando o mercado está a aumentar, o número de ordens longas é obviamente maior do que o número de ordens short.
Quando o mercado está a diminuir, o número de ordens de curto prazo é obviamente maior do que o número de ordens de longo prazo.
Podemos coletar dados de Tick em profundidade para calcular as ordens pendentes longas e curtas e compará-las, se as ordens pendentes longas e curtas combinadas forem muito diferentes, pode ser uma oportunidade de negociação potencial. Por exemplo, quando o número de ordens de posição longa é N vezes maior que as ordens de posição curta, podemos pensar que a maioria das pessoas no mercado é otimista e a probabilidade de aumento do preço aumentará em um curto período de tempo no futuro; Quando o número de vendedores curtos é N vezes maior que o de vendedores longos, podemos pensar que a maioria das pessoas no mercado é baixa e a probabilidade de queda do preço aumentará no futuro próximo.
De acordo com a lógica estratégica acima, ele começa a ser implementado em código.fmz.com> Login > Dashboard > Estratégia > Adicionar Estratégia > Clique no menu suspenso no canto superior direito para selecionar a linguagem Python e começar a escrever estratégias.
Passo 1: Escrever o quadro estratégico
# Strategy main function
def onTick():
pass
# Program entry
def main():
while True: # Enter the infinite loop mode
onTick() # Execute the strategy main function
Sleep(1000) # Sleep for 1 second
Nós devemos escrever nossa estratégia de grande para pequeno, assim como construir uma casa, construindo o quadro primeiro e depois a parede. Neste quadro, usamos duas funções: a função principal e a função onTick. A função principal é a entrada do programa, ou seja, o programa será executado a partir daqui, em seguida, entrar no modo de loop infinito, e executar a função onTick repetidamente. Então só precisamos escrever o conteúdo da estratégia na função onTick.
Passo 2: Escrever variáveis globais
vol_ratio_arr = [] # Long/Short positions pending order ratio array
mp = 0 # Virtual positions
A razão pela qual vol_ratio_arr é definido como uma variável global, porque minha estratégia precisa coletar a proporção de posições longas e curtas pendentes de um pedaço de dados Tick. Se colocarmos a variável vol_ratio_arr na função onTick, é obviamente irracional executar com o loop. O que precisamos é mudar o valor da variável no modo loop quando uma certa condição é atendida. A maneira mais razoável é colocar a variável fora do loop.
O gerenciamento de posições é muito necessário, porque está relacionado à lógica de negociação. Geralmente, nós calculamos os pares de moedas mantidos adquirindo contas em transações ao instante.
Passo 3: Calcule a razão múltipla vazia atual
depth = exchange.GetDepth() # Get depth data
asks = depth['Asks'] # Get asks array
bids = depth['Bids'] # Get bids array
asks_vol = 0 # All pending orders at ask price
bids_vol = 0 # All pending orders at bid price
for index, ask in enumerate(asks): # Iterate through the ask price array
# Linear calculation of all pending orders at the ask price
asks_vol = asks_vol + ask['Amount'] * (20 - index)
for index, bid in enumerate(bids): # Iterate through the bid price array
# Linear calculation of all pending orders at the bid price
bids_vol = bids_vol + bid['Amount'] * (20 - index)
bidask_ratio = bids_vol / asks_vol # Calculate long/short position ratio
Como todos sabemos, a moeda digital é geralmente 20 níveis de dados profundos, então podemos somar o número de ordens de posição longa e curta para calcular a relação entre posições longas e curtas. Quando este valor é maior que 1, significa que as pessoas otimistas são maiores do que as pessoas de baixa, indicando que o preço aumentará em um curto período de tempo no futuro; quando este valor é menor que 1, significa que as pessoas de baixa são maiores do que as pessoas de alta, indicando que o preço cairá em um curto período de tempo no futuro.
No entanto, há um ponto a ser distinguido. Quanto mais próxima a ordem pendente estiver do mercado de abertura, mais forte será o desejo de alta ou berish. Por exemplo, a ordem do primeiro nível é definitivamente mais disposta a alta do que a do nível 20. Portanto, quando acumulamos as ordens pendentes, precisamos dar diferentes pesos às ordens dos níveis 20 de forma linear, o que será mais razoável.
Etapa 4: Cálculo linear do rácio posição longa/curta num período de tempo
global vol_ratio_arr, mp # Introduce global variables
vol_ratio_arr.insert(0, bidask_ratio) # Put the long/short position ratio into the global variable array
if len(vol_ratio_arr) > 20: # If the array exceeds the specified length
vol_ratio_arr.pop() # Delete the oldest elements
all_ratio = 0 # Temporary variable, ratio of all long and short position pending orders
all_num = 0 # Temporary variables, all linear multipliers
for index, vol_ratio in enumerate(vol_ratio_arr): # Variable global variable arrays
num = 20 - index # Linear multiplier
all_num = all_num + num # Linear multiplier accumulation
all_ratio = all_ratio + vol_ratio * num # Accumulation of all long and short position pending orders ratio
ratio = all_ratio / all_num # Linear long and short position pending order ratio
A relação posição longa-curta pode ser obtida dividindo as ordens pendentes cumulativas longas pelas ordens pendentes cumulativas curtas. No entanto, este é apenas um dado de tick. Se apenas um dado de tick for usado, pode não ser uma escolha sábia para decidir transações de compra e venda, porque no mercado em rápida mudança, um dado de tick não é convincente.
Passo 5: Faça um pedido
last_ask_price = asks[0]['Price'] # Latest buy one price for asks
last_bid_price = bids[0]['Price'] # Latest sell one price for bids
if mp == 0 and ratio > buy_threshold: # If no currency is held currently, and the ratio is greater than the specified value
exchange.Buy(last_ask_price, 0.01) # Buy
mp = 1 # Set the value of virtual position
if mp == 1 and ratio < sell_threshold: # If there is currency held currently, and the ratio is less than the specified value
exchange.Sell(last_bid_price, 0.01) # Sell
mp = 0 # Reset the value of virtual position
Como precisamos especificar um preço ao fazer um pedido, podemos usar diretamente o último preço de venda ao comprar; Quando vender, você pode usar diretamente o último preço de compra.
A função de reprodução de dados pode ajudar você a analisar seus problemas passados, verificar e melhorar suas estratégias de negociação, melhorar a confiança dos traders nas estratégias e ajudar a gerar nova inspiração estratégica. Para os traders avançados, a reprodução dinâmica pode ajudá-los a analisar seus problemas passados, verificar e melhorar suas estratégias de negociação, melhorar a confiança dos traders nas estratégias e ajudar a gerar nova inspiração estratégica.