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
deixe os programadores resolverem o assunto. aqui está uma imagem de ecrã de 3 execuções deste guião.
Não está a funcionar para mim.
Bug - costumava funcionar, mas agora não funciona.
Obrigado pela sua mensagem.
Vamos continuar a procurar.
Encontrei um pequeno erro no método PrintCheckResult (ficheiro Trade.mqh, Classes de comércio, classe CTrade).
void CTrade::PrintCheckResult(void) const
{
printf("CheckResult");
// printf("%d,%f,%f,%f,%f,%f,%f,%f,'%s'", - o último mas um parâmetro é desnecessário
printf("%d,%f,%f,%f,%f,%f,%f,'%s'",
m_check_result.retcode,m_check_result.balance,m_check_result.equity,
m_check_result.margin,m_check_result.margin_free,m_check_result.margin_level,
m_check_result.comment);
}
Em vez de cordel: printf("%d,%f,%f,%f,%f,%f,%f,%f,'%s'", - comentado por mim
deve haver uma linha: printf("%d,%f,%f,%f,%f,%f,%f,%f,%f,'%s'",
Verifiquei, a função corrigida funciona correctamente.
Bug - costumava funcionar, mas agora não funciona.
Obrigado pela mensagem. Estará disponível na próxima actualização. Para que funcione na versão actual, utilizar fundição explícita para constante ou multiplicação em geral
{
// вот так работает
Print(TimeCurrent()+2*PeriodSeconds(PERIOD_D1));
// а вот так нет (а раньше работало)
datetime time_end=0;
time_end=TimeCurrent()+(long) 2*PeriodSeconds(PERIOD_D1);
Print(time_end);
}
Encontrei um pequeno erro no método PrintCheckResult (ficheiro Trade.mqh, Classes de comércio, classe CTrade).
Obrigado pela mensagem.
Em breve será fixado.
Obrigado pela sua mensagem. Estará disponível na próxima actualização. Para que funcione na versão actual utilize fundição explícita para constante ou multiplicação em geral
Obrigado. Se bem entendi, foi devido à conversão do tipo. É uma pena não haver tal mensagem em tempo de compilação, seria mais fácil de encontrar
Os erros ENUM_TRADE_RETURN_CODES devem ser interpretados correctamente a fim de os tratar correctamente. Há algum material para os descrever em pormenor?
Em particular, os seguintes erros não são completamente compreendidos:
10008
TRADE_RETCODE_PLACED
Encomenda efectuada
10021
TRADE_RETCODE_PRICE_OFF
Não há cotações disponíveis para processar o pedido
10028
TRADE_RETCODE_LOCKED
Consulta bloqueada para processamento
10029
TRADE_RETCODE_FROZEN
Ordem ou posição congelada
Alguém pode ajudar com esta questão?
Os erros ENUM_TRADE_RETURN_CODES devem ser interpretados correctamente a fim de os tratar correctamente. Há algum material para os descrever em pormenor?
Em particular, os seguintes erros não são completamente compreendidos:
10008
TRADE_RETCODE_PLACED
Encomenda efectuada
10021
TRADE_RETCODE_PRICE_OFF
Não há cotações disponíveis para processar o pedido
10028
TRADE_RETCODE_LOCKED
Consulta bloqueada para processamento
10029
TRADE_RETCODE_FROZEN
Ordem ou posição congelada
Alguém pode ajudar com esta questão?
Todos os códigos acima referidos referem-se aos códigos que são devolvidos pelo servidor em resposta ao pedido do terminal. É por isso que tudo é dado na secção "Códigos de retorno do servidor de troca".
Seria lógico assumir que a lista contém mais do que apenas erros.
Agora em ordem.
Quanto a
10008
TRADE_RETCODE_PLACED
Encomenda efectuada
Seria lógico supor que esta resposta não é um erro, mas simplesmente informa o cliente (o terminal de negociação) de que a ordem foi colocada com sucesso.
Neste caso, há três soluções possíveis:
1. Não processar de todo a resposta;
2. processar a colocação da encomenda no bloco OnTrade() - bastante aceitável, mas não muito correcto na minha opinião;
Na minha opinião, esta é a melhor maneira de processar um comércio mecânico.
PS
Prefiro processar as respostas do servidor no local da encomenda e apanhar o resultado das acções de um comerciante, servidor ou outro Expert Advisors no OnTrade().
Por exemplo, na OnTrade pode apanhar as operações comerciais do comerciante (colocar ou apagar uma ordem, ou trabalhar com posições).
Com respeito a
10029
TRADE_RETCODE_FROZEN
A ordem ou posição é congelada
Há um certo nível em que uma posição ou uma ordem são "congeladas" (quaisquer operações com elas são proibidas).
Este nível é uma distância ao preço actual ao qual o servidor proíbe quaisquer acções com a ordem ou posição. Esta distância é medida em pips e é definida para cada símbolo.
Pode ser obtido usando SymbolInfoInteger() com oparâmetro SYMBOL_TRADE_FREEZE_LEVEL.
Se obtiver tal resposta do servidor, deverá esperar que uma de duas coisas aconteça:
1. O preço não deslocou a distância necessária (maior do que a especificada nas propriedades do símbolo);
2. a ordem ou posição não funciona nas condições nelas estabelecidas.
Com respeito a
10021
TRADE_RETCODE_PRICE_OFF
Sem citações para processar o pedido
Provavelmente, ao obter esta resposta, deverá verificar o nome do símbolo (só por precaução), certificar-se de que o símbolo é seleccionado (importante para testadores e multicasts), verificar a disponibilidade do histórico, incluindo no servidor (se precisar de ser descarregado), provavelmente certificar-se de que o mercado está aberto e de que é possível negociar no símbolo.
PS
Embora aqui seja necessário especificar nos promotores
E quanto a
10028
TRADE_RETCODE_LOCKED
Pedido bloqueado para processamento
Esta é provavelmente a mais específica das respostas do servidor listadas acima... é mais provável que precise de esclarecimentos por parte dos programadores (vou apenas assumir que provavelmente deve esperar um certo tempo)...
Em relação a
10029
TRADE_RETCODE_FROZEN
Ordem ou posição congelada
Há um certo nível abaixo do qual uma posição ou uma ordem são "congeladas" (quaisquer acções com elas são proibidas).
Este nível é uma distância ao preço actual ao qual o servidor proíbe quaisquer acções com a ordem ou posição. Esta distância é medida em pips e é definida para cada símbolo.
Pode ser obtido usando SymbolInfoInteger() com oparâmetro SYMBOL_TRADE_FREEZE_LEVEL.
Se obtiver tal resposta do servidor, deverá esperar que uma de duas coisas aconteça:
1. O preço não deslocou a distância necessária (maior do que a especificada nas propriedades do símbolo);
2. A ordem ou posição não cumpriu as condições nelas estabelecidas.
Obrigado pela resposta detalhada. Compreendo o código "10029: TRADE_RETCODE_FROZEN: Ordem ou posição é congelada".
No entanto, ainda temos perguntas relativas às restantes (quero saber a resposta exacta e não apenas palpites):
10008
TRADE_RETCODE_PLACED
Encomenda efectuada
10021
TRADE_RETCODE_PRICE_OFF
Não há cotações disponíveis para processar o pedido
10028
TRADE_RETCODE_LOCKED
O pedido é bloqueado para processamento
Em particular, não é muito claro o que significa "10008: Ordem foi colocada", porque quando a ordem é colocada em fila de espera no servidor, é-lhe atribuído um bilhete e o código "10009: TRADE_RETCODE_DONE: Pedido executado" é devolvido.