Erros, bugs, perguntas - página 2634
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
Olá!
Quero executar algum MT4 com um ficheiro de lote.
Pode dizer-me como fazer isto e porque é que o meu código não funciona?
Na melhor das hipóteses, corre alguns MT4 e depois pendura.
É claro que não há falta de RAM.
Além disso, já experimentei em diferentes computadores
não, não tem.
a hora do servidor, a propósito, não pára no sábado. aqui é o contrário: no terminal, a hora do servidor é actualizada com a chegada de uma nova citação. Por exemplo, tem apenas um símbolo aberto na visão geral do mercado (não só no testador, mas também na realidade). e não há ticks durante cinco segundos - todo este tempo o temporizador do servidor não se moverá. isto é verdade para sábado: o tempo do servidor está a correr, mas o terminal não o sabe, porque não há ticks. o testador simplesmente falhará este período.
Já verifiquei. No testador, oTimeLocal trabalha aos fins-de-semana, oTimeTradeServer também trabalha, mas oTimeCurrent, claro, não. Não há carrapatos, mas o tempo do servidor ainda está lá.
https://www.mql5.com/ru/forum/328008/page2#comment_14166682
Como sempre, as bicicletas.
A questão aqui é porque é que não passa.
Afinal de contas, as variáveis dos parâmetros, têm valores iniciais.
E se especificar o tamanho das medidas em números
O compilador salta, qual é o truque?
Comentaria o promotor sobre isto?
Com que objectivo? Para fazer uma auto-optimização no fim-de-semana? Em seguida, a definição de um temporizador da OnTick a uma distância de alguns minutos funcionaria. Se funcionar, então as carraças pararam e é possível optimizar.
Se, para outros fins, formulá-los.
Não, não para outros fins.
Não pensei que o TimeLocal trabalhasse nos fins-de-semana, por isso fiz isto: adicionei algumas horas ao TimeCurrent e verifiquei o dia da semana. Se é sábado, então comece a optimizar.
Claro que não posso ter a certeza sobre o início do sábado, porque o mercado fecha de forma diferente na sexta-feira ou nos feriados.
Além disso, não encontrei em lado nenhum um meio para determinar se o mercado está fechado ou não.
Não, não para qualquer outro fim.
Não pensei que o TimeLocal trabalhasse aos fins-de-semana, por isso fiz isto: adicionei algumas horas ao TimeCurrent e verifiquei o dia da semana. Se é sábado, então comece a optimizar.
Claro que não posso ter a certeza sobre o início do sábado, porque o mercado fecha de forma diferente na sexta-feira ou nos feriados.
Além disso, não encontrei em lado nenhum um meio para determinar se o mercado está fechado ou não.
Já tentou ?
SymbolInfoSessionTrade
ou
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Algo deles deve ser bom
Já o experimentou?
SymbolInfoSessionTrade
ou
SymbolInfoInteger(SYMBOL_TRADE_MODE)
Um deles deve ser bom, lembro-me.
Não, não o fiz. O manual não especifica como determinar se o mercado é aberto ou não.
O problema é que quando o mercado "abre" na segunda-feira, por exemplo num corretor, as cotações começam a chegar às 02:05, mas as transacções não são aceites durante alguns minutos e exibe "Mercado fechado".
Não sei se isto vai ajudar ou não.
SYMBOL_START_TIME
Data de início do instrumento (normalmente utilizado para futuros)
Não, não o fiz. O guia não diz especificamente como determinar se o mercado está aberto ou não.
O problema é que quando o mercado "abre" na segunda-feira, por exemplo num corretor, as cotações começam a chegar às 02h.05, mas nenhum negócio é aceite por mais alguns minutos, dá "Mercado fechado".
Não sei se isto vai ajudar ou não.
SYMBOL_START_TIME
Este é o símbolo_start_time (normalmente utilizado para futuros)
OSymbolInfoSessionTrade mostra quando o comércio começa eSymbolInfoSessionQuote quando as cotações chegam.
ap: isto deve ajudar.
boolIsTradeAllowed(
símbolo const string// símbolo
datahora_tempo testado// hora
);
Como sempre, as bicicletas.
A questão aqui é porque é que uma tal entrada não é aprovada.
Depois de todas as variáveis dos parâmetros terem valores iniciais.
E se especificar o tamanho das medidas em números
então o compilador salta-a, qual é o senão?
Será que o promotor comentará esta questão?
Roman, esta é a segunda vez que cai por uma falta de vontade elementar de ler a documentação.
Apenas umnúmero inteiro pode ser um índice de matriz. Não são permitidas mais do que arrays tetradimensionais. A numeração dos elementos da matriz começa com 0. O último elemento de um array unidimensional é numerado 1 menos do que o tamanho do array, ou seja, aceder ao último elemento de um array de 50 inteiros parecerá um[49]. O mesmo acontece com as matrizes multidimensionais, sendo uma dimensão indexada de 0 a dimensão tamanho 1. O último elemento da matriz bidimensional no exemplo pareceria m[6][49].
As matrizes estáticas não podem ser representadas como séries temporais, ou seja, a função ArraySetAsSeries() que define o acesso aos elementos da matriz desde o fim de uma matriz até ao seu início não é aplicável a elas. Se quiser dar acesso a uma matriz como nas séries cronológicas, utilize um objecto de matriz dinâmica.
Se aceder fora da matriz, o subsistema de execução irá gerar um erro crítico e a execução do programa irá parar.
E na documentação mql4, se a memória me serve correctamente, foi claramente afirmado que as variáveis não devem ser utilizadas como um tamanho de matriz.
Como sempre, as bicicletas.
A questão aqui é porque é que uma tal entrada não funciona.
Afinal, as variáveis dos parâmetros, têm valores iniciais.
E se especificar o tamanho das medidas em números
Então o compilador salta, qual é o truque?
Será que o criador comentará a questão?
Não sou um programador, mas vou comentar.
Para uma matriz estática, o compilador tem de atribuir um certo número de bytes na memória já em tempo de compilação.
Quanta memória tem de ser atribuída pelo compilador se não soubermos linha e col no momento da compilação?
Os valores iniciais só são utilizados se os parâmetros forem omitidos ao chamar. Os parâmetros reais só são conhecidos em tempo de execução.
Assim, sem truques, aprenda a língua.
Não, não é isso,SymbolInfoSessionTrade mostra quando há negociação eSymbolInfoSessionQuote quando as cotações entram.
ap: isto deve ajudar.
boolIsTradeAllowed(
símbolo const string// símbolo
datahora_tempo testado// hora
);
Não me parece que o faça. Há um tópico especial aqui :https://www.mql5.com/ru/forum/40295
Não o examinou até ao fim, especialmente porque é para a MQL4.
Não creio que o servidor deva enviar cotações simbólicas se o mercado estiver fechado.
O meu robô não é realmente afectado por isto porque depois de o mercado "abrir" quando os carrapatos entram nele, analisa a tendência, as suas inversões, e isso leva algum tempo. Durante este tempo, o mercado abre-se.
Mas atrapalha-se se quisermos executar manualmente algumas transacções durante este tempo. Se a execução for baseada no mercado, o pedido está pendente até que o mercado abra e é naturalmente executado ao preço actual.
A função directa que recebe o nome do símbolo e retorna verdadeiro/falso (mercado aberto/fechado) está claramente em falta.