Intercâmbio de dados entre dois terminais MT4?

 

Olá!


Desejo implementar a seguinte estratégia: "Garfos sobre a diferença de cotações de diferentes empresas de corretagem:

A estratégia é muito simples, é que você pode colocar as taxas opostas na mesma ferramenta em duas corretoras e esperar a divergência das cotações na direção certa, então você pode fechar ambas as apostas e obter um lucro total (o valor da discrepância das cotações deve ser maior que a comissão total das duas corretoras).


Esta estratégia não é nova há muito tempo, mas eu ainda não a vi. Eu quero usá-lo.


O principal problema é a necessidade de saber a qualquer momento o valor das cotações para ambas as corretoras simultaneamente, e o consultor trabalha com apenas um terminal (uma corretora).

Isto é, em cada um dos terminais MT4 está funcionando um Expert Advisor e este Expert Advisor conhece apenas suas citações e citações de seu vizinho, e nós não conhecemos suas citações!

Temos que fazer com que ambos os EAs conheçam as citações um do outro, ou seja, eles podem trocar dados um com o outro.


Quero que eles compartilhem o que sabem sobre o assunto. Eu também quero obter alguns feedbacks.


Encontrei duas maneiras de trocar dados:


1) o mais trivial: escrever dados em um arquivo e ler este arquivo por outro consultor especializado. Basicamente, é muito fácil de fazer. O único problema é que o Expert Advisor só pode ler e escrever arquivos a partir de "seu diretório". Mas tudo pode ser resolvido com dll.

Há outra boa desvantagem: a baixa velocidade de troca. Não se pode comparar com a velocidade de escrita e leitura da memória(((.


2) Não tenho certeza do que você pode fazer (já que não sou um programador muito bom), mas, aqui, eu gostaria de aprender com programadores tais:

Atribuir um lugar na memória e escrever citações lá, o endereço para este lugar é conhecido por ambos os EAs, para que ambos possam ler e escrever para este lugar.

Naturalmente, toda esta tecnologia é implementada através de uma dll.

3) Eu também encontrei a GlobalAddAtom, mas como escrever um dll com ela?


Se alguém estiver interessado na estratégia e também quiser implementá-la, por favor entre em contato comigo, terei prazer em compartilhar meu trabalho!

 
Um triste final para tal estratégia poderia acontecer http://www.kroufr.ru/forum/index.php/topic,6265.0.html
 
E como você prevê este tipo de trabalho através de uma DLL?
 
geopoint:
Um triste final para tal estratégia poderia acontecer http://www.kroufr.ru/forum/index.php/topic,6265.0.html
Eu realmente não entendo, não é mesmo? Provavelmente se trata do fato de que o CD pode simplesmente se ferrar se ele descobre, não é?
 
D500_Rised:
E como você imagina este tipo de trabalho através da DLL?

Não creio que o meio padrão da MQL4 seja capaz de fazer a troca. Mas se você souber como fazê-lo, por favor, compartilhe!

E através da dll, você poderia, por exemplo, conectar uma função que pudesse ler arquivos de qualquer diretório, não apenas de um!

 

dlls de cada terminal ainda se referirão ao mesmo arquivo comum. Parece-me que isto causará uma série de erros que resultarão em uma operação instável de tal esquema. IMHO.

Você já olhou para o multiterminal? É possível conectar-se a diferentes servidores ao mesmo tempo?

Ocorreu-me um pensamento: se o multiterminal tem a capacidade de trabalhar com várias contas, então provavelmente pode trabalhar com os servidores reais e de demonstração simultaneamente. E se substituirmos o endereço do servidor demo pelo endereço real do servidor de outra corretora?

 
D500_Rised:

dlls de cada terminal ainda se referirão ao mesmo arquivo comum. Parece-me que isto causará uma série de erros que resultarão em uma operação instável de tal esquema. IMHO.

Você já olhou para o multiterminal? É possível conectar-se a diferentes servidores ao mesmo tempo?

Ocorreu-me uma idéia: se o multiterminal tem a capacidade de lidar com mais de uma conta, então talvez seja possível trabalhar com os servidores reais e de demonstração simultaneamente. E se substituirmos o endereço do servidor demo pelo endereço real do servidor de outra corretora?

Sem erros, porque eu já fiz este caminho através do arquivo. Os arquivos são 2, ou seja, cada EA tem seu próprio arquivo no qual salva as citações e os EA lêem os arquivos um do outro. O principal é fazer a leitura e escrita correta (o consultor especializado lê o mesmo arquivo o tempo todo e escreve para o mesmo arquivo o tempo todo). Concordo que a estabilidade será pior do que se referir à memória.


O Multiterminal não tem essa opção, e mesmo que tivesse, não é possível executar EAs lá. Você quer implementar tal esquema manualmente? (Eu não)

 
D500_Rised:

Você já olhou para o multiterminal? É possível conectar-se a diferentes servidores ao mesmo tempo?


não
 

Estou questionando se é possível encomendar o tempo write_1---read_2, write_2---read_1.

Como o processo é ordenado para que os EAs não se encontrem no mesmo arquivo, eles podem distinguir os dados lidos anteriormente dos novos dados (requer tempo adicional de identificação)

E em geral, o jogo vale o esforço? Se vai haver uma diferença nas citações, há várias coisas contra este jogo ao mesmo tempo:

1- 2 pastas (2*2-4 pips)

2- Slippage.

3- Baixa velocidade real de execução dos pedidos(durante o processamento do pedido do revendedor, o preço pode mudar e anular a diferença positiva) + solicitações

etc.

 
D500_Rised:

Estou questionando se é possível encomendar o tempo write_1---read_2, write_2---read_1.

Como o processo é ordenado para que os EAs não se encontrem no mesmo arquivo, eles podem distinguir os dados lidos anteriormente dos novos dados (requer tempo adicional de identificação)

E em geral, o jogo vale o esforço? Se vai haver uma diferença nas citações, há várias coisas contra este jogo ao mesmo tempo:

1- 2 pastas (2*2-4 pips)

2- Slippage.

3- Baixa velocidade real de execução dos pedidos (durante o processamento do pedido do revendedor, o preço pode mudar e anular a diferença positiva) + solicitações

etc.

Isto não é um problema, pois uma EA está escrevendo o tempo todo para um arquivo e a outra EA está lendo o tempo todo a partir deste arquivo e não importa em que ordem isso aconteça. Para verificar a relevância dos dados, usei a hora local, ou seja, as citações são escritas a cada 100 milissegundos e, em seguida, chequei a relevância por hora local.


Sobre "castiçais": Não sei a resposta exata, é por isso que quero verificá-la. Estou mais convencido com os dados quantitativos. Se o spread total for de 4 pips e a divergência for de 10 pips, então mesmo em más condições podemos conseguir pelo menos metade de 6 pips lucrativos, o que você acha?

 
D500_Rised:

Eu questiono a possibilidade de uma ordem correta cronometrada de write_1---read_2, write_2---read_1.

Talvez você possa sugerir seu próprio método, porque estamos discutindo apenas uma maneira: através de arquivo, mas há outras mais avançadas: através da memória, você pode dizer algo sobre elas?
Razão: