[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 228

 
artmedia70:

Tudo depende se esta variável está disponível para todas as funções da EA (bem... não todas, mas algumas com certeza). Então, a variável é global.

Se for usado apenas em uma função, então é local.

A questão é como "em que água colocar as flores, simples ou adocicada" ... Enquanto você adivinhava, as flores se tornaram uma vassoura. :))

:о)

Eu meio que descobri essas regras, mas na prática minhas ordens não funcionaram, então enquanto eu estava procurando o problema, tentei muitas variantes e movi variáveis para global, como estática, mas tudo funcionou, apesar de eu ter uma função. Embora eu ainda não tenha certeza se essa foi a razão. Estou confuso e decidi perguntar aqui. Você não disse nada sobre variáveis estáticas. Talvez devêssemos fazê-los assim? Não entendo, quando você reentrar na partida (em um tick, por exemplo) as variáveis são reiniciadas? E a estática não? Em caso afirmativo, meus carrapatos se tornam zero?

PS Damn, comecei a programar de perto, estou escrevendo um grail....., se houver grama.... suficiente, parece que agora sou um cliente habitual aqui :))

 
drknn:
Se sua corretora tiver spreads flutuantes, então é melhor usar a auto-determinação do tamanho do spread na função Start da EA e definir o slippage em três spreads, por exemplo. Então o escorregamento se transformará dinamicamente.
Essa é uma ótima idéia, eu deveria tentar. Obrigado.
 
artmedia70:
Tente fazer o escorregamento depender primeiro da volatilidade. Em um mercado calmo será mínimo, em um mercado rápido se espalhará mais.

Quando se trabalha com H1 será difícil calcular a volatilidade de uma única vela, é preciso pensar em como calculá-la.
 
Fam:

:о)

Esta teoria eu meio que entendi, mas na prática minhas ordens não funcionaram e enquanto procurava o problema, tentei muitas variantes e movi variáveis para global como estáticas, mas tudo funcionou, embora a função seja a mesma. Embora eu ainda não tenha certeza se essa foi a razão. Estou confuso e decidi perguntar aqui. Você não disse nada sobre variáveis estáticas. Talvez devêssemos fazê-los assim? Não entendo, quando você reentrar na partida (em um tick, por exemplo) as variáveis são reiniciadas? E a estática não? Em caso afirmativo, meus carrapatos se tornam zero?

PS Damn, comecei a programar de perto, estou escrevendo o grail....., se a grama for suficiente...., ao que parece, sou um cliente habitual aqui agora :))


Uma variável local é uma variável declarada dentro de qualquer função. O escopo das variáveis locais é o corpo da função na qual a variável é declarada. Uma variável local pode ser inicializada com uma constante ou uma expressão, correspondente ao seu tipo.

Uma variável global é uma variável declarada fora de todas as funções. O escopo das variáveis globais é o programa inteiro. Uma variável global não é localizada em nenhum nível. Uma variável global só pode ser inicializada por uma constante correspondente a seu tipo (mas não por uma expressão). As variáveis globais são inicializadasapenas uma vez antes da execução de funções especiais.

Se o controle em um programa está dentro de uma função, os valores das variáveis locais declaradas em outra função não estão disponíveis. O valor de qualquer variável global está disponível a partir de qualquer função especial e de usuário.

Variável estática

Em nível físico, as variáveis locais são representadas na área de memória temporária da respectiva função. Há uma maneira de localizar uma variável declarada dentro de uma função na memória permanente do programa. Para fazer isso, ao declarar uma variável, o modificador estático deve ser especificado antes do tipo de variável:

As variáveis estáticas são inicializadas apenas uma vez. Cada variável estática pode ser inicializada com uma constante correspondente ao seu tipo (ao contrário de uma variável local simples, que pode ser inicializada com qualquer expressão). Se não houver uma inicialização explícita, uma variável estática é inicializada com zero. As variáveis estáticas são armazenadas em uma área permanente da memória do programa eseus valores não são perdidos quando a função é encerrada. Ao mesmo tempo, as variáveis estáticas têm uma limitação inerente às variáveis locais - o escopo de uma variável estática continua sendo a função dentro da qual esta variável é declarada, ao contrário das variáveis globais cujos valores são acessíveis de qualquer lugar do programa.

https://book.mql4.com/ru/variables/types

 
Tudo isso é auto-explicativo. Acontece que, se uma variável estática é inventada, quais valores não são perdidos quando a função sai, então todas as outras variáveis perdemos valores em cada tick? (se START for chamado a cada tique)
 
Fam:
É tudo muito claro. Acontece que se inventamos uma variável estática, cujos valores não são perdidos na saída da função, então todas as outras variáveis perdem seus valores em cada tick? (se START for chamado a cada tique)

As variáveis locais são reinicializadas a cada tick.

Não se preocupe - use global para armazenar ingressos e esqueça. Ou fazer uma matriz (contabilidade de pedidos). Todas as arrays são estáticas por padrão.

 
Obrigado, eu fiz. Só quero saber o resultado final. Você sabe como conseguir alta qualidade de simulação e baixa descoordenação de gráficos? Parece que não depende de mim ou do programa, mas do mau tempo (ou do bom, precisa descobrir). Como o software não pode simular bem, eu não entendo, o fator "humano"?
 
ZZZEROXXX:

Receio que quando se trabalha em H1 será difícil calcular a volatilidade para uma única vela, precisamos pensar em como calculá-la.
A amplitude média acima de 18 barras é clara
 

Olá a todos!

Você pode me ajudar com esta pergunta?

Estou tentando obter o valor exato de abertura(Abertura[i]) ou fechamento(Fechamento[i]) do par de moedas EURUSD com valor de cinco dígitos depois de zero, mas em resposta eu sempre recebo valor arredondado!

 
Se os números após o zero forem removidos, você está tentando atribuir um valor de preço a uma variável inteira, o dobro é necessário.
Razão: