Discussão do artigo "Usar MetaTrader 5 como um provedor de sinal para o MetaTrader 4"

 

Novo artigo Usar MetaTrader 5 como um provedor de sinal para o MetaTrader 4 foi publicado:

Análise e exemplos de técnicas de como a análise de negociação pode ser realizada na plataforma MetaTrader 5, mas executada pelo MetaTrader 4. O artigo irá mostrar-lhe como criar provedor de sinais simples em seu MetaTrader 5, e conectá-lo a vários clientes, mesmo executando MetaTrader 4. Além disso, você vai descobrir como você pode acompanhar os participantes do Campeonato de negociação automatizada na sua conta real do MetaTrader 4.

Negócios

Autor: Karlis Balcers

 

Pequenas atualizações para o DealClient:

- Se várias ordens estiverem abertas e houver solicitação de fechamento, o cliente fechará primeiro as ordens com lucro;

- Melhor tratamento de erros adicionado para corrigir problemas quando as ordens não eram abertas devido a uma conexão ruim. Foi adicionada uma nova função para verificar se a retransmissão é necessária:

//+------------------------------------------------------------------+
//| Verificar se outra tentativa resolverá o problema
//+------------------------------------------------------------------+
bool bCanRetryFixTheProblem(int error)
{
   switch(error)
   {
      case ERR_NO_ERROR:
      case ERR_NO_RESULT:
      case ERR_COMMON_ERROR:
      case ERR_SERVER_BUSY:
      case ERR_NO_CONNECTION:
      case ERR_TRADE_TIMEOUT:
      case ERR_INVALID_PRICE:
      case ERR_PRICE_CHANGED:
      case ERR_OFF_QUOTES:
      case ERR_BROKER_BUSY:
      case ERR_REQUOTE:
      case ERR_TOO_MANY_REQUESTS:
      case ERR_TRADE_CONTEXT_BUSY:
         return(true);
      default:
         return(false);
   }
}

/tsaktuo

Arquivos anexados:
 

Código DealClient atualizado: tsaktuodealclient.mq4 (ver comentário)

 

Excelente trabalho!!! Recebo o erro socketserver.dll que não é uma versão de 64 bits. Você pode fornecer?

 
939211:

Excelente trabalho!!! Recebo o erro socketserver.dll não é uma versão de 64 bits. Você pode fornecer?

Deve ser esta.
Arquivos anexados:
 
Muito obrigado pelo código e pela dll fornecidos. Estou tentando escrever uma parte do servidor para o mql4. O fragmento de código em que ocorre a conversão de cotações me deixou fora de serviço, mas não vou desistir tão facilmente :)
 

Tento não transmitir sinais, mas pelo menos o preço. O terminal do cliente mostra no protocolo que uma string com pontos de interrogação foi recebida:

2011.12.28 16:34:54 Client EURUSD,M15: Received(20): ????????????????8???

Como posso corrigir esse erro? Eu envio a string: <EURUSD;1.30675;1.30667>

 

Hi,

Estou executando o EA do servidor e o script do cliente e eles estão se comunicando entre si, mas recebo o seguinte tipo de erro no registro do MT4 e preciso de ajuda para corrigi-lo.

MT5 (Build 597) log:
2012.03.08 01:17:55 TsaktuoDealServer(EURUSD,H1) DEAL:<955492;EURUSD;SELL;IN;0.01;1.31080>


Registro MT4 (Build 409):
2012.03.08 01:17:55 TsaktuoDealClient EURUSD,H1: Ordem inválida recebida: "4444EEEESSSSEEEEIIII....11110000"

Alguma ideia?

 

Atualizei o MT4 para o Build 416 sem nenhuma alteração.

Além disso, é isso que obtenho ao compilar o script no MT4

Compilando 'TsaktuoDealClient.mq4'...
Function "struct2int" is not referenced and will be removed from exp-file
Function "str2struct" is not referenced and will be removed from exp-file
Function "htonl" is not referenced and will be removed from exp-file
Function "ntohl" is not referenced and will be removed from exp-file
Function "ntohs" is not referenced and will be removed from exp-file
0 erro(s), 5 aviso(s)

Alguém sabe o que está acontecendo?

 
Alguém pode corrigir o script para executar micro sufixos? Por exemplo, o mt5 é EURUSD e o mt4 é EURUSDm. Obrigado
 

Usei o produto por uma semana, houve dois erros, então desisti.