Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1266
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
Bons tempos para todos vós!
Tenho uma pergunta sobre a função ResultDeal() na classe CTrade.
O problema é que no Testador de Estratégia esta função devolve o bilhete de troca sem qualquer problema, mas quando se atira a EA no gráfico ela devolve sempre "zero", apesar de a função ResultRetcode() devolver sempre "TRADE_RETCODE_DONE".
Exemplo de código:
Diário de execução no Testador:
Diário de execução na Carta:
O que é que estou a fazer mal? Como posso obter um bilhete de troca em tempo real?
E a segunda questão (de menor importância), porquê imediatamente após uma execução comercial a função PositionsTotal() retorna "zero"? E mostra dados fiáveis com o próximo tick. É possível obter esta informação de uma só vez?
Bons tempos para todos vós!
Tenho uma pergunta sobre a função ResultDeal() na classe CTrade.
O problema é que no Testador de Estratégia esta função devolve o bilhete de troca sem qualquer problema, mas quando se atira a EA no gráfico ela devolve sempre "zero", apesar de a função ResultRetcode() devolver sempre "TRADE_RETCODE_DONE".
Exemplo de código:
Diário de execução no Testador:
Diário de execução na Carta:
O que é que estou a fazer mal? Como posso obter um bilhete de troca em tempo real?
E a segunda questão (de menor importância), porquê imediatamente após uma execução comercial a função PositionsTotal() retorna "zero"? E mostra dados fiáveis com o próximo tick. É possível obter esta informação de uma só vez?
Hmm... De repente os dados de que preciso em tempo real são devolvidos pela função ResultOrder() da mesma classeCTrade, embora eu não tenha usado ordens pendentes...
A minha pergunta é a mesma: O que estou eu a fazer mal?
Há uma macro como esta.
Utilizo-a assim.
Warning"Warnig сработал. ");
Pergunta: O que precisa de ser corrigido na definição macro para poder utilizá-la desta forma ?
Warning("Warnig сработал. ");
ou seja, com um parêntese entre "Warning" e "Warnig" funcionou. "Tentou usar um parêntesis na definição macro
mas o compilador não me deixa usar um parêntese.
Hmm... De repente, a função ResultOrder() da mesma classeCTrade devolve os dados de que preciso em tempo real, embora eu não tenha usado ordens pendentes...
A questão é a mesma: O que estou eu a fazer mal?
Basta compreender o sistema de ordem do MT5, ordem - comércio - posição.
ResultOrder é a ordem de abertura. A posição será com POSITION_IDENTIFIER igual ao bilhete desta encomenda.
Todos os acordos podem ser encontrados na história através do identificador de posição. Não confundir com o bilhete da posição, este pode mudar, e o identificador é constante.
s.s. O testador é diferente na medida em que não há atraso na execução da ordem e o negócio é criado imediatamente. Na vida real, o tempo passa e na altura da criação bem sucedida de uma ordem ainda não há acordo, tem de ser apanhado nos eventos OnTradeHá uma macro como esta.
Utilizo-a assim.
Pergunta: O que precisa de ser corrigido na definição macro para poder utilizá-la desta forma ?
ou seja, com um parêntese entre "Warning" e "Warnig" funcionou. "Tentou usar um parêntesis na definição macro
mas o compilador não o deixa usar um parêntese.
quer usar um formulário paramétrico, mas especificou um formulário não paramétrico. deve ser assim
Não o expliquei bem. Comecemos desde o início. Agora estou a usar a macro desta forma:
Warning,"Warnig сработал. i=",i);
Aqui está a macro em si:
Na macro chamada entre "Aviso" e ");" Um número arbitrário de parâmetros de tipos arbitrários. Tudo isto é conseguido através da recarga repetida da funçãoWrite.
Pergunta. O que devo corrigir no macro para lhe poder chamar assim:
Warning("Warnig сработал. i=",i);
Não o expliquei bem. Comecemos desde o início. Agora estou a usar a macro desta forma:
Aqui está a macro em si:
Na macro chamada entre "Aviso," e ");" Um número arbitrário de parâmetros de tipos arbitrários. Tudo isto é conseguido através da recarga repetida da funçãoWrite.
Pergunta. O que deve ser corrigido no macro para permitir a sua chamada desta forma:
Resposta: também recarregar a macro várias vezes)
Mas é melhor usar o operador + para cordas e converter tudo em cordas, então não precisa de uma versão da função (e macro) com muitos parâmetros
Basta compreender o sistema de ordem do MT5, ordem - comércio - posição.
ResultOrder é a ordem de abertura. A posição será com POSITION_IDENTIFIER igual ao bilhete desta encomenda.
Todos os acordos podem ser encontrados na história através do identificador de posição. Não confundir com o bilhete da posição, este pode mudar, e o identificador é constante.
s.s. O testador é diferente na medida em que não há atraso na execução da ordem e imediatamente nasce um acordo. No comércio real, o tempo passa e no momento da criação bem sucedida da ordem ainda não há acordo, tem de ser apanhado nos eventos OnTrade.Olá! Como posso aceder às propriedades indicadoras de um EA? Por exemplo, quero mudar a cor da linha de um EA se souber o manípulo indicador. Procurei-o, não consegui encontrá-lo, talvez esteja a procurar demasiado?
Um indicador para isto deve ter um parâmetro de cor de entrada. Ou seja, deve ser um indicador personalizado.