Erros, bugs, perguntas - página 1723

 

Como copiar (mantendo caminhos relativos) todos os ficheiros de projectos para uma pasta separada.

Por exemplo, eu quero partilhar um código. Puxa cerca de uma dúzia de ficheiros mqh de diferentes locais.

Agora tenho de procurar estes ficheiros manualmente, muitas vezes não é possível encontrá-los todos ou levar algo desnecessário. Como automatizar este processo para poder partilhar fontes?

 

Como é que elimino um projecto com todos os seus ficheiros?

Descarreguei um projecto com uma dúzia de ficheiros do terminal da kodobase, mas como é que o apago?

 

Erro de compilação

class A {};
template<typename T> //---------------------------------------------------//(1)
T *f( T* t ) { return t; }              //      A *f(       A* )          //(2)
                                        //const A *f( const A* )          //(3)
template<typename T> //---------------------------------------------------//(4)
 T *f( T* t, const T* ) { return t; }    //      A *f(       A*, const A* )//(5)
void OnStart()
{
    const A *a;
    const A *a1 = f( a );    // ошибка не обоснована: T -> const A, и в отсутствии (6) применимо (3)
          A *a2 = f( a );    //ошибка    обоснована, но по другой причине: A* = const A*
                  f( a, a ); //ошибка    обоснована, но по другой причине: T -> A, и отсутствует f(const A*,const A*)
}

(*) Em geral, em padrão (1) tanto A->(2) como const A->(3) podem ser substituídos por T. Ao contrário, por exemplo, do modelo (4), onde apenas A->(5) pode ser substituído por T.

Agora apenas a substituição A->(2) funciona, por isso para uma utilização plena temos de fazer dois modelos em vez de um:

template<typename T> //---------------------------------------------------//(1)
      T *f(       T* t ) { return t; }
template<typename T> //---------------------------------------------------//(6)
const T *f( const T* t ) { return t; }

Nota: A definição explícita (6) tem maior prioridade do que o caso geral (*)

Total: Na ausência de padrão (6), esperava-se que o padrão (1) com assinatura (3) fosse aplicado

 
A100:
Estou realmente a pedir-lhe que coloque algo na kodobase! Para fins educacionais.
 
1) O MT5 actualiza com algum atraso as posições em aberto e o histórico de negociação após uma chamada de OrderSend? Em caso afirmativo, qual é o tempo limite de espera recomendado?

2) A mesma pergunta para o MT4, para comparação.
 

RickD:
1) Обновление открытых позиций и торговой истории в MT5 после вызова OrderSend происходит с некоторой задержкой? Если да, какой рекомендуется timeout для ожидания?

O MT5-OrderSend NÃO está totalmente sincronizado - não há sincronização com o ambiente comercial. Isto significa que as leituras da história não correspondem à situação real.

Não há timeout fora de questão. Não existe uma solução fiável para o problema, porque tem de lidar com questões de sincronização ao nível do terminal, não ao nível do servidor.

De facto, os utilizadores do MT5 estão a enfrentar o que os criadores de pontes MT4 estão a enfrentar.

Se um OrderSend é enviado, tem de LEMBRAR (é aqui que se encontra a potencial vulnerabilidade) que é feito. Depois ignorar o histórico actual (ambiente de negociação) até que a mensagem correspondente chegue à OnTrade. Uma vez chegado, LEMBRE-SE de ESQUECER.

Quando não há LEMBRE-SE, pode confiar na história como no MT4.

2) A mesma pergunta para o MT4, para comparação.
O MT4-OrderSend é totalmente sincronizado.
 

Версия и битность терминала

Versão: 5.00, construção 1445 (07.10.2016), 32 bit.

Descrição do problema

O indicador não copia os dados dos indicadores padrão (MT5 incorporado) de outro horizonte temporal (diferente do horizonte temporal actual do gráfico onde o indicador está instalado). Ao mesmo tempo pode ser obtida a "pega" do indicador padrão, mas a função CopyBuffer() retorna sempre -1. No modo de visualização do testador, o problema não ocorre, mas no terminal do gráfico (ao qual o indicador está anexado) o problema está sempre presente.

Sequência de acções

descrita acima.

Resultado obtido

Descrito acima.

Resultado esperado

Cópia correcta dos dados dos indicadores padrão (e de preferência personalizados) de outros períodos de tempo para o indicador.

Informação adicional

Em anteriores "constrói" este problema não ocorreu.

Alguém se deparou com um problema deste tipo? É um "bug" do terminal ou da mina?

 

fxsaber:

...Se uma OrderSend é enviada, é preciso LEMBRAR (é aqui que reside a potencial vulnerabilidade) que é feita. A seguir, ignorar a história actual (ambiente de negociação) até chegar a mensagem apropriada da OnTrade. Assim que chegar, o REQUERIDO deve ser PROIBIDO...

Ou a minha memória tem fugas, ou a documentação na parte OnTrade foi actualizada:

...Se a chamada de função OrderSend() for bem sucedida e retornar verdadeiro, isto significa que o servidor de negociação tem em fila de espera a ordem a ser executada e lhe atribuiu um número de bilhete. Assim que o servidor processar esta encomenda, o evento comercial será gerado. E se o utilizador se lembrar do valor do bilhete, pode descobrir o que aconteceu exactamente à encomenda usando este bilhete ao processar o evento OnTrade()...

Por outras palavras, desencadear a OnTrade no i-ésimo passo é uma garantia de que a encomenda é aceite no servidor.

 
Dennis Kirichenko:

Ou a minha memória está confusa ou a parte da documentação da OnTrade foi actualizada:

Por outras palavras, desencadear o OnTrade no passo i é uma garantia de que a encomenda é aceite no servidor.

Recordar o bilhete (não o facto de que será devolvido pela OrderSend) ou o próprio facto de que a OrderSend com verdadeiro retorno foi feita é REAL.
 
fxsaber:
Recordar o bilhete (não o facto de que será devolvido pela OrderSend) ou o facto de que a OrderSend com verdadeiro retorno foi feita é OBRIGATÓRIO.

Tudo está bem aí, a colocação de encomendas deve ser controlada através da OnTradeTransaction, a propósito, se se ligar directamente à bolsa através do Plaza2, a situação é a mesma - é necessário controlar a chegada de mensagens sobre a colocação de encomendas. Em MT4, esta função é síncrona, mas a mesma opção está disponível em MT5, só que neste caso, a lógica irá parar até a função não receber resposta.

Se precisar, então posso enviar-lhe a classe de controlo, embora esta esteja escrita para colocação no mercado, mas em breve finalizá-la-ei para os limitadores.