Erros, bugs, perguntas - página 399

 

Papaklass, obrigado pela resposta!

Exemplo (provavelmente vou repetir-me):

Lote mínimo = 1,0; passo mínimo do lote = 0,1. A cotação começa a cair, o comerciante tenta fechar uma posição longa de 10,1 lotes. No caso de um mercado de notícias, a ordem ORDER_FILLING_AON não pode ser executada. É mais razoável utilizar o RDER_FILLING_CANCEL. O comércio de venda oposta é parcialmente executado (por 10,0 lotes). A parte restante da posição longa (0,1 lote) continua a incorrer em perdas. Não pode ser fechado porque o lote mínimo do comércio = 1,0 lote. Isto é, para sair completamente do mercado, o comerciante deve:

1. incorrer em perdas óbvias comprando pelo menos 1,0 lote.

2. Tente executar um comércio de venda de lote 1.1 com o parâmetro ORDER_FILLING_AON.

Assim, em termos de senso comum, a entrada ORDER_FILLING_CANCEL eORDER_FILLING_RETURN impõe um requisito rigoroso para os valores do lote mínimo e do incremento mínimo do lote, estes devem ser iguais.

Outro exemplo.

Existe uma posição longa com lote 1.0 e SL/TP estão definidos. O comerciante tenta fazer um comércio inverso (venda) em volume de 1,1 lote com SL/TP especificado (para venda).

Suponha que tal volume está disponível no mercado e a posição resultante seria - volume de venda de 0,1 lote com um SL/TP especificado (para venda).

Mas não existe tal volume e temos ORDER_FILLING_CANCEL? Receberemos um erro sobre o SL/TP errado. Assim, digamos modestamente, a sabedoria é enviar SL/TP = 0 em tráfegos cruzados com o parâmetro ORDER_FILLING_CANCEL.

Sei que muitos programadores MQL5 são pessoas inteligentes, mas acredito que seria bom receber um artigo dos programadores explicando o algoritmo de verificação da correcção da colocação de encomendas.

Vou repetir a minha pergunta. Existe um artigo deste tipo? Se não, espera que apareça em breve?

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства ордеров - Документация по MQL5
 
papaklass:

Quando uma ordem é executada, o volume da posição restante não pode ser inferior ao mínimo.

Como pode ter tanta certeza?

Um posto acima deu um exemplo (o primeiro) de um caso em que tal situação é possível.

Ou o servidor tem um característica que o impede de fechar parcialmente uma encomenda de modo a que o restante seja inferior ao lote mínimo. Onde é que isto está explicitamente escrito na documentação?

 
voix_kas:

Como pode ter tanta certeza?

Um posto acima deu um exemplo (o primeiro) de um caso em que tal situação é possível.

Ou existe uma regra especial no servidor que não lhe permite fechar parcialmente as encomendas. a característica Ou, existe um código especial que impede que uma encomenda seja parcialmente fechada para manter o saldo abaixo do lote mínimo. Onde é que isto está explicitamente escrito na documentação?

Isto é exactamente o que está escrito no servidor (como último recurso). Talvez o terminal também reaja a tempo para evitar uma operação obviamente errada.

Por todas as regras lógicas é impossível tornar a transacção em volume inferior ao mínimo e tal transacção que irá alterar/expor o volume de um item ao que é inferior ao lote mínimo.

 
Interesting:

Isto é exactamente o que está especificado no servidor (como autoridade final). Talvez o terminal também reaja a tempo para evitar uma operação obviamente errada.

Por todas as regras lógicas, é impossível executar um acordo com um volume inferior ao lote mínimo e um acordo que altere/exponha o volume da posição ao que é inferior ao lote mínimo.

O que e onde está escrito exactamente "no servidor..."?

Há uma coisa má nas suas mensagens: especulação. Desculpem a oposição directa. :-)

Dê-me uma ligação específica na documentação onde está explicitamente escrito: é proibido executar parcialmente uma transacção de modo a que o saldo seja inferior ao lote mínimo.

 
voix_kas:

O que diz exactamente e onde diz "no servidor..."?

Há uma coisa má nas suas mensagens: especulação. Perdoem-me a minha oposição directa. :-)

Dê-me uma ligação específica na documentação que diz explicitamente: proibir a execução parcial de uma transacção de modo a que o saldo seja inferior ao lote mínimo.

Tente na Alpari (se não me engano, o seu lote mínimo é 0,10) com um guião sem quaisquer verificações para abrir um lote de, digamos, 0,01.

Veja o que a resposta (informação na estrutura) retorna sobre esta conta.

Também pode tentar gerir o Consultor Especialista com 0,01 lote no Testador de Estratégia sobre as contas de 2010.

Depois disso, continuaremos a conversa substantiva sobre o quê e onde é possível.

voix_kas:

Dê-me uma ligação específica na documentação, onde esteja claramente escrito: é proibido executar parcialmente uma troca de modo a que o saldo seja inferior ao lote mínimo.

Pode um átomo de hidrogénio ser mais pequeno que um átomo de hidrogénio. Talvez, mas isso já não seria o nosso universo ou as "nossas" leis físicas...

E que secção da documentação deve dizer isto em "O ABC" ou "Fundamentos de Matemática"?

Desculpem a oposição directa. :-)

Automated Trading Championship 2010
  • championship.mql5.com
Automated Trading Championship 2010
 
Interesting:

Experimente na Alpari (se não estou enganado, eles têm um lote mínimo de 0,10) com um guião sem quaisquer verificações para abrir um lote de, digamos, 0,01.

Ver o que é devolvido na resposta (informação na estrutura).

Também pode tentar gerir o Consultor Especialista com 0,01 lote no Testador de Estratégia sobre as contas de 2010.

Depois disso, continuaremos a conversa substantiva sobre o quê e onde é possível.

Desculpem a oposição directa. :-)

Caro Senhor, leu a minha pergunta.

Não estou a perguntar se é possível fazer uma transacção com um volume inferior ao lote mínimo estabelecido numa determinada conta/tipo de conta. Claro que não.

A minha pergunta é a seguinte: Do ponto de vista do conceito MQL5, é aceitável executar uma transacção com um lote parcial inferior ao lote mínimo permitido? (Claro que estamos a falar de ORDER_FILLING_CANCEL eORDER_FILLING_RETURN).

E não estamos a falar de conclusões empíricas, mas de requisitos/limitações específicas no "motor" MQL5, que foram oficialmente publicados.

 
voix_kas:

Caro Senhor, leu a minha pergunta.

Não estou a perguntar se é possível fazer uma transacção com um volume inferior ao lote mínimo estabelecido numa determinada conta/tipo de conta. Claro que não.

A minha pergunta é a seguinte: Do ponto de vista do conceito MQL5, é aceitável executar uma transacção com um lote parcial inferior ao lote mínimo permitido? (Claro que estamos a falar de ORDER_FILLING_CANCEL eORDER_FILLING_RETURN).

E não estamos a falar de conclusões empíricas, mas de requisitos/limitações específicas no "motor" MQL5 que foram oficialmente publicados.

Acabei de o verificar manualmente, tudo fecha bem. Abri 0,21 lote e fechei 0,2 lotes, comprei 0,01 lote permanece no mercado, embora o mínimo seja 0,1 lote. Verifiquei isto no Quaternário e não há erros no encerramento parcial também aí.
 
papaklass:

Quando uma ordem é executada, o volume da posição restante não pode ser inferior ao volume mínimo. Será um múltiplo do volume mínimo, mas não menos.

Dê-me um exemplo de como se pode mudar uma posição por 0,01 lote, sendo o mínimo possível 0,1 lote. Então, responderá à sua própria pergunta.

A sua interpretação é clara. Mas olha para a documentação:

SYMBOL_VOLUME_MIN Volume mínimo para um comércio

SYMBOL_VOLUME_STEP Etapa mínima de mudança de volume para a conclusão de um negócio

Isto é, negócios (e portanto ordens) com um volume de 0,1, 0,11, 0,12 ... são possíveis no nosso exemplo. etc.

e impossíveis são 0,09, 0,08, 0,07 ... etc.

Exactamente, nada é dito sobre o volume da posição.

Eis um exemplo: compramos 1,0 lote, fechamo-lo parcialmente com venda 0,95 (isto corresponde às condições de granulação de volume), a posição restante é de 0,05 lotes. E não podemos fechá-lo agora.

Devemos primeiro aumentar a posição para pelo menos 1,05 (uma encomenda não pode ser inferior a 0,1) e depois fechá-la completamente.

É absurdo que não possamos fechar completamente uma posição aberta.

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
sergey1294:
Acabei de o verificar manualmente e fecha-se na perfeição. Abri posição de compra com 0,21 lote e fechei posição de venda com 0,2 lote. 0,01 lote é deixado no mercado embora o mínimo fosse 0,1 lote. Verifiquei-o também no 4. Não há erros no fecho parcial também aí.

A posição restante de 0,01 lote está fechada por um comércio oposto do mesmo volume?

Ou seja, um comércio de venda com um volume de 0,01 passa (claro, fechando completamente a posição aberta)?

 
voix_kas:

Caro Senhor, leu a minha pergunta.

Não estou a perguntar se é possível fazer uma transacção com um volume inferior ao lote mínimo estabelecido numa determinada conta/tipo de conta. Claro que não.

A minha pergunta é a seguinte: Do ponto de vista do conceito MQL5, é aceitável executar uma transacção com um lote parcial inferior ao lote mínimo permitido? (Claro que estamos a falar de ORDER_FILLING_CANCEL eORDER_FILLING_RETURN).

Não estamos a falar de conclusões empíricas, mas de requisitos/restrições específicas na MQL5 que foram oficialmente publicadas.

A resposta é simples - não possível e não admissível, em todas as condições (caso contrário, é em SD de uma só vez. E não só "nós" ficaríamos indignados como testadores da parte do cliente, mas também os corretores que estão a testar a parte do servidor).

Respondendo à parte técnica da sua pergunta, responderei que a verificação existe na parte do cliente (terminal e testador), e sem quaisquer dúvidas na parte do servidor.

A verificação da parte do cliente é necessária, em primeiro lugar, para pré-contrar todo o tipo de violações das condições e regras comerciais, e em segundo lugar, para reduzir a carga no servidor e evitar "ataques" com pedidos incorrectos (o terminal não enviará simplesmente um pedido ao servidor se detectar uma violação das regras comerciais ou um erro gritante no pedido).

Por sua vez, o servidor (como última instância) também verificará necessariamente a correcção do pedido comercial (incluindo a correcção das consequências esperadas da execução deste pedido).