Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Obrigado! Ansioso por ofertas comerciais. Boa sorte!
O que você quer dizer com rapidez na obtenção de citações? Se está recebendo carrapatos, já escrevi que trabalhar com carrapatos de citações, mesmo diretamente no MT4, é difícil.
A biblioteca não foi originalmente projetada para capturar carrapatos. Tem a ver com o fato de que o sistema pode simplesmente desligar quando o mercado está muito ativo, porque não consegue acompanhar os carrapatos. É por isso que a biblioteca tem um software de proteção integrado contra avalanche de carrapatos.
As vantagens de utilizar a memória compartilhada são a alta confiabilidade de tal sistema e a ausência de entupimento do disco rígido. Além disso, vários programas podem acessar a biblioteca, e eles não precisam "saber" a localização exata dos arquivos temporários. Boa sorte!
parece que o autor exagerou :)
pelo que entendi, se a EA estiver dentro da função start() (e enviar informações sobre um carrapato para o cliente API de lá), então a MT não dará um novo carrapato até que a EA deixe a função start(). É por isso que não está claro como pode ocorrer uma avalanche de carrapatos?
se a EA for ligada em loop e receber carrapatos via RefreshRates, então primeiro ela deve sair do API do cliente, e então a chamada de RefreshRates ocorrerá. É por isso que aqui também não há lugar para congelamento.
soa bem, mas não é a única forma de comunicação entre processos.
então o tópico "Qual é o objetivo do uso de memória compartilhada?" não está resolvido :)
imho, MMF é bom apenas em um caso quando você precisa bombear grandes quantidades de dados entre processos - a velocidade de bombeamento é de ~150Mb/seg. (alguns meses atrás eu tive que fazer tal mecanismo apenas com MMF, porque de acordo com testes esta é a maneira mais rápida).
nesta tarefa (parâmetros de transferência para OrderSend etc.) - é como um pássaro através de uma pena, mais fácil de criar uma janela e usar SendMessage com wm_copydata.
Acho que não estou argumentando que o algoritmo utilizado seja o melhor. Essa é a beleza da programação, que tal problema pode ser resolvido de pelo menos uma dúzia de maneiras. Variante com arquivos temporários também estava funcionando plenamente. Minha tarefa era desenvolver um substituto confiável, viável e totalmente funcional para o MT3 API. Agora a biblioteca trabalha com o programa prático de comércio por cerca de meio ano. E o principal problema aqui não foi a obtenção de velocidade máxima, mas a confiabilidade e resposta adequada a um grande número de situações de emergência. Portanto, obrigado por seus comentários, eles são bastante apropriados, mas isso é "outra história". Boa sorte!
Incluir a biblioteca de importação Mforex2.lib no projeto (para Delpi - basta descrever as funções da biblioteca),
Especificar o arquivo de cabeçalho Mforex.h no programa principal (por exemplo: #incluir "Mforex".h" - somente para o Builder C++);
Estes 2 pontos são misteriosos para mim porque o programa Omega está pronto, todos os outros arquivos que coloquei como descrito, função prescrita para iniciar o MT4, e no início recebi a mensagem de que é necessário prescrever o caminho exato, mas também prescrevi o caminho. Eu não sei o que fazer a seguir.
Estes 2 pontos são um mistério para mim porque o programa Omega está pronto, todos os outros arquivos que coloquei como descrito, prescrevi a função para iniciar o MT4, e na inicialização recebi uma mensagem de que é necessário prescrever o caminho exato, mas também prescrevi o caminho. Eu não sei o que fazer a seguir.
A Omega tem a possibilidade de importar funções a partir de DLLs externas. Portanto, você deve especificar a Mforex2.dll como a biblioteca externa. Ao mesmo tempo, este arquivo deve estar no "campo de visão" dos programas Omega. Nos procedimentos de chamada, especificar o nome das funções importadas da DLL, conforme indicado na documentação. Note também que a Omega "não conhece" as definições do arquivo Mforex.h. Isto é, por exemplo, ao chamar a função de abrir uma posição, você precisa especificar o código de operação para, digamos, Sell - 1, em vez de OP_SELL, etc. Para mais detalhes, consulte a documentação DevKit, que descreve a forma como o ômega funciona com bibliotecas externas.
Boa sorte!
Boa sorte!
Por isso, prescrevi o seguinte em Omega:
DefinirDLLfunc: "Mforex2.dll", int, "Start"; {DLL call}
_gbp = Start(); {função de inícioterminal}
Mas você diz que aqui deveríamos escrever algo mais em vez de "Start()", eu entendi bem?
DefineDLLfunc: "Mforex2.dll", int, "Start"; {call DLL}
_gbp = Start(); {terminal start function}
Mas você diz que ao invés de "Start()" você deve escrever algo mais, estou certo?
Estou respondendo a mim mesmo: você não deveria escrever outra coisa em vez de "Start()" - isso mesmo, Omega inicia o MT4 sem nenhum problema.
Mas é um pouco mais complicado na função de abertura de posição, então eu prescrevi a função:
Entrada: Symbol(NumericSimple), Order(NumericSimple), Lot(NumericSimple),
price(NumericSimple), sl(NumericSimple), tp(NumericSimple);
DefineDLLfunc: "Mforex2.dll", int, "NewPos",char, int, int, double, double, double;
_NewPos = NewPos(Symbol, Order, Lot, price, sl, tp);
Logicamente tudo se encaixa na descrição do fabricante, mas na prática há problemas: tudo é definido em números...