Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1220
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
Um segundo é muitas vezes a perda da última troca/ordem sobre o real. Por exemplo, em muitas brechas, uma ordem vai para execução pelo tempo TTL, que pode ser de cinco segundos. Se não for executada em cinco segundos, a ordem é um redireccionamento. Ou é executado, mas em três segundos.
No caso, se não houvesse ticks desde a aceitação até à execução, tal chamada HistorySelect não receberá informação sobre a mesma.
Talvez, o TimeCurrent deva ser igual a MathMax(LastOrder_time, MarketWatch_Time). Então a HistorySelect estará correcta. Mas a TimeCurrent pode ser demasiado cara.
A propósito, tal esquema de trabalho HistorySelect irá saltar um pouco da história dos ofícios.
Embora, à primeira vista, tudo seja claro.
Escrever um DealsTotal() barato não é fácil em MT5. Não é elementar (e gratuito) EncomendasHistóriaTotal() em MT4.
pensamentos em voz alta, sem reivindicação de relevância ou competência:
Se não houvesse carrapatos desde a aceitação até à execução, tal chamada à HistorySelect não obterá informações sobre a mesma.
Não vai resolver este problema, o modelo de servidor - terminal - interacção MQL foi originalmente concebido
Ainda não cheguei ao ponto de verificar em MT5, mas em MT4 sei com certeza que há situações, quando há alterações de preços no nosso símbolo na janela de observação do mercado, mas pode não haver ticks ou menos do que há em ЕА
ok, não importa, por isso funciona, basta escolher na decisão TS, o que acontece à encomenda na ausência de informação do servidor a partir do momento em que envia a encomenda - ou seja, a encomenda será definida ou rejeitada a priori, e recebeu a resposta para confirmar esta decisão preliminar ou cancelar - ou seja, trabalhar com informação não confirmada ou ainda esperar pela resposta do servidor - esta oferta MQ e provavelmente não se adequará
Não é fácil usar DealsTotal() barato em MT5. Não é a ordem elementar (e gratuita)HistoryTotal() em MT4.
não escrever ;)
ou melhor, o mais provável é que o faça, e irá gastar recursos da EA para manter o algoritmo, penso que precisa de descobrir como funciona o SQLite, os testes de desempenho do MQ declararam, trabalhar com grandes tabelas e amostras é exactamente o objectivo da base de dados - o código EA será minimalista, todo o trabalho que a base de dados irá fazer, todo o trabalho se resume ao preenchimento de dados quando coloca uma encomenda e actualização quando o servidor responde (sincronização, claro, quando executa a EA, a base de dados em memória)
mas não o fará ;)
ou melhor, muito provavelmente escreverá e gastará recursos da EA para manter o algoritmo, penso que precisa de descobrir como funciona o SQLite, os testes de desempenho do MQ indicados, trabalhar com grandes tabelas e amostras é exactamente o objectivo da base de dados - o código EA será minimalista, todo o trabalho que a base de dados lhe fará, todo o trabalho será reduzido ao preenchimento de dados quando colocar uma encomenda e actualização quando responder a partir do servidor (sincronização, claro, no arranque da EA, a base de dados em memória)
Foi originalmente escrito e afixado. É pouco provável que seja mais rápido.
Foi originalmente escrito e afixado. É pouco provável que seja mais rápido.
Devo ter visto a tarefa de forma incorrecta.
Pensei que precisava de actualizar a lista de encomendas de dois pontosOnTradeTransaction() e OnTick() , por isso sugeri que o fizesse na base de dados
Aqui está o meu código. Na inicialização, cria um registo na tabela. No corpo do OnTick deve devolver imediatamente um erro, porque tento adicionar um registo com a mesma CHAVE PRIMÁRIA, e depois disso a base fecha imediatamente. Mas ao mesmo tempo devia ver pelo menos o primeiro registo quando o abro, mas quando o corro no provador não está lá. E mesmo a mesa não é criada. Se eu apenas o abrir no terminal, tudo é normal. O primeiro registo está lá.
Com a localização da base de dados, não terá feito asneira, assim o espero?
Não está confuso sobre a localização da base, pois não?
Não, não estou. Tudo está em Ficheiros. Penso que em modo de teste, a base de dados é criada em memória e destruída após o teste.
pensamentos em voz alta, sem reivindicação de relevância ou competência:
...
ou melhor, muito provavelmente escreverá e gastará recursos da EA para manter o algoritmo, penso que precisa de descobrir como funciona o SQLite, os testes de desempenho do MQ indicados, trabalhar com grandes tabelas e amostras é precisamente o objectivo da base de dados - o código EA será minimalista, todo o trabalho que a base de dados lhe fará, todo o trabalho é reduzido ao preenchimento de dados ao colocar uma encomenda e actualização ao responder a partir do servidor (sincronização, claro, ao executar a EA, a base de dados em memória)
E que base de dados irá fazer todo o seu trabalho? Pode dizer-me?
Num terminal apenas colocando ordens, no outro (com o mesmo corretor e conta) controlando a execução. comunicação quer através da base de dados quer através do PUB/SUB ZMQ. Claro que a base de dados não é SQLite. O mais adequado para estes fins é Redis, claro que a minha opinião pessoal.
Boa sorte