Auto-aprendizagem da linguagem MQL5 a partir do zero - página 23
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
Você começou com o pé errado. Você entende tudo o que está no código? Todos os operadores, palavras-chave?
Verifique a pergunta sobre o código:
O que significam estas linhas?
Esses foram meus comentários sobre o roteiro:
/* Seguindo em frente. Após enviar os pedidos ao servidor comercial, precisamos saber se uma ordem pendente foi definida
ou não. Para isso, vamos usar a função OrderSend que foi projetada para operações comerciais
, enviando pedidos ao servidor comercial. Se o envio de um pedido para
falhar (um ponto de exclamação na frente de qualquer função indica um resultado negativo de sua execução
), então emitimos uma mensagem com um código de erro no seguinte formato: "OrderSend error %d"
e GetLastError(). Vamos entender o que é "OrderSend error %d" e o que é GetLastError().
Note que "OrderSend error %d" está entre aspas duplas. Isto significa que
imprimirá o texto com a tradução literal "OrderSend error %d". Agora vamos entender o que significa
%d. Na seção PrintFormat da Referência MQL5, encontramos: "Se uma cadeia de formatos for seguida por mais parâmetros,
, esta cadeia deve conter especificações de formato que definam o formato de saída desses parâmetros.
Uma especificação de formato começa sempre com um sinal de porcentagem (%)". O que é um d? Na mesma seção
logo abaixo encontramos: "Tipo d - especifica o número mínimo de dígitos a serem emitidos. Se o número de dígitos em
for menor do que a precisão especificada, o valor de saída é acolchoado com zeros à esquerda.
O valor de saída não é truncado se o número de dígitos a serem emitidos for maior do que a precisão especificada. Com isto
que resolvemos, agora precisamos entender o que é GetLastError(). Novamente procurando no livro de referência: "GetLastError()
retorna o conteúdo da variável de sistema _LastError, ou seja, a variável na qual
é armazenado o valor do último erro que ocorreu durante a execução do programa mql5.
Cumprimentos, Vladimir.
Portanto, ainda não descobri e há trabalho a ser feito.
Cumprimentos, Vladimir.
Novamente, comece com a descrição do que seu código faz. Este roteiro coloca o SL e TP nas posições. Como não sabemos se eles estão lá, assumimos que as posições estão lá, e que existem ambas (conta hedge). A condição de colocar paradas fará sempre uma verdadeira.... Portanto, é assim. Trabalhar através do código até o final. ))))
E tente entender cada linha do código. Desde o início.
Esta condição não é de todo necessária ali. Que papel ele desempenha? Você pode explicar?
Eu queria estabelecer uma condição oculta para definir ordens de Stop de Compra e Stop de Venda pendentes.
Cumprimentos, Vladimir.
Checado mais algumas vezes - o compilador não dá nada.
Cumprimentos, Vladimir.
E por que deveria produzir algo? Você não conhece macros, não sabe como trabalhar com eles, mas os usa, então espera algum erro ou pelo menos um aviso deles. Se você tivesse pelo menos uma vez lançado seu roteiro na demonstração e o tivesse executado em todos os modos, você teria visto que ele não funcionou. Mas você vai mais longe. Você adiciona um stop-loss, take-profit, e na margem eles dizem: "Pare a máquina!
Novamente, comece descrevendo o que seu código faz. Este roteiro coloca um SL e TP nas posições que você colocou. Como não sabemos se eles estão lá, assumimos que as posições estão lá, e que existem ambas (conta de cobertura). A condição de colocar paradas fará sempre uma verdadeira.... Portanto, é assim. Trabalhar através do código até o final. ))))
E tente entender cada linha do código. Desde o início.
Obrigado pela dica de verificar se há alguma vaga em aberto no início.
Cumprimentos, Vladimir.
Eu queria estabelecer uma condição oculta para definir ordens de Stop de Compra e Stop de Venda pendentes.
Atenciosamente, Vladimir.
Diga-me, escrever uma macro para isso é a única maneira de estabelecer tal condição? As condições, como eu as entendo, são estabelecidas apenas por macros? Ou você pode fazê-lo de alguma outra forma? E se existe outra maneira, por que você escolheu esta macro? Deve ter havido alguma necessidade? Mas o que foi?
Obrigado pela dica de verificar primeiro se há alguma vaga em aberto.
Cumprimentos, Vladimir.
Escrever uma macro para isto é a única maneira de estabelecer esta condição? Pelo que entendi, as condições são estabelecidas apenas por macros? Ou existe alguma outra maneira? E se existe outra maneira, por que você escolheu a macro? Deve ter havido alguma necessidade? Mas o que foi?
Não, não havia necessidade, simplesmente encontrei #define ao estudar modificadores e decidi experimentá-lo no roteiro.
Atenciosamente, Vladimir.
Eu queria estabelecer uma condição oculta para definir ordens de Stop de Compra e Stop de Venda pendentes.
Cumprimentos, Vladimir.
... Se você executasse seu roteiro em uma demonstração por uma vez e o executasse em todos os modos, você veria que não funciona. Mas você está dando um passo adiante. Você adiciona um stop loss e tira lucro, e a costa já está gritando: "Pare o carro"!
Vasiliy, eu dirigi o roteiro mais de uma vez e todos os modos funcionam, ou seja, eu coloquei duas ordens pendentes Buy Stop e Sell Stop na distância que especifiquei. O Stop Loss e Take Profit também são definidos na distância necessária. Os pedidos funcionam. Eu gostaria de anexar aqui uma imagem de tela.
Cumprimentos, Vladimir.