Discussão do artigo "Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXXI): ordens de negociação pendentes, abertura de posições por condições"

 

Novo artigo Biblioteca para criação simples e rápida de programas para MetaTrader (Parte XXXI): ordens de negociação pendentes, abertura de posições por condições foi publicado:

A partir deste artigo, criaremos um recurso que permite negociar através de solicitações pendentes de acordo com uma determinada condição: se atingirmos/ou ultrapassarmos uma determinada hora, se ultrapassarmos um lucro predeterminado ou se for registrado um evento de fechamento de posição por stop-loss.

Em resumo, o que obteremos com isso? Este recurso da biblioteca nos permitirá criar por conta própria as condições que, ao serem atendidas, desencadearão o envio da ordem de negociação para o servidor.
Por exemplo:

  1. Abrir uma posição Buy, caso atinjamos/ultrapassemos uma determinada hora ou caso o preço caia abaixo de um valor predeterminado (duas condições com base nos valores das propriedades do símbolo).
  2. Fechar parcialmente uma posição, caso ultrapassemos o lucro definido (uma condição com base no valor da propriedade de conta).
  3. Abrir uma posição oposta, caso seja registrado um evento de fechamento de posição por stop-loss (uma condição com base no valor da propriedade de evento de conta).

Estes são apenas três exemplos simples. Porém, as condições e suas combinações podem ser bastantes. Nesta fase, desenvolveremos o controle de alterações das propriedades de conta, de símbolo e de eventos que ocorrem na conta atual. As condições dessas três listas podem ser definidas usando qualquer uma de suas combinações.
Comecemos com a mais simples, isto é, com o controle de alterações nos valores das propriedades de símbolo e de conta. Mais para frente, trataremos do controle dos eventos de conta e da reação a eles.

Para que o objeto-ordem pendente possa funcionar como parte da lógica de negociação (envio de ordens de negociação por condição), precisamos adicionar a este objeto dados adicionais para armazenar condições de ativação de ordem pendente e seus métodos de controle e processamento. O repositório desses dados será uma matriz bidimensional, na qual a primeira dimensão armazenará o número da condição (não há limite para esse número) enquanto a segunda conterá todos os dados de uma condição cujo número será especificado na primeira dimensão: o tipo de fonte da condição (símbolo, conta ou evento), a condição em si (criamos uma enumeração para cada uma das fontes), o método de comparação (>,<,==,!=,>=,<=), o valor de controle da propriedade monitorada e seu valor atual.

Autor: Artyom Trishkin

Razão: