Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1124

 
Alexey Viktorov:
É assim que qualquer pessoa estabelece uma parada no preço. Somente os pontos são multiplicados por _Ponto e adicionados ao preço atual. Mas ninguém proíbe a especificação de um determinado preço.
Temos que estabelecer uma parada para todas as ordens abertas a um determinado preço. Por exemplo, abrimos três pedidos e o preço de parada, digamos, 1,32511, já está especificado no Expert Advisor. Isto é o que precisamos)
 
Anton Govorukhin:
Precisamos dele para estabelecer uma parada para todas as ordens abertas a um determinado preço. Por exemplo, três ordens são abertas e uma parada, por exemplo 1.32511, é escrita no Expert Advisor... É assim que deve ser)
Pegue qualquer EA da Kodobase que utilize paradas e modifique a parte onde a parada está definida. Isto é para 15 minutos de trabalho lento.
 

Olá pessoal, vocês podem me explicar a lógica do servidor->terminal->conselheiro? Tenho esta pergunta por causa da função de tratamento de erros na EA. Tanto quanto eu entendi do tutorial, TIC é: SERVIDOR ---> transmite cotações de preços ---> TERMINAL ---> dá controle à EA ---> ADVISOR (ciclo de tick-cycle processado) ---> para trás em resumo.

PERGUNTA: No início, quando o servidor transmite uma cotação, é apenas uma cotação, ou neste ciclo TICK há imediatamente um dado sobre vários erros no servidor (se isso acontecer, é claro) ?

É difícil programar sem entender a lógica

 
Evgeniy Oshurkevich:

Olá pessoal, vocês podem me explicar a lógica do servidor->terminal->conselheiro? Tenho esta pergunta por causa da função de tratamento de erros na EA. Tanto quanto eu entendi do tutorial, TIC é: SERVIDOR ---> transmite cotações de preços ---> TERMINAL ---> dá controle à EA ---> ADVISOR (ciclo de tick-cycle processado) ---> para trás em resumo.

PERGUNTA: No início, quando o servidor transmite uma cotação, é apenas uma cotação, ou neste ciclo TICK há imediatamente um dado sobre vários erros no servidor (se isso acontecer, é claro) ?

É difícil programar sem entender a lógica

Os erros acontecem independentemente dos carrapatos.
 
Vitalie Postolache:
Os erros acontecem independentemente dos carrapatos.

Eu não entendo então. As funções de tratamento de erros só são necessárias para casos comerciais, eu entendo corretamente? É antes de abrir um pedido ou antes de modificar um pedido. Isto é correto? Ou seja, antes de abrir um pedido, devo primeiro me certificar de que não há erros no servidor; se houver, eu abro o pedido...

Minha EA sempre enviou ordens sem mensagens de erro, provavelmente por causa da teimosia de minha EA. Pode ser por causa disso que minha EA não tenha sido autorizada a negociar. Não sei como fazê-lo, tenho que fazê-lo com um Expert Advisor, mas não sei como fazê-lo.

Se houver erros independentemente de erros, entãoa própriaGetLastError() pergunta ao servidor se há erros?

 
Evgeniy Oshurkevich:

Eu não entendo então. As funções de tratamento de erros só são necessárias para casos comerciais, eu entendo corretamente? É antes de abrir um pedido ou antes de modificar um pedido. Isto é correto? Ou seja, antes de abrir um pedido, devo primeiro me certificar de que não há erros no servidor; se houver, eu abro o pedido...

Minha EA sempre enviou ordens sem mensagens de erro, provavelmente por causa da teimosia de minha EA. Pode ser por causa disso que minha EA não tenha sido autorizada a negociar. Não sei o que fazer com eles, tenho que pedir-lhes ajuda e tenho que pedir-lhes detalhes.

Se houver erros independentemente de erros, entãoa própria GetLastError() pergunta ao servidor se há erros?

Bem, não há erros do lado do cliente no servidor, de forma alguma, nunca, em nenhum lugar, de modo algum, entenda isso para começar.

O servidor retorna um código numérico em resposta a uma ordem comercial do cliente, nada mais. Código 0 - tudo bem, o comando passou sem nenhum problema. Código maior que zero - há problemas, o terminal registra o código de erro e decifração.

