Especialistas: Programação no MQL5 para traders: códigos-fonte retirados do livro. Parte 7 - página 4
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Olá @Stanislav Korotky, sou novo no MQL5. Descobri que você publicou um arquivo wss.zip para uso de websocket. Como usá-lo, há uma demonstração ou algo que eu possa aprender. Muito obrigado!
Você pode encontrar vários exemplos no livro algotrading, na seção que descreve (passo a passo) a implementação de um projeto de serviço da Web para copiar negociações e sinais.
Você pode encontrar vários exemplos no livro de algotrading, na seção que descreve (passo a passo) a implementação de um projeto de serviço da Web para copiar negociações e sinais.
Olá @StanislavKorotky
Estou tentando implementar um fechamento de posição parcial com uma ordem pendente na direção oposta.
Por exemplo:
MqlTradeRequestSync reqs(transaction.symbol);
reqs.closeby(target_position_ticket_id, transaction.order);
Acredito que a linha acima deve ser capaz de realizar o trabalho, mas meu desafio é como obter o `target_position_ticket_id`dentro do manipulador de eventos OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD ( transaction.type) ou, de alguma forma, associar a ordem pendente com o target_position_ticket_id que se espera que feche sempre que a ordem pendente for preenchida.
Tentei adicionar o `target_position_ticket_id`ao comentário da ordem pendente quando estou criando a ordem pendente, mas o problema é que dentro do evento OnTradeTransaction -> TRADE_TRANSACTION_DEAL_ADD (transaction.type) não consigo acessar o comentário, pois os atributosMqlTradeTransaction não têm 'comment'
Agradeço sua ajuda.
O método closeby(ticket1, ticket2) do livro pressupõe que você use uma conta de cobertura e já tenha duas posições abertas (compra e venda) com os tickets ticket1 e ticket2. Suponho que seja impossível (em geral) executar a ação TRADE_ACTION_CLOSE_BY em uma ordem pendente. Mas se a sua conta estiver no modo de compensação, acho que você pode simplesmente colocar uma ordem pendente na direção oposta e, quando ela for acionada, modificará a posição existente de acordo - ou seja, a fechará, ou fará um fechamento parcial, ou até mesmo inverterá (se o novo volume for maior que o antigo).
Pequenos patches em websockets (a la carte e em massa).
Uma dessas propriedades é a "Commissions" do Symbol, que obviamente difere das corretoras, como pode ser visto na imagem em anexo. No entanto, não consegui acessar essa propriedade de forma programática. Você poderia me dar uma dica de como obter a comissão do símbolo?
Por outro lado, esta mensagem aparece com frequência no registro sempre que estou trabalhando com o PositionFilter, especialmente quando o EA é carregado pela primeira vez ou recompilado: "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Ele ainda funciona bem e não interrompe nada
@StanislavKorotky Obrigado pela atualização contínua, mas há algo que estou tentando descobrir. No MT5 "Market Watch", posso clicar com o botão direito do mouse em qualquer "Símbolo" e visualizar todas as suas propriedades associadas, da mesma forma que faria programaticamente clicando em "Specification".
Uma dessas propriedades é a "Commissions" do Símbolo, que obviamente difere das corretoras, como pode ser visto na imagem em anexo. No entanto, não consegui acessar essa propriedade de forma programática. Por favor, pode me dar uma dica de como obter a comissão do símbolo?
Infelizmente, nem todas as propriedades das entidades do terminal são acessíveis via MQL5.
Por outro lado, essa mensagem aparece com frequência no registro sempre que estou trabalhando com o PositionFilter, especialmente quando o EA é carregado pela primeira vez ou recompilado: "Unresolved int value as enum: 8 for MonitorInterface<ENUM_POSITION_PROPERTY_INTEGER,ENUM_POSITION_PROPERTY_DOUBLE,ENUM_POSITION_PROPERTY_STRING>". Ele ainda funciona bem e não interrompe nada
Isso é apenas um aviso causado pelo fato de que a enumeração interna correspondente da MQL5 tem uma lacuna nas constantes que normalmente são atribuídas consecutivamente. Essa lacuna ocorre porque a MQL5 está em constante mudança, e algumas constantes podem se tornar obsoletas e ser eliminadas. Você pode editar o código-fonte para evitar esses avisos.
Estou anexando uma versão atualizada da biblioteca JSON - toyjson3.mqh - que substitui a toyjson2.mqh e a toyjson.mqh do livro.
Essa versão é otimizada para processar arquivos JSON enormes. Por uma questão de simplicidade, as versões anteriores usam a função StringSplit para tokenização de texto durante a análise, e essa chamada pode solicitar internamente gigabytes de memória livre devido à fragmentação e à antecipação do fluxo de dados adicional. Ela é liberada após a análise, mas o gerenciador de memória MQL5 pode mantê-la reservada por um tempo, pois libera o lixo de forma adiada.
Agora, ele ocupa muito menos memória durante a análise.
Estou anexando algumas correções de bugs e melhorias nas classes de websockets.
Isso é exatamente o que eu precisava.
Muito obrigado.
Você se sente como esse cara para mim.
https://clip.cafe/top-gun-maverick-2022/good-afternoon-ladies-gentlemen-s2/