[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 789

 
Hedin:

Caros programadores,
Favor informar por que os operadores não são executados quando a condição é verdadeira, ou melhor, são executados, mas em um modo aleatório (por exemplo, repetidamente). Não há erros nos registros.


Por favor, corrija seu código:

if ( MathAbs( ord_sl - (ord_open+First_sell_limit_SL*Point) ) < Point / 2.0 && ...

E nunca compare variáveis de tipo duplo para igualdade.

 
PapaYozh:


Corrija seu código:

E nunca compare variáveis de tipo duplo para igualdade.


Por que você não pode comparar variáveis de tipo duplo para igualdade?
 
Hedin:

Por que variáveis como o dobro não podem ser comparadas para a igualdade?
E a busca não funciona mais?
 
Hedin:

Por que as variáveis do tipo não podem ser comparadas duas vezes para a igualdade?
Dê uma olhada aqui.
 
Necron:
Em deinit, escreva para uma variável global e em init, leia o valor dessa variável, qual é o problema?

Meu entendimento é que uma variável global é uma variável declarada fora de todas as funções. As variáveis globais são inicializadas uma vez antes do início de funções especiais.

Ou seja, variáveis globais são declaradas no início do programa antes da função de início, incluindo a que eu quero passar para o programa no próximo início. Então, de acordo com sua sugestão, eu conserto o valor desta variável em deinit. Entendo que, no início do programa antes da função init ser executada, todas as variáveis globais, que são descritas no início do programa, incluindo a variável em que estou interessado, serão reinicializadas. E quando se trata de funcionamento init, minha variável, registrada anteriormente, será perdida! Ou eu estou errado?

 
Não, ele quis dizer a GlobalVariable, que está armazenada no arquivo.
 
ikatsko:

Meu entendimento é que uma variável global é uma variável declarada fora de todas as funções. As variáveis globais são inicializadas uma vez antes do início de funções especiais.

Ou seja, variáveis globais são declaradas no início do programa antes da função de início, incluindo a que eu quero passar para o programa no próximo início. Então, de acordo com sua sugestão, eu fixo o valor desta variável em deinit. Entendo que, no início do programa antes da função init ser executada, todas as variáveis globais, que são descritas no início do programa, incluindo a variável em que estou interessado, serão reinicializadas. E quando se trata de funcionamento init, minha variável, registrada anteriormente, será perdida! Ou eu estou errado?

Há dois tipos de variáveis globais: variáveis globais de seu programa, sobre as quais você escreve, e variáveis globais de seu terminal,
que são armazenadas separadamente de seu programa por quinze dias, se não forem acessadas, se a memória me servir corretamente...
eles são utilizados, por exemplo, para transferir dados entre diferentes EAs trabalhando simultaneamente no mesmo terminal, etc...
São as variáveis globais do terminal que você precisa.
 
Roger:
Não, ele quis dizer a GlobalVariable, que é armazenada em um arquivo.
Sim, eu me referia às variáveis globais do terminal. Já havia esta pergunta em uma mensagem privada, eu a respondi.
 
Necron:
Sim, eu me referia às variáveis terminais globais. Já havia esta pergunta na mensagem privada, eu a respondi.
Já descobrimos isso. Isso acontece... não acertou... Desculpe :)
 
вот, собственно код моментума стандартного из МТ4 - ии??? я не вижу тут 
double iMA(string symbol, int timeframe, int period, int ma_shift, int ma_method, int applied_price, int shift)
//+------------------------------------------------------------------+
//|                                                     Momentum.mq4 |
//|                      Copyright © 2004, MetaQuotes Software Corp. |
//|                                       http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net/"

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 DodgerBlue
//---- input parameters
extern int MomPeriod=14;
 
//---- buffers
double MomBuffer[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   string short_name;
//---- indicator line
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MomBuffer);
//---- name for DataWindow and indicator subwindow label
   short_name="Mom("+MomPeriod+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,short_name);
//----
   SetIndexDrawBegin(0,MomPeriod);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Momentum                                                         |
//+------------------------------------------------------------------+
int start()
  {
   int i,counted_bars=IndicatorCounted();
   
//----
   if(Bars<=MomPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=MomPeriod;i++) MomBuffer[Bars-i]=0.0;
      
//----
   
   i=Bars-MomPeriod-1;
   if(counted_bars>=MomPeriod) i=Bars-counted_bars-1;
   while(i>=0)
     {
      MomBuffer[i]=Close[i]*100/Close[i+MomPeriod];
      i--;
     }
   return(0);
  }
//+------------------------------------------------------------------+
Roger:

Você tem procurado estranhamente por

duplo iMA(

símbolo de corda, período int, período int, int ma_shift, int ma_method, int aplicado_preço, int shift)

O primeiro elemento.

Razão: