Olá, Tiago, acho que você precisaria salvar essa informação (EA expirado) em recursos como variáveis globais do terminal ou arquivos...
Olá, Tiago, acho que você precisaria salvar essa informação (EA expirado) em recursos como variáveis globais do terminal ou arquivos...
Vinicius, se não estou enganado não é possível acessar variáveis globais e nem arquivos no modo do testador de estratégias (backtest), apenas em tempo real. E mesmo assim, seria necessário que o usuário colocasse ao menos uma vez para executar em tempo real para o expert poder atualizar as variáveis globais/arquivos sobre a expiração do EA.
Segue um exemplo, talvez fica mais fácil de entender:
Digamos que a data de 05.05.2024 está no código do expert, e o mesmo só deve funcionar até essa data. Em tempo real ou no backtest ele segue fazendo essa validação e aí quando a mesma for atingida o expert deixa de funcionar. No entanto, no backtest o usuário poderá sempre estar configurado uma data anterior à 05.05.2024 e dessa forma ele continua executando normal no backtest.
Então o que busco é uma forma de interromper também a execução no testador de estratégias (backtest). O expert no modo do testador precisaria verificar a data REAL CORRENTE seja local ou do servidor, o interessante é que o MQL5 tivesse alguma função em que fosse possível fazer isso no modo Tester.
A partir do tópico seguinte (da seção em inglês do fórum) você pode acessar alguns exemplos de como obter a data atual mesmo utilizando o Testador, incluindo exemplos que não utilizam DLL (eu não testei, mas se você testar, por favor, avise se deu certo): How to get today date ? , even backtest history still know today date. - Paper Trading - MQL4 and MetaTrader 4 - MQL4 programming forum (mql5.com)
A partir do tópico seguinte (da seção em inglês do fórum) você pode acessar alguns exemplos de como obter a data atual mesmo utilizando o Testador, incluindo exemplos que não utilizam DLL (eu não testei, mas se você testar, por favor, avise se deu certo): How to get today date ? , even backtest history still know today date. - Paper Trading - MQL4 and MetaTrader 4 - MQL4 programming forum (mql5.com)
Deu certo, já testei aqui. Segue a função apresentada no tópico, a mesma retorna o horário local corrente real no modo testador:
//+------------------------------------------------------------------+ //| Get current local (computer) time | //+------------------------------------------------------------------+ datetime GetCurrentLocalTime() { string tmpFilename = "_TEMP_FILE_TO_GET_CURRENT_LOCAL_TIME"; int handle = FileOpen(tmpFilename, FILE_WRITE); if(handle==INVALID_HANDLE) return(0); datetime now = (datetime)FileGetInteger(handle, FILE_CREATE_DATE); FileClose(handle); FileDelete(tmpFilename); //--- return(now); }
Obrigado Vinicius!
Vinicius, se não estou enganado não é possível acessar variáveis globais e nem arquivos no modo do testador de estratégias (backtest), apenas em tempo real. E mesmo assim, seria necessário que o usuário colocasse ao menos uma vez para executar em tempo real para o expert poder atualizar as variáveis globais/arquivos sobre a expiração do EA.
Segue um exemplo, talvez fica mais fácil de entender:
Digamos que a data de 05.05.2024 está no código do expert, e o mesmo só deve funcionar até essa data. Em tempo real ou no backtest ele segue fazendo essa validação e aí quando a mesma for atingida o expert deixa de funcionar. No entanto, no backtest o usuário poderá sempre estar configurado uma data anterior à 05.05.2024 e dessa forma ele continua executando normal no backtest.
Então o que busco é uma forma de interromper também a execução no testador de estratégias (backtest). O expert no modo do testador precisaria verificar a data REAL CORRENTE seja local ou do servidor, o interessante é que o MQL5 tivesse alguma função em que fosse possível fazer isso no modo Tester.
Eu não entendi porque tu não pode testar a data da licença e então chamar ExpertRemove() se ela esta vencida. Mesmo no colocar uma data pro passado, ela so iria ate a data da licença sem a necessidade desse código.
Eu não entendi porque tu não pode testar a data da licença e então chamar ExpertRemove() se ela esta vencida. Mesmo no colocar uma data pro passado, ela so iria ate a data da licença sem a necessidade desse código.

- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Olá,
será que existe alguma forma de interromper também a execução do expert no modo de backtest após atingir a data de expiração?