Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1051

 
É claro que a oferta envelheceu, mas eu esperava que este projeto me permitisse abrir várias posições no bar atual com preços de abertura de oferta diferentes. E no testador funciona bem, mas na demonstração abre uma posição e fecha imediatamente. como evitá-la não está claro.
 
rapid_minus:
Eu não entendo onde está a resposta. Refiro-me a isto: "A função integra a verificação do estado da bandeira de parada do Expert Advisor a cada 0,1 segundo"? Em caso afirmativo, como esta bandeira pode ser retirada?

Não, se você tivesse lido até o fim, veria a resposta para a res...

Nota

A função Sleep() não pode ser chamada a partir de indicadores personalizados, pois os indicadores são executados na rosca de interface e não devem retardá-la. A função tem uma verificação incorporada do status da bandeira de parada do especialista a cada 0,1 segundo. A função Sleep() no testador de estratégia não causa nenhum atraso.




 
LRA:

Comece colando isto no final do indicador. Uma vez que você vê a marca na tela, descubra como colocar o que você quer nela. Aqui você recebe conselhos, mas tem que fazê-lo você mesmo.

desculpe, eu não sei o que fazer a seguir(
int Número=25;

if(H===H1&&H1===H2)
{if(J == true) {ObjectCreate(PatternText[shift],
OBJ_TEXT, 0, Tempo[turno1], Alto[turno1] + Alcance*5);
ObjectSetText(PatternText[shift], "pattern", 10, "Arial", Vermelho);
downArrow[shift1] = High[shift1] + Range*0,5;}if(setalert == 0 && Alert == true) {pattern = "padrão";setalert = 1;}}}




if(ObjectFind(0, "Texto")<0) // verificar etiqueta de saída
{
ObjectCreate("Texto", OBJ_LABEL, 0, 0, 0, 0); // criação
ObjectSet("Texto", OBJPROP_CORNER, 1); // canto superior direito
ObjectSet("Texto", OBJPROP_XDISTANCE, 10); //X
ObjectSet("Texto", OBJPROP_YDISTANCE, 10); //Y
}
ObjectSetText("Texto", string(número), 14, "Arial", Preto); // Saída para etiqueta

}
retorno(0);
}
 
AlexeyVik:    você me surpreendeu... mathlog10

A questão é muito mais fácil de resolver.

É certamente mais fácil com ele.... Talvez estivesse faltando então, ou perdido... No meu amado TurboPascal, ele está definitivamente faltando. Usei logaritmo para fazer isso.
 
Obrigado!
 
LRA:
É certamente mais fácil com ela.... Talvez estivesse faltando na época, ou se tenha perdido... Está definitivamente faltando no meu TurboPascal preferido. Eu costumava fazer multiplicação de logaritmos.

Por um tempo depois de mudar para o mql4 atualizado, houve um erro na documentação. Clicando no MathLog10 abriu a ajuda do MathLog

Escrevi para Servicedesk sobre isso, mas eles consertaram metade e deixaram a outra metade...

 
Tenho um indicador que repete completamente as barras da janela principal com a mesma escala em preço e tempo. Pergunta: existe um CHARTSET CHARTGET para que a janela indicadora seja escalada da mesma forma que na janela principal quando você rola o gráfico?
 
AlexeyVik:

log(10) realmente não é 1, mas o fato de que o mql não tem um logaritmo decimal me surpreende...

O que é então? https://docs.mql4.com/ru/math/mathlog10 embora haja um erro no texto.

A questão é muito mais fácil de resolver.

Responderei logo desde o último post.

O que são logaritmos que eu entendo, não entendi para que serve naquele código, mas depois da correspondência de você e daquele camarada eu entendi que é para casas decimais, certo?

Não poderia ser feito de qualquer outra forma? Por que isto em código(int) ? Por que seu caminho é melhor do que a linha que eu forneci ?))

muito obrigado)

 
Igemon:

Responderei logo desde o último post.

Eu entendo o que são logaritmos, não entendi por que nesse código, mas depois de sua e daquela correspondência do camarada eu entendi que é para determinar o número de casas decimais, certo?

Não poderia ser feito de qualquer outra forma? Por que eu preciso dele em código(int) ? Por que seu caminho é melhor do que a linha que eu forneci ?))

muito obrigado)

Sim, para determinar o número de casas decimais. Isto é necessário para normalizar o valor do lote se o lote for definido por alguma fórmula e o resultado pode ter mais casas decimais do que o permitido. Em alguns casos, você pode simplesmente colocar um duque, mas depois pode encontrar um erro, então é melhor defini-lo de forma programática.

Há outra maneira de fazer isso. Há duas maneiras de resolver este problema. Uma é converter número em string, definir o comprimento da string, encontrar índice de caractere de ponto e a diferença entre o comprimento da string e o índice de caractere de ponto será avaliada como parte fracionária do número. E no fórum mql5, você pode encontrar várias variantes, algumas mais finas, outras mais fáceis.

Aqui está mais uma variante.

int fun(double ch)
{
 int i = 0;
 double res = 0, ostatok = fmod(ch, 1);
 while(ostatok != 0 && i < 16) // число взято от фонаря для прерывания зацикленности
  {
   res = ostatok * 10;
   ostatok = NormalizeDouble(fmod(res, 1), 8); // Вроде 8 максимально
   i++;
  }
 return(i);
}/*******************************************************************/

Esta função define o número de casas decimais de absolutamente qualquer número.

O algoritmo é escandalosamente simples, devemos considerar quantas vezes o resíduo da divisão por 1 será maior que zero.

Eu não disse que meu caminho é melhor. Cada programador escreve da maneira como vê a solução do problema.

Um número do tipo duplo, mesmo que não tenha dígitos significativos na parte fracionada tem a forma, por exemplo, 2,0, o que não é totalmente correto, e para obter um inteiro normal é convertido implicitamente em int tipo.

 

Nota

A função Sleep() não pode ser chamada a partir de indicadores personalizados, pois os indicadores são executados na rosca de interface e não devem retardá-la. A função tem uma verificação incorporada do estado da bandeira de parada do especialista a cada 0,1 segundo. A função Sleep() no testador de estratégia não causa nenhum atraso.

Todos são tão inteligentes que é assustador olhar para eles. Escrevi que o deslize foi ignorado no Testador de Estratégia (que é claro), mas todas as posições estão abertas como eu especifiquei. Mas no talão de demonstração não funciona, e a posição é aberta apenas uma, e esta se fecha imediatamente. Este é o problema que não posso resolver.

Razão: