Desenvolvedores! Testa sequer o que cria? - página 11

 

papaklass, c-4

O modelo de resposta do servidor existente através da OnTradeTransaction

fica-me bem, e funciona no meu EA, MAS

a minha primeira mensagem foi que nenhuma mensagem foi devolvida(de todo) do servidor,

que o negócio foi feito (a ordem foi preenchida por 1) e o segundo erro foi

O segundo erro foi que, em vez de uma resposta de que a encomenda foi colocada uma resposta de que foi parcialmente executada (duplicada).

O problema não foi com o manipulador (não tenho queixas contra ele) mas sim com a resposta do servidor (uma resposta não chegou de todo e a outra estava errada).

O modelo de trabalhar com as respostas do servidor no meu EA NÃO se baseia na sequência de respostas do servidor, MAS a resposta deve ser e ser correcta.

Eis o que aconteceu (foto do primeiro post):

O Conselheiro Especialista fez uma encomenda com um volume de 3.

A ordem foi executada por um - as respostas do servidor estão correctas.

Então o Consultor Especialista modificou a ordem - a resposta do servidor é ORDER_STATE_PARTIAL - e a resposta deveria ter sido ORDER_STATE_PLACED.

Depois a ordem foi executada por mais 1 tempo sem qualquer mensagem do servidor.

Alguns dias depois (imagem abaixo) repeti esta sequência - o resultado mudou (provavelmente os criadores corrigiram alguma coisa),

Recebi uma mensagem de que a transacção ocorreu (segundo 21:15:02.232), mas a mensagem sobre a modificação ainda não estava correcta.

É também muito alarmante que três respostas do servidor tenham vindo ao mesmo tempo (21:14:53.049)!

É evidente que tudo funciona no mesmo fio e que as mensagens se acumulam, mas mesmo assim.... Estou a impedir que a EA funcione,

para receber mensagens.

 

Papaklass!

A questão é que *.ex5 programas funcionam num único fio, se

haverá muitos manipuladores, será ainda pior.

 
papaklass:

Agora verifiquei especificamente a operação OnTrade e OnTradeTransaction.

Três manipuladores OnTrade ou quatro manipuladores OnTradeTransaction disparam numa ordem de negociação para abrir uma posição de mercado (uma ordem de mercado). Só preciso de um manipulador OnPositionOpened para accionar.

Para fechar uma posição por um stop loss/stake profit, há 3 manipuladores OnTrade ou 3 manipuladores OnTradeTransaction accionados em vez de um OnPositionClosed. A redundância é óbvia!

Estas respostas múltiplas dos operadores de eventos existentes (OnTrade/OnTradeTransaction) não dão uma resposta clara à pergunta: "Que evento comercial aconteceu e qual é o resultado de uma operação comercial? Isto suscita a questão: "Porquê todo este problema?"

Com este processamento redundante de eventos comerciais, podem facilmente ocorrer colisões de diferentes tipos, que levarão a erros, especialmente durante o envio em massa de ordens comerciais pelos clientes.

Portanto, o que aconteceu no seu caso ou no caso de komposter (timeout) não me surpreende pessoalmente.

A forma como os eventos OnTrade e OnTradeTransaction são implementados lembrou-me um episódio que aconteceu há 20 anos... Lembro-me de ler críticas de novos jogos para a Spectrum, especialmente memoráveis, onde foi escrito: "... o som do jogo é bom, pois pode desligá-lo...". Tenho quase a mesma atitude em relação aos eventos OnTrade e OnTradeTransaction, eles são bons só porque não se pode usá-los.
 
SWA:
A forma como os eventos OnTrade e OnTradeTransaction são implementados lembrou-me um episódio de há 20 anos... Lembro-me de ler resenhas de novos jogos para o Spectrum, especialmente memorável foi uma resenha de um jogo, onde foi escrito assim: "... o som do jogo é bom como se pode desligá-lo...". Tenho sensivelmente a mesma atitude em relação aos eventos OnTrade e OnTradeTransaction, eles são apenas tão bons como não os usar.

Eu, por outro lado, uso (com sucesso) estes dois manipuladores!

Se, por alguma razão, a OnTradeTransaction não funcionar, eu verifico

na OnTrade - muito conveniente porque a OnTradeTransaction,

e depois OnTrade.

 
Mikalas:

Eu, por outro lado, uso (com sucesso) estes dois manipuladores!

Se, por alguma razão, a OnTradeTransaction não funcionar, eu verifico

na OnTrade - muito conveniente porque a OnTradeTransaction,

e depois OnTrade.

Pessoalmente, penso que esta conveniência é questionável: perda de tempo e sobrecarga do canal cliente-servidor com pedidos de informação exacta sobre o que aconteceu no servidor. Pode ser uma situação, quando a informação duramente obtida do servidor já não está actualizada e fiável no momento em que a recebe.
Seria realmente conveniente utilizar estes eventos (pelo menos para mim) se o Consultor Especialista gerasse um pedido ao servidor com a frequência necessária para um algoritmo de negociação como este
bool TradeTransaction(TIME_REQUEST);
bool Trade(TIME_REQUEST);
// где временная метка может принимать значение к примеру TIME_REQUEST=TimeTradeServer или TIME_REQUEST=TimeGMT

E o servidor responderia imediatamente a esse pedido com informações completas...

Contudo, assumindo que existem "razões objectivas intransponíveis" que impossibilitam a implementação de tal conveniência, contento-me com o que tenho:)

 

Quem o pode fazer...:)

A propósito, descarregue o API Plaza II a partir do servidor de troca e compreenderá de onde crescem as "pernas".

 
Mikalas:

Por favor não seja mal-educado! A propósito, já são 10!

E está no seu direito de não ler de todo o que aqui está escrito!

Para que serve então o tema? Só para gritar?

Se achar que existe um erro, confirme-o com registos e código (ninguém irá decifrar as suas fotografias).
Se quiser encontrar uma solução fiável, ouça o que eles dizem (abandonar o modelo do evento e analisar o estado actual).

Utilizaria a OnTradeTransaction ouOnTrade apenas para uma reacção imediata à alteração da situação comercial. Mas todo o processamento seria colocado num único manipulador, como sugerido por Vasiliy(OnRefresh()).

Boa sorte!

 
komposter:

Para que serve então o tema? Só para gritar?

Se achar que existe um erro, confirme-o com registos e código (ninguém descodificará as suas fotografias).
Se quiser uma solução fiável, ouça o que eles dizem (abandone o modelo orientado para o evento e analise o estado actual).

Utilizaria a OnTradeTransaction ouOnTrade apenas para uma reacção imediata à alteração da situação comercial. Mas todo o processamento seria colocado num único manipulador, como Vasiliy sugeriu(OnRefresh())).

Boa sorte!

komposter!

Ou lê tudo o que escreveu ou...

2.O que quer que escreva nestas páginas é MEU direito como participante de um fórum,

e Rude ANYTHING está longe de ser apropriado!

3. Onde quer que trate o erro, se a resposta do servidor não for o que deveria ser - o resultado será o mesmo - ERROR!

4. Provavelmente não está a negociar sozinho.

 
Mikalas:
BURNING REMOTE é a resposta a um ataque gritante! Qualquer que seja a pergunta, essa é a resposta. Podia ter sido um herói... ))
 

pronych e ....

1.>> LUCKY REMOTE é a resposta a um ataque gritante! Qualquer que seja a pergunta, essa é a resposta. >> Podia ter sido um herói... ))

Provavelmente tem a percepção correcta do mundo à sua volta...

2. VOCÊS são PROGRAMANTES ou são "ESCRITORES"?

3. Alguém responde a uma simples pergunta: O que deve o servidor responder ao comando "Modificar Ordem"?

4. Porquê então documentação? Artigos? Feche os olhos e poupe o que quiser! O CLIENTE PAGA de qualquer maneira (e é ele que deve ser drenado também)!

bool CheckMoney()
{
  return(ВАСЯ_ПУПКИН);
}
Razão: