Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 821

 

Por favor, preste atenção à minha pergunta. Estou escrevendo um indicador que faz alguns cálculos e os salva em uma matriz (não uma série temporal) do mesmo tamanho que o número de castiçais no gráfico. Originalmente, eu pensava que se eu tivesse 2000 castiçais no gráfico nos parâmetros terminais, então ao aparecer um novo castiçal, o primeiro será o segundo, o segundo - o terceiro, etc. Portanto, ao ser pré_calculado igual a zero, eu recalculo todo o conjunto, ou apenas a última barra. Mas descobri que a cada nova vela o valor das taxas_total aumenta e se torna maior que o limite de 2000.

Portanto, não há sentido em recalcular a matriz.

Mas por que isso acontece porque o terminal fixa exatamente 2000 candelabros?


Quando o terminal fecha, o número de barras torna-se novamente 2000 e começa a aumentar novamente quando novas velas aparecem.


ruslanzip:
Tarde . Você poderia me dar uma dica? Como seria o código para a condição: Se o saldo da conta tiver aumentado ou diminuído, então execute a função

//Declararar uma variável fora das funções:

balanço duplo=ContaBalanço();

//Add to the tick/calculation function:

se (Balance!=AccountBalance())

{

Saldo=ContaBalanço();

MyFunction(); // <-- Sua função

}

 
Eu tenho dinheiro em minha conta real, mas diz aqui que você só pode retirar salários ?
 
Roza75:
Eu tenho dinheiro em minha conta real, mas diz aqui que você só pode retirar salários ?
Conta real onde você a tem?
 
Artyom Trishkin:
Conta real onde você a tem?
Aplicação do Metatreder 4
 
Igor Makanu:

porque é assim que o terminal funciona

Então este é um comportamento normal e não um erro? Porque alguns indicadores básicos personalizados são escritos sem levar este fator em conta e fazem um recálculo completo a cada pré_cálculo==0.


Igor Makanu:

esta solução é apenas para o testador, o que acontece se eu sobrecarregar o terminal? e se eu executar uma segunda EA nesta conta?

você precisa trabalhar com o histórico de pedidos, não há pedidos em aberto com nosso mágico - verifique o lucro do último pedido na história

Recarregar? Ou recarregar? Se for este último, o comportamento da EA não mudará. Se você lançar um segundo EA, o algoritmo será executado de forma semelhante, sem erros.

O que o autor precisa para trabalhar, depende da tarefa que ele se propôs. A forma como ele fez a pergunta, eu a respondi. Não fui mais específico em minha pergunta.

 
The_Sheikh:

Por favor, preste atenção à minha pergunta. Estou escrevendo um indicador que faz alguns cálculos e os salva em uma matriz (não uma série temporal) do mesmo tamanho que o número de castiçais no gráfico. Originalmente, eu pensava que se eu tivesse 2000 castiçais no gráfico nos parâmetros terminais, então ao aparecer um novo castiçal, o primeiro será o segundo, o segundo - o terceiro, etc. Portanto, ao ser pré_calculado igual a zero, eu recalculo todo o conjunto, ou apenas a última barra. Mas descobri que a cada nova vela o valor das taxas_total aumenta e se torna maior que o limite de 2000.

Portanto, não há sentido em recalcular a matriz.

Mas por que isso acontece quando o terminal fixa exatamente 2000 castiçais?


Quando o terminal fecha, o número de barras torna-se novamente 2000 e começa a aumentar novamente quando novas velas aparecem.


//Declararar uma variável fora das funções:

balanço duplo=ContaBalanço();

//Add to the tick/calculation function:

se (Balance!=AccountBalance())

{

Saldo=ContaBalanço();

MyFunction(); // <-- Sua função

}



Muito obrigado, funcionou!

 
Artyom Trishkin:

Eu tenho o aplicativo Metatreder 4 no meu telefone lá
 
Alexey Viktorov:

E por que tentar descobrir como funciona internamente? Bem, se você quiser escrever sua própria função, é provavelmente mais conveniente classificar e tomar o valor de um dos índices mais externos. Mas dificilmente funcionará mais rápido do que a função embutida. Além disso, a função integrada permite a busca de um valor dentro dos limites de índice designados. Portanto, a triagem simples não vai funcionar. Portanto, teremos que copiar parte da matriz em uma matriz intermediária e classificá-la já e tirar o valor necessário dela, mas a cópia da matriz não é uma função muito "barata".

Você precisa entender para que seu cérebro possa se desenvolver. Ontem fiquei sentado por muito tempo e fiz esboços, parece que é possível fazer sem ordenação pelo princípio da enumeração, mas ainda precisamos de variáveis que armazenem valores, e ainda mais podemos devolver o valor de uma só vez, não o índice, o que simplifica o trabalho. Você pode fazer melhor suas próprias funções na gama e diferentes modificações para salvar os cálculos. As funções embutidas carecem de muitos detalhes. Mas as funções incorporadas são muito rápidas, não entendo com o que está relacionado, talvez elas estejam escritas em C++, pois escrevo minhas funções com muito cuidado, levando em conta todos os detalhes: velocidade, qualidade, economia de código, implementar modificações que reduzem o número de verificações e passes dentro das funções, mas por alguma razão as funções incorporadas ainda contornam a velocidade, não a qualidade, mas estou me dirigindo à comunidade do fórum com esta pergunta há muito tempo.

 
Boa tarde a todos os usuários do fórum! Diante de um problema, a dor de cabeça do segundo dia, eu não consigo descobrir como implementar a idéia! Como desenhar um retângulo, um círculo, uma oval (não importa qual figura) a uma determinada vela, para não redesenhar em novas coordenadas. E se algumas condições desencadearem uma figura? Cada figura em seu próprio castiçal. Comecei recentemente a estudar o mql4, por isso não estou familiarizado com a cartografia. Decidi ontem tentar imprimir um quadrado na 10ª barra (como exemplo). Consegui um e não está mais desenhado. Ontem, eu pquei e pquei o código, e eventualmente funcionou, mas o quadrado é constantemente apagado em seu antigo lugar e desenhado em um novo, depois me incomodava que o quadrado de saída fosse apenas uma vez. Dica de quem sabe como implementá-la! Ou aconselhar onde há uma filial no fórum. Aka já leu um monte de informações, apenas mais confuso! Obrigado antecipadamente pelas respostas!