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

 
Alexey Viktorov #:
Por que esperar até amanhã? Se você for preguiçoso demais para olhar através das especificações, passe o roteiro por todos os símbolos de interesse e encontre uma correspondência para moeda de margem e moeda de lucro.
Não verifiquei tudo antes de escrever, mas não encontrei nenhuma coincidência...

Um pouco ocupado hoje.


Taras Slobodyanik #:

bem, o ponto é rápido - pegou o código da moeda, fez uma busca em uma matriz pronta que é atualizada quando uma negociação é aberta.

Tudo é difícil de ser pontuado uma vez em uma série

 
Yevhenii Levchenko variável estática var do método X::doJob(). Há uma classe U que cria um objeto do tipo X, faz algum trabalho e depois o destrói. E isto acontece periodicamente. Pergunta: quando a variável var é excluída?


Viverá para sempre.

 
Koldun Zloy #:

Viverá para sempre.

Enquanto o objeto U estiver vivo? Ou até que o terminal seja reinicializado? Grosso modo, após o que é apagado?

 
Yevhenii Levchenko #:

Enquanto o objeto U estiver vivo?

Não, a instância de classe pode nem mesmo ser criada, mas o campo estático de classe será alocado à memória e inicializado.... A propósito, seu exemplo, em minha opinião, não deve ser compilado, a inicialização estática do campo deve estar fora da descrição.

Yevhenii Levchenko #:

Se até que o terminal esteja sobrecarregado? Grosso modo, após o que ele é removido?

O terminal não tem nada a ver com ele, a vida útil é a mesma que para as variáveis globalmente declaradas ou para as variáveis estáticas regulares - a memória é alocada quando você carrega o programa MQL e liberada quando você descarrega o programa MQL

 
Igor Makanu #:

Não, a instância de classe pode nem mesmo ser criada, mas o campo estático de classe será alocado à memória e inicializado.... A propósito, seu exemplo, em minha opinião, não deveria compilar, a inicialização dos campos estáticos deveria estar fora da descrição.

Ok! Parece compilar...

Igor Makanu #:

O terminal não tem nada a ver com ele, a vida útil é a mesma das variáveis globalmente descritas ou das variáveis estáticas regulares - a memória é alocada no momento do carregamento do programa MQL e é liberada ao descarregar o programa MQL

Ou seja, se estiver tudo dentro da EA, a variável ficará na memória até OnDeinit() da EA?

 
Yevhenii Levchenko #:

Norm! parece compilar...

Então, se estiver tudo dentro da EA, a variável fica na memória até OnDeinit() da EA?

As variáveis estáticas são destruídas após OnDeinit().

 
Koldun Zloy #:

As variáveis estáticas são destruídas após OnDeinit().

Ok! Obrigado :)

 
Ajuda na escolha de um corretor, onde o melhor para negociar e retirar não deve ser um problema.
 
dryun777 #:
Ajuda na escolha de um corretor, onde é melhor negociar e a retirada não seria um problema...Obrigado

Neste recurso, nomear um corretor é o mesmo que discuti-lo. E a canção de ninar não dorme e ameaça represálias. Então, procure por si mesmo...

 
Alexey Viktorov #:

Valeri tem a direção correta do pensamento. Mas não entendo por que precisamos definir a moeda que estamos procurando na ordem moedas em cada iteração do ciclo? E eu acho que é mais fácil pegar a moeda da margem e a moeda do lucro em vez de olhar na linha. Veja a especificação de moedas ... Eu teria feito isso.

bool Search(string _sy)
 {
  int OT = OrdersTotal();
  string curencyProfit = SymbolInfoString(_sy, SYMBOL_CURRENCY_PROFIT),
         currencyMargin = SymbolInfoString(_sy, SYMBOL_CURRENCY_MARGIN);
  for(int i = 0; i < OT; i++)
   {
    if(OrderSelect(i, SELECT_BY_POS))
     {
      bool res = StringFind(OrderSymbol(), curencyProfit) >= 0 ||
                 StringFind(OrderSymbol(), currencyMargin) >= 0;
      if(res)
        return(true);
     }
   }
  return(false);
 }

Verificado, ele funciona corretamente.

Obrigado!

Razão: