Discussão do artigo "Como copiar a negociação do MetaTrader 5 para o MetaTrader 4" - página 13

 
zhserg:

Criei uma copiadora simples. Defina de onde, para onde e copie o intervalo.

arquivo exe no arquivo
 
Warstein:
Obrigado pelo excelente material!!!
Um pedido muito grande, adicionar trabalho somente com pedidos com um determinado número mágico.

Eu apoio a ideia, talvez alguém escreva e, portanto, o código está ótimo, graças ao autor, tudo está ótimo! Só preciso encontrar um bom operador e pedir para investir ;)

 

Devemos acrescentar.

1. Proporcionalidade do lote - de 5 dígitos para 4 dígitos - o lote também se move em 1 dígito.

Em geral, é melhor extrair não o lote, mas a margem livre, o lote e os dígitos e, no receptor, recalcular o lote de acordo com a margem livre disponível e as casas decimais da cotação.

Dessa forma, o gerenciamento manual será preservado - sem ele, o programa perde o sentido.

2. Prefixos-sufixos para símbolos - às vezes o DC chama um símbolo de negociação não de EURUSD, mas de EURUSD_byaka (provavelmente é melhor fazer a correspondência "de qual para qual" símbolo duplicado em um arquivo de configuração separado).

3. Seria bom realizar a cópia de um arquivo para vários arquivos mt4.

Por exemplo, ao receber o arquivo mt4 da pasta mt5 com a ajuda de:

#import "kernel32.dll"
   bool CopyFileA(string lpExistingFileName, string lpNewFileName, bool bFailIfExists);
#import

/////////////////

CopyFileA(TerminalPath()+CharToStr(92)+"experts"+CharToStr(92)+"files"+CharToStr(92)+fSymbol+".txt",CopyTo1+fSymbol+".txt",false);

Dessa forma, você pode ir além da área restrita do arquivo mt4.

No mql5, infelizmente, esse e outros truques semelhantes do MSDN não funcionam.

Em geral, vou experimentar e, se não houver bugs, não escreverei meu próprio código por enquanto. Obrigado.

 
zhserg:

Criei uma copiadora simples. Defina de onde, para onde e o intervalo de cópia.

Comece a copiar com o botão "Save/start" (Salvar/iniciar). Durante o trabalho, ele piscará ))).

No Translator positions.MQ5, você pode alterar a linha int han=FileOpen(subfolder+"\\\experts\\\files\\\\"+folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,","); para int han=FileOpen(folder+".csv",FILE_WRITE|FILE_SHARE_READ|FILE_ANSI,","); ou seja, o arquivo será gravado na pasta \\Program Files\MetaTrader 5\MQL5\Files.

Você pode usar um bootnik. Ele estará tanto na rede quanto dentro do computador.

@Echo off
:loop
xcopy "F:\folder\*.txt" "\\Comp1\folder" /Y /R /C /I /G /Z /D >nul
xcopy "C:\Program Files\MetaTrader 5\MQL5\Files\Translator positions.csv" "C:\Program Files\MetaTrader 4\experts\files" /Y /R /C /I /G /Z /D >nul
timeout /t 1
goto :loop

A propósito, para a sincronização de mega arquivos, recomendo o Microsoft SyncToy 2 .1 http://www.microsoft.com/en-us/download/details.aspx?id=15155.

SyncToy 2.1
SyncToy 2.1
  • www.microsoft.com
Note: There are multiple files available for this download. Once you click on the “Download” button, you will be prompted to select the files you need. Overview There are files from all kinds of sources that we want to store and manage. Files are created by our digital cameras, e-mail, cell phones, portable media players...
 
Tudo isso não é mais relevante, o artigo perdeu a validade, um novo compilador mql4++ com recursos avançados será lançado em breve e tudo mudará.
 

Acho que o problema tem a ver com o local onde o Metatrader armazena os dados. Nas versões mais recentes do Windows, ele não usa subpastas da pasta de instalação.

No servidor 2008 (no meu caso), o MT5 usa:
C:\Users\[nome de usuário]\AppData\Roaming\MetaQuotes\Terminal\[número hexadecimal longo]\MQL5\etc...

Cada instalação de terminal usa sua própria pasta nesse local com um [número hexadecimal longo] exclusivo. Tentei instalar o MT4 no caminho da pasta acima, mas ele também lê e grava a partir de sua própria pasta de dados exclusiva, portanto, isso também não funciona. De qualquer forma, executar programas a partir desse local provavelmente não é uma boa ideia.

Suspeito que esse seja o problema no Windows 8 também.

Estou sem ideias neste momento, mas espero que essas informações sejam úteis.

 

Meus locais de arquivos de dados do MT4 no Windows Server 2008:

C:\Users\[nome de usuário]\AppData\Local\VirtualStore\Program Files\[nome da pasta do programa MT4]

Suponho que o sistema operacional esteja redirecionando as operações de arquivo.

 

4103 - erro ao abrir arquivo, significa que o MT5 está gravando negociações em algum arquivo e o MT4 não consegue "encontrá-lo".

Isso está acontecendo porque o MT5 funciona de forma diferente do MT4. No MT5, a pasta onde instalamos é diferente daquela onde ele é executado. Por exemplo, instalei o MT5 em C:\Accounts\MT5 e o MT4 em C:\Accounts\MT5\MQL\Files\MetaTrader 4.

O MT5 criou uma pasta C:\Users\[nome de usuário]\AppData\Roaming\MetaQuotes\Terminal\[número hexadecimal longo]\MQL5\etc... e, na verdade, é executado a partir daqui. Portanto, o MT5 está escrevendo as negociações em algum lugar dessa pasta.

De acordo com o artigo original, o MT4 deveria estar "dentro" da pasta MT5. Portanto, a solução está em tornar a pasta de instalação do MT5 "MESMA" que a pasta de execução. E a maneira mais simples é:

1. desinstalar todas as instâncias do MT5

2. Excluir a pasta "Metaquotes" de C:\Users\[nome de usuário]\AppData\Roaming\

Agora, faremos com que a pasta de instalação seja igual à pasta de execução:

3. Reinstale o MT5. Ele não deve estar na pasta Program files, mas, por exemplo, em C:\Accounts\MT5. Durante a instalação, desmarque a opção "launch after finish" (etapa crítica)

4. ANTES de executar o MT5 pela primeira vez, clique com o botão direito do mouse no atalho do MT5 na área de trabalho, clique em propriedades, adicione "/portable" ao caminho, sem aspas. Portanto, ele será C:\Accounts\MT5\terminal.exe /portable. (Observe que há um espaço após terminal.exe, barra, portable sem nenhuma letra maiúscula). Clique em OK.

Agora, instalaremos o MT4, copiaremos os EAs e executaremos os terminais

5. Instale o MT4 em C:\Accounts\MT5\MQL\Files\MetaTrader 4. (Observe que o nome da pasta MetaTrader 4, ou o que quer que seja, deve ser idêntico ao nome nos EAs).

6. Copie o Translator e o Copyist EA em suas respectivas pastas.

7. Execute o MT5 master e o MT4 slave.

8. Aproveite!!!

Dica: Não prossiga para a próxima etapa se algo não for feito corretamente.

Desculpe-me por usar uma linguagem "não técnica", mas isso é o máximo que você pode esperar de um médico!

 
doctornasir:

4103 - erro ao abrir arquivo, significa que o MT5 está gravando negociações em algum arquivo e o MT4 não consegue "encontrá-lo".

Isso está acontecendo porque o MT5 funciona de forma diferente do MT4. No MT5, a pasta onde instalamos é diferente daquela onde ele é executado. Por exemplo, instalei o MT5 em C:\Accounts\MT5 e o MT4 em C:\Accounts\MT5\MQL\Files\MetaTrader 4.

O MT5 criou uma pasta C:\Users\[nome de usuário]\AppData\Roaming\MetaQuotes\Terminal\[número hexadecimal longo]\MQL5\etc... e, na verdade, é executado a partir daqui. Portanto, o MT5 está escrevendo as negociações em algum lugar dessa pasta.

De acordo com o artigo original, o MT4 deveria estar "dentro" da pasta MT5. Portanto, a solução está em tornar a pasta de instalação do MT5 "MESMA" que a pasta de execução. E a maneira mais simples é:

1. desinstalar todas as instâncias do MT5

2. Excluir a pasta "Metaquotes" de C:\Users\[nome de usuário]\AppData\Roaming\

Agora, faremos com que a pasta de instalação seja igual à pasta de execução:

3. Reinstale o MT5. Ele não deve estar na pasta Program files, mas, por exemplo, em C:\Accounts\MT5. Durante a instalação, desmarque a opção "launch after finish" (etapa crítica)

4. ANTES de executar o MT5 pela primeira vez, clique com o botão direito do mouse no atalho do MT5 na área de trabalho, clique em propriedades, adicione "/portable" ao caminho, sem aspas. Portanto, ele será C:\Accounts\MT5\terminal.exe /portable. (Observe que há um espaço após terminal.exe, barra, portable sem nenhuma letra maiúscula). Clique em OK.

Agora, instalaremos o MT4, copiaremos os EAs e executaremos os terminais

5. Instale o MT4 em C:\Accounts\MT5\MQL\Files\MetaTrader 4. (Observe que o nome da pasta MetaTrader 4, ou o que quer que seja, deve ser idêntico ao nome nos EAs).

6. Copie o Translator e o Copyist EA em suas respectivas pastas.

7. Execute o MT5 master e o MT4 slave.

8. Aproveite!!!

Dica: Não prossiga para a próxima etapa se algo não for feito corretamente.

Desculpe-me por usar uma linguagem "não técnica", mas isso é o máximo que se pode esperar de um médico!

Obrigado por dedicar seu tempo para escrever isso.

Outra maneira é manter as configurações de instalação padrão e fazer a conexão entre as duas pastas com um link simbólico.

http://en.wikipedia.org/wiki/NTFS_symbolic_link

 

compilador mql4++

Essa é uma nova versão para o receptor no mt4, com parâmetros adicionais?