Maksym Mudrakov: reiniciou a EA num gráfico diferente, está a funcionar correctamente. Isso é estranho. Mas obrigado pela ajuda.
Especialmente se tiver uma entrada variável - uma variável deste tipo não pode ser reatribuída no código - isto deixa a opção de um segundo programa (EA ou indicador) que secretamente mexe em torno e emite o seu comentário.
Quem entende a resposta, por favor explique. Ainda não compreendo porque é que a OrderSend é considerada normal
Tanto quanto sei, a OrderSend apenas espera até a encomenda ser colocada em fila de espera para processamento no servidor, mas não até o resultado do processamento.
Комбинатор: Tanto quanto sei, a OrderSend apenas espera até a encomenda ser colocada em fila de espera para processamento no servidor, mas não até o resultado do processamento.
Há um guião de reprodução de OrderSend-bug na aplicação. Percorre o Market Watch e abre o BuyLimit em cada símbolo. Depois disso, tenta imediatamente modificá-lo (define TP) e depois apagá-lo. Se a modificação ou eliminação da encomenda for impossível, o guião pára com uma mensagem correspondente.
Tudo é feito através de OrderSend sincronizado. E quase imediatamente deparamo-nos com uma situação em que, após uma EncomendaSendada com êxito (definição de BuyLimit), nada pode ser feito (modificar ou apagar) com a encomenda pendente.
quando umaposição é aberta com sucesso por uma ordem de mercado, obtém-se sempre um Resultado.deal zero?
Do SD
Não é garantido que o bilhete de negócio resultante seja preenchido. O seu preenchimento ou não depende do modo de execução do instrumento e das configurações do servidor em particular.
Quem criou um resultado.deal não zero - tomar medidas.
...
void OnTick(){
Comment(Somevalue);
}
O programa MQL5 imprime o comentário:"1487811600"
Porque é que isso acontece? Como emitir o valor correcto da cadeia de caracteres?
Procure por um erro. Ou postar código reprodutível completo. Código de verificação
//| Test.mql5 |
//| Copyright 2017, CompanyName |
//| http://www.companyname.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link "http://wmua.ru/slesar/"
#property version "1.00"
#property script_show_inputs
//--- input parameters
input string Somevalue="Maxim";
//+------------------------------------------------------------------+
//| Script program start function |
//+------------------------------------------------------------------+
void OnStart()
{
Comment(Somevalue);
}
//+------------------------------------------------------------------+
não reproduz o erro.
Também recomendo que substitua Comentar por Imprimir - há uma hipótese de outro programa sobrepor trivialmente o comentário no gráfico.
reiniciou a EA num gráfico diferente, está a funcionar correctamente. Isso é estranho. Mas obrigado pela ajuda.
Quem entende a resposta, por favor explique. Ainda não compreendo porque é que a OrderSend é considerada normal
Tanto quanto sei, a OrderSend apenas espera até a encomenda ser colocada em fila de espera para processamento no servidor, mas não até o resultado do processamento.
Há um guião de reprodução de OrderSend-bug na aplicação. Percorre o Market Watch e abre o BuyLimit em cada símbolo. Depois disso, tenta imediatamente modificá-lo (define TP) e depois apagá-lo. Se a modificação ou eliminação da encomenda for impossível, o guião pára com uma mensagem correspondente.
Tudo é feito através de OrderSend sincronizado. E quase imediatamente deparamo-nos com uma situação em que, após uma EncomendaSendada com êxito (definição de BuyLimit), nada pode ser feito (modificar ou apagar) com a encomenda pendente.
Resultado de funcionamento
2017.02.23 14:24:49.828 OrderSend-StartedBug (Si-3.17,M1) DeleteError GetLastError() = 4756 EnumToString((ENUM_ORDER_STATE)OrderGetInteger(ORDER_STATE)) = ORDER_STATE_STARTED
Caros programadores, isto é ou não um bug OrderSend ou não?
SZZ, no entanto, OrderSend at TRADE_ACTION_DEAL não termina enquanto a ordem correspondente tiver o status STARTED.
Toda a diversão do guião pode ser experimentada lentamente no servidor FXOpen-MT5.
quando umaposição é aberta com sucesso por uma ordem de mercado, obtém-se sempre um Resultado.deal zero?
Error in OpenCL initialization. Error code=5101