Forex dde server
Metatrader 5 - DDE - Server O que é um Metatrader 5 - DDE - Server e por que é um Metatrader 5 - DDE - Servidor necessário O Metatrader 5 é a próxima versão após o Metatrader 4, a plataforma de negociação líder mundial. Comparado ao Metatrader 4, o Metatrader 5 mudou e melhorou em muitos campos. Mas algumas funções não estão mais disponíveis na nova versão do Metatrader. Uma dessas funções é o serviço DDE que estava no Metatrader 4 uma funcionalidade muito útil para exportar aspas do Metatrader para programas externos como Excel, Amibroker ou outros clientes DDE. Para preencher esta lacuna, desenvolvemos um servidor DDE para compensar isso. Com esse servidor você pode usar o Metatrader 5 como fonte de dados e exportar aspas por DDE. Ele funciona como um conector entre o Metatrader 5 e um ou mais clientes DDE. Use os seguintes parâmetros: Serviço: MT5 Tópico: Símbolo (o símbolo original de MT5, por exemplo, para US-Dollar vs. Euro EURUSD) Item: BID o. PERGUNTE o. LAST o. TEMPO o. VOLUME o. QUOTE BID auto-explicativo ASK auto-explicativo ÚLTIMO último citado de um comércio TIME timestamp VOLUME auto explicativo CITA todos os valores individuais separados por ponto-e-vírgula SYMBOLBIDASKLASTTIMEVOLUMEThe o software pode ser baixado e instalado diretamente. A rotina de instalação contém todos os scripts e bibliotecas necessários. Após a primeira execução, o programa pode ser testado por 14 dias sem limitações. Após a conclusão do julgamento, você pode com uma licença completa por apenas 29,00 euros via PayPal. O formulário do PayPal pode ser iniciado com o botão Obter uma licença diretamente do programa. Faça o download da instalação do MT5DDE Instalação: Baixe o programa de instalação Instalar-MT5DDE. exe Execute o programa de instalação e siga as instruções Copie o arquivo DDE. dll no diretório Bibliotecas na instalação do Metarader 5 Copie os arquivos DDE. ex5 e DDE. mq5 para o diretório Indicadores na instalação do Metarader 5 Ambos os diretórios estão localizados no diretório MQL5 Ativar no Metarader 5 o ponto Permitir DLL importações. Isso está localizado em ToolsOptionsExpert Advisors Usage: Inicie o Metarader 5 e abra um gráfico Inicie o MT5 - DDE - server Em Metarader 5 abra o Navegador e aqui o ponto Indicadores Personalizados Na lista, arraste o indicador DDE sobre o gráfico e solte-o Verifique se o Ponto Permitir que as importações de DLL sejam ativadas Pressione o botão OK Agora você deve ver em MT5 - DDE - chamadas de entrada do servidor Ativar o servidor DDE com um clique no botão com o símbolo Para parar o servidor DDE, clique no botão com o símbolo novamente Atenção - Importante Antes de fechar um gráfico, certifique-se de que desativou o indicador DDE através do menu de contexto. Caso contrário, a DLL envolvida é um bloqueio do servidor DDE e os outros programas e todos os programas devem ser reiniciados. Serviços de Programação Aviso de Investimento de Alto Risco: A troca de divisas e os contratos de diferenças de margem representam um alto nível de risco e podem não ser adequados Para todos os investidores. Existe a possibilidade de que você possa sustentar uma perda em excesso de seus fundos depositados e, portanto, você não deve especular com o capital que não pode perder. Antes de decidir trocar os produtos oferecidos pela FXCM, você deve considerar cuidadosamente seus objetivos, situação financeira, necessidades e nível de experiência. Você deve estar ciente de todos os riscos associados à negociação na margem. A FXCM fornece conselhos gerais que não levam em consideração seus objetivos, situação financeira ou necessidades. O conteúdo deste site não deve ser interpretado como um conselho pessoal. A FXCM recomenda que você procure o conselho de um consultor financeiro separado. Clique aqui para ler o aviso de risco total. A FXCM é uma negociante de câmbio mercantil e varejista registrada da Futures Commission com a Commodity Futures Trading Commission e é membro da National Futures Association. NFA 0308179 Forex Capital Markets, LLC (FXCM LLC) é uma subsidiária operacional do grupo de empresas FXCM (coletivamente, o Grupo FXCM). Todas as referências neste site para FXCM se referem ao Grupo FXCM. Tenha em atenção que as informações contidas neste site destinam-se apenas a clientes de varejo e certas representações aqui contidas podem não ser aplicáveis aos Participantes de Contrato Elegíveis (ou seja, clientes institucionais) conforme definido na Lei de Câmbio de Mercadorias, seção 1 (a) (12). Direitos autorais copiam 2017 Forex Capital Markets. Todos os direitos reservados. 55 Water St. 50th Floor, Nova Iorque, NY 10041 USAMetaTrader 4 - Exemplos Interação entre MetaTrader 4 e Matlab via DDE Introdução Eu já publiquei um artigo sobre troca de dados entre MetaTrader 4 e Matlab via arquivos CSV (MT 4 lt-CSV-gtMatlab ) Aqui. No entanto, a abordagem descrita no artigo é, em muitos casos, impraticável e, muitas vezes, até mesmo inaceitável. O mecanismo do DDE (Dynamic Data Exchange) suportado no MT 4 nos permite transferir dados de um aplicativo para outro diretamente através da RAM dos computadores. A Matlab possui a funcionalidade completa para realizar tanto o front-end como o back-end do DDE, então gostaríamos de aproveitar ao máximo essa oportunidade. O servidor DDE do MetaTrader 4 fornece apenas os últimos dados do tick. No entanto, mesmo considerando tais limitações, o DDE é mais preferível quando, por exemplo, trabalhando com aspas dentro das barras. Como no artigo do MT 4 lt-CSV-gtMatlab, descreverei a seqüência de criação de uma ferramenta de organização de troca. Não se esqueça de habilitar o servidor DDE na guia Tools - gt Options - gt Server no seu MetaTrader 4 Client Terminal, e podemos começar. Assim, na organização da troca de dados usando DDE, existem duas extremidades (front-end e back-end) entre as quais a conexão será estabelecida. O front end é uma aplicação que solicita dados (Matlab, no nosso caso), o back-end é uma aplicação que possui esses dados à disposição (MT 4). Os dados podem ser transferidos do servidor para o cliente via DDE de três maneiras: - pelo pedido dos clientes, - pela solicitação dos clientes e após o servidor ter notificado que os dados foram preparados para transferência ou - quando os dados estiverem prontos Para transferência. O servidor DDE do MetaTrader 4 funciona em apenas um (o terceiro) modo e envia os dados prontos para o cliente sem aguardar solicitações, confirmações e outras coisas assim. ) Portanto, a tarefa da Matlab é notificar a MT 4 de que tem um cliente, informar sobre os dados necessários e esperar até que cheguem os dados. Assim que os dados chegarem, vamos mostrar isso apenas em um gráfico. Criando uma GUI No ambiente Matlab, existe a possibilidade de criar uma interface gráfica de usuário (GUI). Uma vez que criamos uma GUI, combinaremos nela todos os controles, gráficos de preços e informações de texto que consideremos necessárias para exibir. A criação de uma GUI é descrita em mais detalhes na seção 3 do artigo MT4 lt-CSV-gtMatlab, então só vou mencionar aqui o comando do console chamado guia que lança o GUI Creation Wizard, e também vou dar a lista de objetos gráficos que precisamos . Assim, precisamos do seguinte: - caixa de entrada Editar texto para inserir o nome do par de moedas - Eixos para exibir o gráfico - dois campos de saída de texto Texto estático para exibir o valor preciso da última citação ou para outra coisa. É mostrado abaixo como coloquei os objetos em uma folha de GUI: você deve definir as propriedades do objeto gráfico da seguinte maneira: Para Eixos: Tag axesChart (vamos exibir o gráfico aqui). Caixa em anexar a área do gráfico em um retângulo completo, fora encerrado A área do gráfico com uma linha esquerda e uma linha inferior FontSize 7 (o tamanho padrão é apenas enorme) Unidades de pixels (precisamos disso ao traçar para definir a escala de 1: 1). Para EditText: Tag editPair (vamos inserir o nome do par de moedas neste campo). Para StaticText abaixo do campo EditText: Tag textBid (entraremos o valor preciso da última citação aqui) Alinhamento horizontal deixado (isso não é muito importante, você pode deixá-lo como centro). Para StaticText na parte inferior da folha: Tag textInfo HorizontalAlignment deixou. Agora podemos pressionar RUN. Eu nomeei os DDEs do meu projeto, então, se você quer que sua versão não tenha discrepâncias com as minhas, fale com o mesmo projeto. Se a aparência de sua GUI se adequar a você e o arquivo m está pronto para edição, vamos começar a criar um cliente DDE. Inicialização da conexão Antes de tudo, você deve organizar o canal para se conectar ao servidor ao iniciar a GUI e cuidar das quebras de conexão ao fechar a interface. Em Matlab, a conexão DDE é inicializada pela função: channel ddeinit (service, topic), onde: nome do servidor DDE do serviço (MT4) tópico nome de uma seção de dados. No nosso caso, ele pode levar os valores de BID, ASK, QUOTE, etc. A função retorna o descritor do canal inicializado. Este descritor será usado para conversas adicionais com o servidor DDE. Você também deve especificar o método de troca. Em Matlab, o método de troca suportado pelo MT4 é chamado de link Consultivo e inicializado pela função: rc ddeadv (canal, item, retorno de chamada, upmtx, formato), onde: descritor de canal do canal inicializado, dados de itens nos quais estamos interessados, ie O nome do símbolo de um par de moedas, o callback uma linha a ser executada após a chegada dos dados do servidor, o nome do símbolo upmtx da variável para colocar os dados recebidos do servidor, a matriz do formato de dois sinalizadores, que define o formato dos dados enviados . A função ddeadv retorna 1 se bem-sucedida de outra forma, retorna 0. Por favor, não é dada uma expressão de símbolo como o parâmetro callback, e não um descritor de função. Na verdade, vamos executar a função eval que executa a linha como se tivesse sido digitado em um console. Esse recurso produz a seguinte dificuldade: na chegada de uma nova cotação, temos que executar uma grande função recebendo a nova cotação. Ao mesmo tempo, gostaríamos de passar para esta função, manipulando a estrutura de descritores que será usada para obter acesso a objetos gráficos GUI. No entanto, não encontrei nenhum método para passar o descritor da estrutura das alças na linha executável nem a maneira de chamar a função localizada no arquivo m que descreve a GUI. Tudo isso resultou em que eu tive que colocar a nova função de recebimento de citações em um arquivo m-m e chamá-lo como uma função Matlab normal. No entanto, o inconveniente resultou ser uma vantagem depois de ter descoberto que eu poderia editar a função de processamento sem interromper as operações do cliente DDE. Assim, antes de tudo, vamos criar uma função de processamento separada que apenas exibirá os dados recebidos no console. Função newTick (simbols) novo tick processing disp (simbols) exibe o argumento na musica de console wavread (C: WINDOWSMediaWindows XP - launch. wav) leia o som wavplay (musica, 40000) reproduz o som com a taxa de amostragem de 40 kHz O exemplar A função acima também reproduz o arquivo C: WINDOWSMediaWindows XP - launch. wav assim que uma nova cotação chegar. Salve o texto da função como newTick. m no diretório de trabalho do MATLAB. Agora vamos editar o arquivo m que descreve o comportamento de nossa GUI. Adicione a inicialização da conexão à função DDEsOpeningFcn e a desinitialização será adicionada à função figure1CloseRequestFcn. (Para adicionar a função CloseRequestFcn ao arquivo m, você deve executar o seguinte no editor de GUI: Exibir - gt Exibir retornos de chamada - gt CloseRequestFcn). --- Executa apenas antes que os DDEs sejam visíveis. Função DDEsOpeningFcn (hObject, eventdata, handles, varargin) Esta função não possui args de saída, veja OutputFcn. Identificador de localização para determinar eventdata reservado - para ser definido em uma versão futura do MATLAB manipula a estrutura com alças e dados do usuário (veja GUIDATA) varargin argumentos da linha de comando para DDEs (veja VARARGIN) canal ddeinit (MT4, QUOTE) inicialização get get (manipula. EditPair, UserData) leia o nome do símbolo rc ddeadv (canal, par, newTick (x), x, 1 1) estabelecer conexão se (rc1) se a conexão tiver sido estabelecida, disp (Conectado) informará o console end handles. chann channel Salve o ID do canal nas alças Escolha a saída da linha de comando padrão para DDEs handles. output hObject Atualização lida com estrutura guidata (hObject, handles) UIWAIT faz DDEs aguardar a resposta do usuário (veja UIRESUME) uiwait (handles. figure1) --- Executa quando o usuário tenta Para fechar a figura1. Função figura1CloseRequestFcn (hObject, eventdata, handles) hObject handle to figure1 (veja GCBO) eventdata reserved - para ser definido em uma futura versão do MATLAB manipula a estrutura com alças e dados do usuário (veja GUIDATA) handles. chann do canal para obter o ID do canal de identificadores Par get (handles. editPair, UserData) ler o nome do símbolo ddeunadv (canal, par) desconectar rc ddeterm (canal) desinitialização se (rc1) se tudo estiver OK disp (Desconectado) informar o console final Dica: delete (hObject) fecha o Figura apagar (hObject) --- Executa durante a criação do objeto, depois de definir todas as propriedades. Função editPairCreateFcn (hObject, eventdata, handles) hObject handle para editarPair (ver GCBO) eventdata reserved - a ser definido em uma futura versão do MATLAB handles empty - handles não criado até depois de CreateFcns chamado set (hObject, String, EURUSD) Digite o Nome do símbolo no campo de entrada definido (hObject, UserData, EURUSD) No UserData do campo de entrada - save Dica: os controles de edição geralmente têm um fundo branco no Windows. Veja ISPC e COMPUTER. Se ispc ampamp isequal (get (hObject, BackgroundColor), get (0, defaultUicontrolBackgroundColor)) set (hObject, BackgroundColor, white) final eu dei acima dos textos completos de funções de modificação junto com o texto preparado para funções de esqueleto vazio pelo Matlab Desenvolvedores. O último bloco insere o nome do símbolo no campo correspondente antes que a GUI seja iniciada. A entrada será copiada para a propriedade UserData. Nós sempre usaremos a cópia em UserData, enquanto nós usaremos somente o nome exibido no campo (String) se o usuário tentar mudar a segurança. Se o usuário estiver enganado ao digitar e um nome errado foi escrito em String, retornaremos ao nome armazenado em UserData. O código abaixo realiza a função da alteração do nome do símbolo dos usuários: função editPairCallback (hObject, eventdata, handles) identificador de hObject para editarPair (ver GCBO) Eventdata reservado - para ser definido em uma versão futura do MATLAB manipula a estrutura com identificadores e dados do usuário ( Veja GUIDATA) oldPair get (hObject, UserData) nome do símbolo anterior newPair get (hObject, String) novo nome do símbolo canalização do canal. chann obter o ID do canal disconn ddeunadv (channel, oldPair) desconecte se (disconn0) se você não desconectou set ( HObject, String, oldPair) restaure o nome do símbolo antigo no campo de entrada, senão se o conde ddeadv (canal, newPair, newTick (x), x, 1 1) estabeleça uma nova conexão se (conn1) se a conexão for estabelecida definida ( HObject, UserData, newPair) memorizam o símbolo utilizado se você não conseguir estabelecer uma nova conexão ddeadv (channel, oldPair, newTick (x), x, 1 1) restaurar o antigo conjunto (hObject, String, oldPair) restaurar o Nome do símbolo antigo no campo de entrada fim final Sugestão S: get (hObject, String) retorna o conteúdo de editPair como texto str2double (get (hObject, String)) retorna o conteúdo do editPair como um duplo Tickers de recebimento Considere que a conexão está estabelecida e, na chegada de um novo tiquetaque, o newTick ( X) função chamada que selos o argumento recebido de MT 4 em um console. Primeiro, vamos exibir a última citação recebida na linha correspondente da nossa GUI. Para isso, devemos ter uma estrutura de descritores de objetos gráficos GUI - as alças estão à disposição da função newTick. Permite usar a função setappdata (h, nome, valor) que salva os dados no domínio do aplicativo. Especifique 0 como o ID do aplicativo. É o descritor da raiz do objeto Matlab, é invariante, para que possamos sempre conhecê-lo. Adicione a linha de setappdata (0, hndls, handles) imediatamente após o título da função DDEsOpeningFcn: função DDEsOpeningFcn (hObject, eventdata, handles, varargin) setappdata (0, hndls, handles) Agora, na função newTick, podemos extrair o Lida com a função de getappdata de valor (h, nome). Tendo especificado 0 como o argumento de h. Então, poderemos gerenciar os objetos GUI da função newTick. Em seguida, transformamos o argumento de cadeia passada para a função do servidor DDE e exibimos o valor de Licitação na GUI. Além disso, detectamos a hora local de receber a cotação e exibi-la também, mas na barra de status da GUI. A hora local é necessária, já que o servidor DDE passa o tempo com precisão até minutos, o que é inaceitável para trabalhar com carrapatos. A função agora retorna a hora local com precisão até as frações de um milissegundo, então não nos preocuparemos com que os diferentes tiques terão o mesmo tempo fixado. Também extrairemos o tempo do servidor a partir da linha recebida do servidor DDE e transformaremos no formato de tempo Matlab. Abaixo está mais um exemplo da função newTick: function newTick (simbols) NEW TICK PROCESSING timeLocal agora Detectar o local exato manipula getappdata (0, hndls) Receba alças do root disp (simbols) coloque o argumento na musica console (comentada) wavread (C: WINDOWSMediaWindows XP - launch. wav) leia o som wavplay (música, 40000) reproduz o som com a taxa de amostragem de 40 kHz set (handles. textInfo, String, datestr (timeLocal)) mostra a hora local na GUI - - transformando a linha recebida de MT 4 --- partes sscanf (simbols, iii i: iff) estudando a linha de acordo com o formato: intintint int: int float float timeServerVect partes (1: 5) extrair o tempo timeServerVect timeServerVect transpose (coluna Na linha) timeServerVect timeServerVect 00 adicionar segundos timeServer datenum (timeServerVect) transformar no formato de formato Matlab Encomendar peças (6) extrair Encomendar Pedir peças (7) extrair Solicitar --- fim de transformar --- set (handles. textBid, String, Licitação: num2str (Licitação)) Mostrar oferta Na GUI Desenho de um gráfico de marcação Aqui está a continuação da função newTick que foi iniciada acima. O código é fornecido com comentários detalhados, então, suponho, não será um problema para você fazer a cabeça ou a cauda dele. Explicarei que a matriz das citações do lance, como a das alças, é armazenada na área do objeto raiz. Mas salvo como dados. Os dados armazenados representam uma estrutura que consiste em dois campos: data. name - nome do símbolo de um par de moeda data. array - cita a própria matriz. Na nova função TICK, esses dados são dados sob o nome de tiques, e os campos da estrutura têm os nomes de ticks. name e ticks. array, repectivamente. Ticks. array representa uma matriz composta de três colunas: - hora local no formato de tempo de Matlab (com precisão suportada por microseconds de Matlab) - hora do servidor no formato de tempo de Matlab (com precisão em minutos) - Licitação. A função newTick esvazia a matriz de cotações, se o nome do símbolo no campo editPair tiver mudado e as citações de um outro símbolo começaram a chegar. Se isso não mudou, as linhas são adicionadas à matriz existente. O bloco de operações com o gráfico define os parâmetros (tamanho e posição) da janela de eixosChart e extrai a largura da janela em pixels deles. Isso é necessário para o programa definir a escala horizontal da exibição - uma citação por um pixel. Se houver menos cotações do que pixels na largura da janela, o gráfico será desenhado como um todo. Se houver mais cotações do que pixels, somente os dados mais recentes que se enquadram no gráfico serão exibidos. --- trabalhando com matriz de citações --- nome de símbolo GUIpairName get (handles. editPair, UserData) se (isappdata (0, data)) se nenhum dado de dados carater. Nome GUIpairName formar o campo de nome ticks. array formar um campo - um vazio Setappdata de matriz (0, dados, tiques) escreva os dados nos dados de extrato de extremidade de raiz getappdata (0, dados) extraem dados se strcmp (ticks. name, GUIpairName) se o nome mudou ticks. name GUIpairName forma o nome campo ticks. array formulário Um campo - uma matriz vazia setappdata (0, dados, tiques) escreva os dados na extremidade da raiz ticks. array ticks. array timeLocal timeServer Bid adiciona uma linha que contém os novos dados para a matriz de dados existente setappdata (0, dados, tiques) escreve Os dados na raiz --- final de trabalho com a matriz --- --- trabalhando com gráfico --- chartSize get (handles. axesChart, Posição) obtenha o gráfico do tamanho da janela do gráficoSize chartSize (3) extraia a largura da janela do gráfico lenArray Tamanho (ticks. array) obtenha o tamanho da matriz de dados lenArray lenArray (1) extraia a quantidade de linhas no conjunto de matriz de dados (Handles. axesChart, NextPlot, substituir) modo de desenho - substitua o gráfico antigo por um novo se (chartSize gt lenArray) escadas (handles. axesChart, ticks. array (:, 3)) desenhe o gráfico inteiro outras escadas (alças). AxesChart, ticks. array (lenArray-chartSize1: lenArray, 3)) exibem o ajuste de dados mais recente no conjunto do final do gráfico (handles. axesChart, XLim, 1 chartSize) defina a escala - uma contagem em um conjunto de pixels de largura (handles. axesChart Modo de desenho NextPlot, add) - adicionando trama (handles. axesChart, 1 chartSize, Bid Bid, m) desenhar os dados de economia horizontais de lances no arquivo A última função a ser descrita é salvar dados do tick em um arquivo pela solicitação dos usuários. Vamos economizar dados pressionando um botão, então adicione o objeto do botão pressionado ao formulário GUI usando o editor. Defina as seguintes propriedades do objeto: Tag pushSave, String Save. Ao pressionar o botão M-file Editor, o modelo da função pushSaveCallback será adicionado ao final do DDEs. m automaticamente. Abaixo está o texto completo da função que salva os dados: --- Executa o botão pressionado em PushSave. Função pushSaveCallback (hObject, eventdata, handles) hObject handle to pushSave (ver GCBO) eventdata reserved - a ser definido em uma futura versão do MATLAB manipula a estrutura com alças e dados do usuário (ver GUIDATA) date datestr (now, aaaa-mm-dd ) Conheça a data (string) time datestr (agora, HH-MM-SS) conheça o nome do tempo (string) get (handles. editPair, UserData) conheça o nome do símbolo (string) nome do modelo data tempo da data Forneça o nome do arquivo userName, userPath uiputfile (template. txt) obtenha o nome eo caminho do usuário se userName 0 se Cancelar não for pressionado ticks getappdata (0, data) obtenha os dados dos tempos da raizStr datestr (ticks. array (: , 1)) formam uma matriz de cadeia de tempo e data bidStr num2str (ticks. array (:, 3)) matriz de seqüência de caracteres denominada BID delimStr (1: length (bidStr)) formam um separador de colunas mais exatamente, formam uma linha que irá Ser transposto para uma coluna matrixtimesStr delimStr bidStr coletar todo o Str em uma matriz dlmwrite (userPath userName, matrix,) s Ave a matriz em um final de arquivo A função prepara o nome do arquivo que consiste na data, hora e nome do símbolo da segurança. Na poupança, as matrizes de símbolos são preparadas preliminarmente: - timesStr - hora e data locais correspondentes com as cotações - delimStr - delimitadores - bidStr - coluna BID. Então todos estão unidos em uma matriz. DelimStr representa uma linha que consiste em espaços, o comprimento da linha é igual ao comprimento da coluna BID. Na fusão, a linha delimStr é transposta para uma coluna e separa a coluna daspas do tempo. Conclusão Espero que o método descrito acima permita que você use toda a abundância de funções matemáticas na Matlab para o desenvolvimento e testando suas estratégias de negociação automatizadas. Criando um servidor DDE Alguém tem experiência configurando um servidor DDE Im tentando obter múltiplos metatrader terminais de transmissão Marque dados no meu banco de dados. Eu costumava fazê-lo através de scripts com conexões para mysql, mas, aparentemente, me falta carrapatos. Estou olhando para configurar um script que captura os dados de preço recebidos e o envie através de um servidor dde. O servidor interno MT4 DDE é bom para o que faz, mas não funciona em vários corretores. Registrado em junho de 2007 Status: Seja você mesmo, todos os outros são tomados 2,733 Posts Alguém tenha experiência configurando um servidor DDE Im tentando obter vários metatrader terminais de transmissão de dados de dados no meu banco de dados. Eu costumava fazê-lo através de scripts com conexões para mysql, mas, aparentemente, me falta carrapatos. Estou olhando para configurar um script que captura os dados de preço recebidos e o envie através de um servidor dde. O servidor interno MT4 DDE é bom para o que faz, mas não funciona em vários corretores. Tentei encontrar uma maneira antes - eu não acredito que seja possível fazer bases de dados usar uma sintaxe MT4 para localizar o servidor DDE como toda a plataforma MT4 usar a mesma sintaxe - os dados estariam chamando as informações de todas as fontes abertas ao mesmo tempo, E não será capaz de organizá-lo para uso, a única maneira de ver que isso está sendo feito é encontrar o link do servidor syntaxDDE e renomear cada um dos corretores - por isso, na minha cabeça, se você abrir uma base de dados antes de abrir a plataforma mt4 Peça permissão para abrir o terminal - então, a renomeação do terminal pode ajudar a outra opção a exportar os dados para um arquivo CSV pré-refinado - por meio de uma EA (não é certo se pode ser feito com scripts) - então tenha sua chamada base de dados Até o arquivo csv para dados Alguém tem experiência configurando um servidor DDE Estou tentando obter vários metatrader terminais de transmissão de dados de tick na minha base de dados. Eu costumava fazê-lo através de scripts com conexões para mysql, mas, aparentemente, me falta carrapatos. Estou olhando para configurar um script que captura os dados de preço recebidos e o envie através de um servidor dde. O servidor interno MT4 DDE é bom para o que faz, mas não funciona em vários corretores. Ronald, eu estava pensando em procurar mais sobre como o DDE funciona. Infelizmente, eu tenho estado muito ocupado com o trabalho esta semana. Eu vou ver o que eu posso modelar neste fim de semana e depois ver o que acontece ao vivo na próxima semana. Você pode elaborar um pouco mais sobre a infra-estrutura que você tem em mente? Sessão Oct 2005 Status: Pip Slappa Extrordinaire 1,006 Posts Eu olhei para esse tipo de coisa antes e conclui que não valia a pena. Se eu fizesse um projeto como o seu, escreva uma DLL para armazenar os carrapatos de múltiplas instâncias MT4. Cada instância executaria um indicador que não faz qualquer coisa exceto receber o tic e chamar a função da loja DLL. Você não perdeu os tiques, a DLL lida com a fila dos tiques que chegam e armazenam no banco de dados. Você está em um labirinto de pequenas passagens tortuosas, todas iguais. Junte-se a Julho de 2007 Status: 26 anos InvestorTraderProgrammer 5.014 Posts tentaram encontrar uma maneira antes - eu não acredito que isso possa ser feito base de dados use uma sintaxe MT4 para localizar o servidor DDE como toda a plataforma MT4 usar a mesma sintaxe - os dados estariam chamando a Informações de todas as fontes abertas ao mesmo tempo, e não será possível organizá-lo para uso, a única maneira que eu posso ver que isso está sendo feito é encontrar o link do servidor syntaxDDE e renomear cada um dos corretores - por todo esse caminho, se você abrir Uma base de dados antes de abrir a plataforma mt4 pede permissão para abrir o terminal - então, a renomeação do terminal pode ajudar. Estou tentando reduzir a latência entre a fonte eo processador. Usar o servidor DDE interno quase definitivamente não é possível. Eu definitivamente preciso criar meu próprio servidor DDE e executar isso via EA ou script no terminal. Ronald, eu estava pensando em procurar mais sobre como o DDE funciona. Infelizmente, eu tenho estado muito ocupado com o trabalho esta semana. Eu vou ver o que eu posso modelar neste fim de semana e depois ver o que acontece ao vivo na próxima semana. Você pode elaborar um pouco mais sobre a infra-estrutura que você tem em mente. Estou trabalhando no melhor sistema de preços para aumentar meus sistemas de negociação existentes. Então, do jeito que eu vejo a arquitetura: eu tenho um servidor DDE e um cliente em execução em cada terminal MT4 que alimente as informações de preço agregado. O agregador irá assemelhar-se às tabelas de negociação que eu tinha quando trabalhava para o RBS. O agregador enviará o melhor lance e o melhor para cada par para uma plataforma de gráficos (provavelmente outro terminal MT4) no qual eu vou colocar minhas EAs. Os EAs enviarão sinais comerciais com base nas informações que estão recebendo do agregador. Os sinais comerciais passarão para um cliente DDE executado como um script nas plataformas metatrader para que eu possa obter meu comércio preenchido e continuar em movimento. Examinei esse tipo de coisa antes e conclui que não valia a pena. Se eu fizesse um projeto como o seu, escreva uma DLL para armazenar os carrapatos de múltiplas instâncias MT4. Cada instância executaria um indicador que não faz qualquer coisa exceto receber o tic e chamar a função da loja DLL. Você não perdeu os tiques, a DLL lida com a fila dos tiques que chegam e armazenam no banco de dados. Não é tanto armazenar tiques como sendo capazes de reagir a eles rapidamente à medida que eles entram. Para resumir o que estou tentando fazer: Estou tentando criar um script no metatrader que eu posso colocar em um gráfico e ter o servidor DDE nesse O script alimenta o meu agregador de todas as informações de preço e de posição comercial à medida que ele vem. Esse script também terá um cliente DDE que eu posso usar para receber solicitações comerciais do meu agregador. Estou configurando um agregador, ou mesmo um cliente DDE em uma plataforma metatrader que gera os gráficos off-line nos quais eu coloco meus EAs. Então, três componentes: Nó - Envia dados de preços comerciais e recebe comandos para executar negócios. Agregador - Coleta os dados de preços, determina o melhor lance e solicita cada par e o envia para o mestre. Mestre - Cria gráficos off-line com os melhores preços do meu harém de corretores para que minhas EAs possam fazer negócios e analisar o mercado completamente em todos os diferentes provedores de liquidez possível. Dado o tamanho do lote, eu estou negociando agora em todos os meus sistemas, se eu conseguir economizar uma média de 1,4 pips por troca por isso, eu aumentarei meus retornos mais 4-5. Posso acabar apenas contratando alguém para escrever todo o código necessário para mim. Mas se eu puder fazer isso, melhor. Sim, já tenho feeds crus de 3 corretores. Mas ainda estou vendo algumas discrepâncias de preços. Eu não estou bem no nível para negociar diretamente com um provedor de liquidez (500M parece ser o número mágico), então estou tentando diminuir meu risco espalhando negócios entre vários corretores. É bom ter a força de alavanca para dizer ao corretor, que é o corretor, eu não gosto de como você está preenchendo meus negócios, eu poderia simplesmente mover meu volume para o corretor concorrente. E eles costumam ceder. Os que não perderam o negócio que eu ofereci. Eu realmente não olhei para isso ainda, mas pensei que valia a pena publicar: Alguém tem experiência configurando um servidor DDE. Estou tentando obter vários metatrader terminais de transmissão de dados no meu banco de dados. Eu costumava fazê-lo através de scripts com conexões para mysql, mas, aparentemente, me falta carrapatos. Estou olhando para configurar um script que captura os dados de preço recebidos e o envie através de um servidor dde. O servidor interno MT4 DDE é bom para o que faz, mas não funciona em vários corretores. Desculpe, fora do tópico aqui. Como você é o cara no saber, como faço para obter os intervalos de tempo do mutliple no mesmo gráfico. Digamos, no gráfico de 5m, eu quero ver gráficos de 4hr, 1hr e 30m em um canto do gráfico de 5m. Ou seja, todos no mesmo gráfico de 5m. desde já, obrigado. Inscrito em Mar 2008 Status: Membro Cointegrated 621 Posts RR, não tem certeza de onde você está atualmente. Eu tenho experimentado com esta ferramenta, dataloggersuitedde-to-mssql-2.htm Permite-lhe pesquisar dados DDE diretamente em um banco de dados usando odbc ou outros drivers específicos. O comércio de dados pode ser puxado da interface DDE do Metatraders, da mesma forma que as citações podem A taxa de atualização parece ser lenta, mas acho que eles definiram a demonstração dessa maneira de propósito. EDITAR: ah, 220 para a versão corporativa. Eu consegui puxar os dados dde para o logger, apenas não no banco de dados, pois isso é um anúncio comercial no produto base livre. Você está usando mysql Eu quero criar correlação e outros modelos no SPSS e gostaria de usar mysql como uma interface entre metatrader e uma dll do SPSS que pode ser exposta via python. Sim, já tenho feeds crus de 3 corretores. Mas ainda estou vendo algumas discrepâncias de preços. Eu não estou bem no nível para negociar diretamente com um provedor de liquidez (500M parece ser o número mágico), então estou tentando diminuir meu risco espalhando negócios entre vários corretores. É bom ter a alavanca para dizer ao corretor, que é o corretor, eu não gosto de como você está preenchendo meus negócios, eu poderia simplesmente mover meu volume para o corretor concorrente. E eles costumam ceder. Os que não perderam o negócio que eu ofereci.
Comments
Post a Comment