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
Abandonei completamente a idéia de ligar o MT5 ao Quick, só me instalei no Quick (servidor DEE + trans2quik.dll).
Estou considerando a realização deste programa.
O Selector1 recebe constantemente dados do servidor DDE e os "armazena" no Armazenamento e chama a função OnTick na criança correspondente.
Ao chamar GetStorageData, o servidor DDE deve ser pausado e os dados devem ser armazenados em Storage.
Quando o Selector2 chama de volta, o servidor DDE e a gravação de armazenamento devem ser suspensos e a chamada GetStorageData deve ser desativada.
Isto é, Selector2 tem alta prioridade, GetStorageData normal, e Selector1 baixa.
Perguntas:
Como posso sincronizar graciosamente Selector1, Selector2 e GetStorageData?
Talvez existam exemplos concretos de tal sincronização (eu nunca implementei tal coisa)?
Abandonou a idéia de vincular o MT5 e o Quick, estabelecendo-se apenas no Quick (servidor DEE + trans2quik.dll)
Estou considerando a realização deste programa.
1. A decisão muito acertada de deixar apenas Quick.
2. A conexão via DEE é uma solução muito controversa. Muitas pessoas dizem que o DDE é instável, mas eu não sei.
Na minha opinião, uma solução melhor e mais versátil, é uma aplicação Lua-DLL. Eu uso esta opção. É claro que isso depende do proprietário.
1. A decisão de manter apenas o Rápido foi a decisão certa.
2. A comunicação através do DDE é uma decisão muito controversa. Muitas pessoas dizem que o DDE é instável, mas, eu não sei.
Na minha opinião, uma solução melhor e mais versátil, é uma aplicação Lua-DLL. Eu uso esta opção. É claro, cabe ao anfitrião.
Eu escrevi há muito tempo um servidor DDE para Quick - funciona bem e rápido o suficiente (não mais lento do que Lua - DLL),
e não é necessário escrever código adicional para Lua e receptor de dados DDL de forma alguma.
Adicionado
De fato, eu já escrevi o programa mostrado no diagrama (e ele funciona), mas encontrei um problema de sincronização.
Eu escrevi há muito tempo um servidor DDE para Quick - funciona bem e rápido o suficiente (não mais lento do que Lua - DLL),
e não há nenhuma necessidade de escrever código adicional em Lua.
Como eu não fiz nenhum DDE, a questão é - como o DDE é feito? Acho que existe a necessidade de fazer uma tabela com dados, e depois executá-la através do DDE.
Há um problema com os eventos. Algo mudou, e parece que a mesa inteira foi passada para o DDE. Ou eu estou errado?
Digamos que eu estou errado. Então, como identificar o evento no lado receptor?
De fato, eu já escrevi o programa mostrado no diagrama (e ele funciona), mas encontrei um problema de sincronização.
Sincronizar o quê com o quê?
Com Lua, esta questão é resolvida através de chamadas de retorno da DLL para dados arbitrários.
Como eu ainda não lidei com o DDE, a questão é como o DDE é feito? Parece que você tem que fazer uma tabela com dados e, em seguida, executá-la através do DDE.
Há uma confusão com os acontecimentos. Algo mudou, e parece que a mesa inteira foi passada para o DDE. Ou eu estou errado?
Digamos que eu estou errado. Então como identificar o evento no lado receptor?
Em Quick, a tabela necessária é gerada para a saída.
Finalmente, nós lançamos nossa própria aplicação com o servidor DDE e emitimos esta tabela via DDE.
Na primeira saída de Quick, toda a tabela é enviada para DEE, depois somente a linha da tabela
em que ocorreram mudanças.
Na própria tabela (é transmitida por completo) há (por exemplo, no meu caso) um nome de ferramenta - este é o identificador
O próprio servidor DDE tem algumas linhas (tenho-o em Pascal, mas há muitos exemplos na Internet em outros idiomas)
Uma janela para crianças é criada pelo nome da ferramenta (como em MT 5)
Com o que?
Eu descrevi o problema no tópico do diagrama
Eu descrevi o problema no tópico do diagrama
Desculpe, não percebi. Se eu entendi corretamente:
Imho, a solução é usar um SGBD comoarmazenamento, digamos MS SQL Server. Esta pode ser uma solução parcial.
A segunda é utilizar coleções intermediárias de amortecedores, como o último a entrar, primeiro a sair. Bem, e a separação dos fios.
Então não há necessidade de parar nada, tudo é simplesmente escrito em amortecedores. Bem, e o SGBD tem acesso para múltiplos usuários.
Eu aplico tudo isso, mas não sou amigo de Pascal desde 6.
PS Dizem que você pode usar as bibliotecas NET de Pascal. Para usar comoarmazenamento, pode fazer sentido usarSystem.Data,System.Data.DataSet eSystem.Data.DataTable. Se bem me lembro, não houve problema com o acesso de múltiplos usuários naDataTable.
ZZY2 Agora estou tentando usar o SQLite como um banco de dados, mas nenhum resultado definitivo ainda. E certamente não é um SGBD, mas em uma forma descascada é possível o acesso de múltiplos usuários, e é possível criar um banco de dados em memória.
Não, eu só preciso sincronizar 3 fios (basicamente escrever um Sincronizador), mas
Eu não sei como.