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 722

 
Zver4991:
há alguma regra de código?

É claro, e não apenas o código!

https://forum.mql4.com/ru/38943

 
Não consigo entender porque está pendurado
//+------------------------------------------------------------------+
//|                     Машка за больший период без перерисовки .mq4 |
//|                                                             Zver |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Zver"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 1
#property  indicator_color1 Aqua
extern int Otobrajat_v_istorii = 1000;
extern int ma_shift=0;
extern int ma_method =0;
extern int applied_price=0;


double buf_ma[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
     SetIndexBuffer(0,buf_ma);         // Назначение массива буферу
   SetIndexStyle(0,DRAW_LINE,EMPTY,2);// Стиль линии
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---

   int i,// Индекс бара
   Counted_bars;
   Counted_bars=IndicatorCounted(); // Количество просчитанных баров 
   i=Bars-Counted_bars-1;           // Индекс первого непосчитанного
   if(i>Otobrajat_v_istorii-1) // Если много баров то ..
      i=Otobrajat_v_istorii-1;                  // ..рассчитывать заданное колич.
     
   while(i>=1) // Цикл по непосчитанным барам
     {

    
     buf_ma[i]=iMA(Symbol(),Period(),5,ma_shift,ma_method,applied_price,i);
  
     
     }
   
   
   
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

 
Variante de código
int Err;   //Номер ошибки
int FunErr(int Err) // Функция обработки ошибок
dá um aviso:
a declaração de "Err" esconde a declaração global na linha 51
Outra variante de código
int Err;   //Номер ошибки
int FunErr(Err) // Функция обработки ошибок
dá um erro:
Err" - declaração sem tipo
Como escrevê-lo corretamente?
 
Zver4991:
Não consigo entender porque está pendurado
int i/// Índice de barras
while(i>=1) // Ciclo através de barras não contadas
i>=1sempre.
 
Shurkin:
int i/// Índice de barras
while(i>=1) // Laço sobre barras não contadas
i>=1sempre.

Certo, eu esqueci...obrigado.

i--;

 
//--------------------------------------------------------------------
int Count=0;                                    
//--------------------------------------------------------------------
void OnTick()   
  {
   Count++;
   Comment("Новый тик ", Count);
   //if(Count>2) ExpertRemove();
  }
//--------------------------------------------------------------------
void OnDeinit(const int reason)
  {
   Comment("Сработала ф-ия deinit() при выгрузке");
  }
//--------------------------------------------------------------------

Se para descomentar if(Contagem>2) ExpertRemove(), e sair por esta função, entãoapós a descarga da EA, comente "Deinit() acionado durante a descarga" permanece exibido no gráfico.

Alguém sabe por que, se tal EA é removida do gráfico através do menu de contexto, então Comentário() do OnDeinit não permanece no gráfico?

 

Shurkin:

Variante de código
int Err;   //Номер ошибки
int FunErr(int Err) // Функция обработки ошибок
dá um aviso:
a declaração de "Err" esconde a declaração global na linha 51
Outra variante de código
int Err;   //Номер ошибки
int FunErr(Err) // Функция обработки ошибок
dá um erro:
Err" - declaração sem tipo
Como escrevê-lo corretamente?

Este é um erro de projeto lingüístico em geral, defendido no mais alto nível. Dois fatos:

1. A linguagem MQL4++ permite esconder nomes de variáveis em escopos aninhados.

2. Ao esconder nomes de variáveis em âmbitos aninhados, deve haver um aviso, que não pode ser desativado.

Para responder à pergunta, há pelo menos duas possibilidades:

1. Use a ocultação de nomes, mas aja com a presença de um aviso (ruim, você pode perder um outro aviso realmente importante entre os muitos avisos sobre ocultação de nomes que poderiam ajudar a detectar e eliminar um erro potencial).

2. Não use o nome escondido, mesmo que o idioma tenha tal característica. Por exemplo, nomeie a variável global gErr em vez de Err.

Em vez de proibir a ocultação de nomes, é introduzida uma advertência inamovível. Tire proveito disso.

 

Em russo: a opção correta é a primeira, ignorar as advertências.

 
tara:

Em russo: a opção correta é a primeira, ignorar as advertências.

Obrigado.
 
Onde posso encontrar descrições de funções nos arquivos de inclusão?