O processamento do código de retorno do servidor não deve ser considerado apenas no Expert Advisor, o programador deve considerar os erros antes de enviar o comando para o servidor e evitar o envio de valores errados nas ordens de negociação que levarão a erros. Então, a comercialização usando EAs não será banida. Caso contrário, você receberá uma assinatura.

Exemplo: não há dinheiro suficiente na conta para comprar 1 lote de Euro, o consultor especializado não considera isso e bombardeia o servidor com pedidos para comprar 1 lote a cada tick. Naturalmente, o servidor irá, na melhor das hipóteses, ajustar a conta para o modo manual.

Se o Consultor Especialista verificar primeiro a margem necessária para comprar 1 lote, então ele compara este valor aos fundos disponíveis na conta e vê que não há fundos suficientes e não negociará, e em vez disso avisa o comerciante, então tudo está bem, este é um exemplo de bom comportamento.

Você deve considerar todas as condições de erro possíveis, corrigir o valor onde possível, e bloquear negócios e alertar o comerciante quando houver um problema.

 
Evgeniy Oshurkevich:

Não entendo então. As funções de tratamento de erros só são necessárias para casos comerciais, eu entendo corretamente? É antes de abrir um pedido ou antes de modificar um pedido. Isto é correto? Ou seja, antes de abrir um pedido, devo primeiro me certificar de que não há erros no servidor; se houver, eu abro o pedido...

Minha EA sempre enviou ordens sem mensagens de erro, provavelmente por causa da teimosia de minha EA. Pode ser por causa disso que minha EA não tenha sido autorizada a negociar. Não sei como fazê-lo, tenho que fazê-lo com um Expert Advisor, mas não sei como fazê-lo.

Se houver erros independentemente de erros, entãoa própria GetLastError() pergunta ao servidor se há erros?

O princípio: prestes a fazer uma operação comercial, logicamente devemos entender "haverá dinheiro suficiente para a transação? O próximo passo: "É o nível certo para o pedido, ou a distância o permitirá ou não? - verificar. Este é um cheque de seu lado para não tocar no servidor.

A seguir: verificações passadas e aprovadas com sucesso - enviamos um pedido ao servidor e aguardamos resposta, funçãoGetLastError() recebe uma resposta do servidor, se não houver erro "0", se houver erros, ele retorna o código de erro, respectivamente, e retorna seu pedido para revisão. Além disso, a tarefa é lidar com o erro recebido e decidir se o servidor deve ser novamente bombardeado ou apenas acalmado. Os códigos de erro estão na ajuda.

PS. como eu estava escrevendo, você já respondeu)

 
Vitalie Postolache eVitaly Muzichenko, uma grande humana OBRIGADO! )) Imagine, eu finalmente consegui))))
 
Evgeniy Oshurkevich:
Vitalie Postolache eVitaly Muzichenko, uma grande humana OBRIGADO! )) Imagine, eu finalmente consegui).
Excelente) Completando os detalhes. Imagine a situação: sua corretora cota até 23-59 na sexta-feira, mas seus pedidos comerciais são processados apenas até 23-50. Você tem um EA e seus estocásticos são cruzados em algum lugar e ele começa a enviar o pedido para o servidor e recebe o erro "O mercado está fechado", mas os carrapatos estão indo e ele envia a ordem novamente a cada carrapato. Você acha que o servidor vai gostar? Também é desejável considerar tais coisas.
 
Vitaly Muzichenko:
Muito bem) Então, deixe-me acrescentar. Imagine a situação: sua corretora cota até 23-59 na sexta-feira, mas os pedidos comerciais são processados apenas até 23-50. Você tem um EA e seus estocásticos são cruzados em algum lugar e ele começa a enviar pedidos para o servidor e recebe o erro "O mercado está fechado", mas os carrapatos continuam a marcar e ele envia pedidos novamente a cada carrapato, sem verificação. Você acha que o servidor vai gostar? Este tipo de coisas também deve ser considerado.
Já o recebi, e neste agradecimento, prescrevi a função de tratamento de erros antes de qualquer ordem, mas ainda estou me perguntando como retardar o Expert Advisor, se haverá erros por causa do meu erro e onde prescrevê-lo. Ou seja, tentei abrir um pedido, mas ocorreu um erro, como obtê-lo? Por exemplo, OrderSend(....); fiz uma transação, como posso obter informações se ela funcionou com sucesso?