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

 
Alexey Viktorov:

Leia cuidadosamente a documentação e o código de exemplo. Seu laço não está organizado corretamente.

Não me diga isso por e enquanto os laços funcionam da mesma maneira. Esse não é o problema, mas sim as linhas destacadas.

Obrigado, eu li (foi onde eu comecei)

Tudo funciona no meu código, apenas uma falha no MT4, gráficos 8 mas vê 7(

2021.03.10 11:59:23.914 Label EURCAD,M15: 9/
2021.03.10 11:59:23.914 Label EURCAD,M15: 8/
2021.03.10 11:59:23.914 Label EURCAD,M15: 7/
2021.03.10 11:59:23.914 Label EURCAD,M15: 6/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 5/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 4/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 3/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 2/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 1/EURUSD
2021.03.10 11:59:23.914 Label EURCAD,M15: 0/EURUSD
 
Improvável. Por mais vezes que eu tenha pecado sobre a plataforma, eu mesmo sempre me enganei.
 
Aleksei Stepanenko:
Improvável. Quantas vezes eu já culpei a plataforma, eu mesmo sempre me enganei.
Não posso ver um gráfico em particular, posso ver todos os outros e se eu adicionar um novo, posso vê-lo
 
long currChart=ChartFirst();
int i=0;
while(currChart>=0)
  {
  Print(i,ChartSymbol(currChart)," ID =",currChart);
  currChart=ChartNext(currChart); // на основании предыдущего получим новый график
  i++;// не забудем увеличить счетчик
  }

Por que você não tenta isto?

 
Aleksei Stepanenko:

Por que você não tenta isto?

A mesma coisa.

2021.03.10 12:45:48.434 Label EURCAD,M15: 8/
2021.03.10 12:45:48.434 Label EURCAD,M15: 7/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 6/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 5/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 4/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 3/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 2/EURUSD
2021.03.10 12:45:48.434 Label EURCAD,M15: 1/EURUSD
 

Por que a impressão é diferente? Código diferente?

Print(i,ChartSymbol(currChart)," ID =",currChart);
2021.03.10 12:45:48.434 Label EURCAD,M15: 1/EURUSD

Quantos gráficos estão abertos, quais deles? Símbolo, ponto final.

Desdobrado/desdobrado?
 
MakarFX:

Obrigado, foi o que li (foi onde eu comecei).

Tudo funciona no meu código, apenas uma falha no MT4, gráficos 8 mas vê 7(

Muito má leitura. Provavelmente, como a leitura forçada na escola. Eu o li, mas nada ficou impresso no meu cérebro.

Aqui está um exemplo. O objetivo lá é diferente, mas ainda assim a enumeração de gráficos abertos não muda dependendo do objetivo da enumeração.

Ou aqui está o código

/********************Script program start function*******************/
void OnStart()
 {
  long prevChart = 0;
  int i = 0;
  do
   {
    prevChart = ChartNext(prevChart);
    ChartSetInteger(prevChart, CHART_BRING_TO_TOP, 0, true);
    Sleep(200);
    i++;
   }
  while(prevChart >= 0);
 }/*******************************************************************/
Особенности языка mql5, тонкости и приёмы работы
Особенности языка mql5, тонкости и приёмы работы
  • 2021.01.15
  • www.mql5.com
В данной теме будут обсуждаться недокументированные приёмы работы с языком mql5, примеры решения тех, или иных задач...
 
Aleksei Stepanenko:

Por que a impressão é diferente? Código diferente?

Quantos gráficos estão abertos, quais deles? Símbolo, ponto final.

Desdobrado/desdobrado?
Alexey Viktorov:

Muito má leitura. Deve ter sido como uma leitura forçada na escola. Quer dizer, eu li, mas nada ficou preso na minha cabeça.

Aqui está um exemplo. O objetivo lá é diferente, mas ainda assim a enumeração de gráficos abertos não muda dependendo do objetivo desta enumeração.

Ou aqui está o código

O problema é removido, o problema é resolvido reiniciando o terminal

 

Ajude-me a evitar uma matriz fora de alcance neste código

double GetExtremumZigZagPriceHigh(string symbol="",ENUM_TIMEFRAMES timeframe=0,int extremum_number=0)//,int depth=12,int deviation=5,int backstep=3)
  {
   if(symbol=="") //Если symbol = "" , то..
      symbol=Symbol(); //Присвоить переменной symbol значение текущего символа на графике.

//Объявить необходимые переменные:
   double price[];                                                 //Цена экстремума выбранная из массива таймсерии.
//datetime time[];
   int    count;                                                   //Счетчик цикла.
int bars_quantity=1000; //Количество баров на графике.
int extremum_count=0;                                           //Счетчик экстремумов.

   ArraySetAsSeries(price,true);                   //Устанавить флаг, чтобы индексация массива производилась как в таймсериях.
   CopyBuffer(handle,1,0,bars_quantity,price);     //Скопировать в динамический массив price[] цены указанного количества баров.

   for(count=1; count<bars_quantity; count++) //Запустить цикл, который будет бежать по каждому бару.
     {
      if(price[count]!=0) //Если Цена Зигзага есть, то есть не равна нулю, то..
        {
         extremum_count++;        //Увеличить счетчик экстремумов на одну единицу.

         if(extremum_count>extremum_number) //Если счетчик экстремумов превысил значение указанного номера экстремума, то..
            return(price[count]);                 //Вернуть эту цену.
        }
     }
//Print("GetExtremumZigZagPrice(): Экстремум ЗигЗага ",extremum_number," не найден"); //А до тех пор, пока ЗигЗаг не показывает цену,
   return(0);                                                                          //Печатать Print, и возвращать ноль.
  }

É este local que está sendo expulso.

if(price[count]!=0)
 
CopyBuffer

Возвращаемое значение

Número de elementos de matriz copiados ou -1 em caso de erro .

Nota

Ao solicitar dados de um indicador, se as séries de tempos solicitadas ainda não tiverem sido construídas ou precisarem ser baixadas do servidor, a função retornará imediatamente -1, mas o próprio processo de carga/construção será iniciado.

Ao solicitar dados do Expert Advisor ou um script, o carregamento do servidor será iniciado se o terminal não tiver esses dados localmente, ou a construção das séries de tempos necessárias começará se os dados puderem ser construídos a partir do histórico local, mas eles ainda não estiverem prontos. A função retornará a quantidade de dados que estará pronta quando o tempo limite expirar.

Verifique se você tem barras_quantidade lá