[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 191

 
eddy:

o preço errado é 1.37197000.

o preço correto é 1.37197 ou 1.3719, dependendo de qual DNS.

NormalizeDouble() é usado para definir o número de dígitos após o ponto decimal


Adicionado NormalizeDouble() ao preço em OrderSend(), sem erros agora, obrigado!
 
artmedia70:

Isto é o mais fácil que se pode fazer:

Coloque as próprias funções fora da função start(), ou no final de todo o código.



Obrigado!
 
eddy:

Preciso me lembrar do GetTickCount no primeiro tick após iniciar o indicador, mas o código abaixo não funciona - o terminal fica pendurado. talvez o RefreshRates não funcione nada no init()...?

while(true){ if(RefreshRates()) { tik=GetTickCount(); break; } Sleep(1); } Sleep(1 )

Alguém tem alguma idéia de como implementar isso? Eu gostaria de fazer isso no início, porque se eu colocar uma bandeira no início - ela será verificada toda vez que
 
eddy:
Quem tem alguma idéia de como implementá-la? Quero fazê-lo no init, porque se você fizer uma bandeira no início, ela será verificada toda vez que
Ao declararuma variável global, atribuir um valor a ela e redefini-la no início. Então terá valor inicial somente no primeiro tique, antes de atribuir, e em todos os tiquetaques subseqüentes - o valor atribuído no início. Em seguida, você pode transferir para o início todas as ações, que são realizadas uma vez no início do Expert Advisor.
 
eddy:

Você poderia aconselhar como carregar o indicador em um gráfico de forma programática?

Existe a função bool ServiceLoadCustomIndicator(int hwndChart,...); //hwndChart- Sistema descritor da janela do gráfico, onde o indicador é carregado.

Eu não sei como conhecer o descritor da janela do gráfico.

Só preciso me lembrar do GetTickCount no primeiro tick após o início do indicador, mas o código abaixo não funciona - o terminal fica pendurado. Talvez no init() RefreshRates não funcione de jeito nenhum...?

https://docs.mql4.com/ru/windows/WindowHandle
 
granit77:
Atribuir um valor à variável global na declaração e redefini-la no início. Então ele terá o valor original somente no primeiro tique, antes de atribuir, e em todos os tiquetaques subseqüentes - o valor atribuído no início. Então todas as ações, que são executadas uma vez no início da EA, podem ser transferidas para o início.

Eu não preciso atribuir nada a esta variável na inicialização.

decidi criar um indicador separado para memorizar carrapatos em uma variável global, cujo valor será conhecido pelo indicador principal no início da operação

Zhunko, e se houver várias janelas com o mesmo TF e símbolo?

 
eddy:

Eu não preciso atribuir nada a esta variável na inicialização.

decidi criar um indicador separado para memorizar carrapatos em uma variável global, cujo valor será conhecido pelo indicador principal no início da operação

Zhunko, e se houver várias janelas com o mesmo espaço de tempo e símbolo?

Checado há muito tempo (você também pode fazer isso) ele devolve o último ou o ativo.
 
Zhunko: Devolve o último ou o ativo.

ou seja, se nenhum deles estiver ativo, ele devolve o último?

Entretanto, não importa, eu acho que ao adicioná-lo, aquele que você quer adicionar está sempre ativo de qualquer maneira.

 
eddy:

No entanto, não importa, acho que está sempre ativo quando você o adiciona de qualquer forma, onde você quer adicioná-lo

Sim. Exatamente. Tenho uma função que devolve os descritores de todas as mesmas janelas de gráficos na ordem Z. Não o incluiu na biblioteca. Mas isso não vai ajudar muito.
 
eddy:

Não preciso atribuir nada a esta variável na inicialização. apenas uma vez para lembrar o tique.

Decidi fazer um indicador separado para memorizar carrapatos em uma variável global, cujo valor o indicador principal reconhece ao iniciar a operação

O que eu quis dizer foi o seguinte:
bool FirstStart=true;

int start(){

    if(FirstStart){
      if(RefreshRates()) tik=GetTickCount();
      FirstStart=false;
    } 
}