Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 708

 

Buon pomeriggio. Sto normalizzando i valori, ma nel debugging i numeri con *e come mai?

Non posso scrivere i valori in Excel.

Se un altro parametro è assegnato all'array (arrayZ[0][q][z] = 0;), salva

for(int z = 0; z < copied && z<=ARRAY_SIZE_X; z++) // отбор по барам
   {
    arrayIndexY[z] = srcArr[z].close; //данные колонки У

    for(int q = 1; q <= copied-1; q++) //Перебор периодов
    {
  
    {
    qer = NormalizeDouble(sm.d[q-1].m[nBar-z],Digits());
    wer = NormalizeDouble(sm.d[q].m[nBar-z],Digits());
    arrayZ[0][q][z] = NormalizeDouble(qer-wer,Digits());} // ответы с е, че заааа


    }
      
   }
   flag = false;
        
   GenerateCsv("test.csv");  
   }
File:
d4rw9gqntl.jpg  157 kb
 
Top2n:

Buon pomeriggio. Sto normalizzando i valori, ma nel debugging i numeri con *e come mai?

Non posso scrivere i valori in Excel.

Se un altro parametro è assegnato all'array (arrayZ[0][q][z] = 0;), salva

for(int z = 0; z < copied && z<=ARRAY_SIZE_X; z++) // отбор по барам
   {
    arrayIndexY[z] = srcArr[z].close; //данные колонки У

    for(int q = 1; q <= copied-1; q++) //Перебор периодов
    {
  
    {
    qer = NormalizeDouble(sm.d[q-1].m[nBar-z],Digits());
    wer = NormalizeDouble(sm.d[q].m[nBar-z],Digits());
    arrayZ[0][q][z] = NormalizeDouble(qer-wer,Digits());}
    qer;

    }
      
   }
   flag = false;
        
   GenerateCsv("test.csv");  
   }
UsareDoubleToString() per l'output di stampa.
 
Artyom Trishkin:
Usare DoubleToString() per l'output di stampa.
Grazie!
 
Ciao, è vero che è possibile fare soldi su questo forum? Se sì, potrebbe dirmi come?
 
elektrik777:
Ciao, è vero che è possibile fare soldi su questo forum? Se sì, potrebbe dirmi come?
Non più rilevante - questa possibilità è stata disabilitata, ma puoi programmare, vendere risorse informatiche e scrivere articoli.
 

Buon tempo, compito: trovare i prezzi H(max) o L(min) in un dato numero di barre in questione.

Ho curiosato un po', non riesco ad assegnare un intervallo di selezione, cioè dove inserire la variabile (DO), per selezionare l'intervallo di ricerca

double UpperFractal(int DO)  // Фрактал UP
{
  //--- объявление переменных
   int n,UpperFractal_1;
//--- объявление массивов для записи значений буферов индикатора iFractal
   double FractalUp[];
   double UpFractal_1;
//--- сначала нужно записать в массивы значения буферов индиктора Fractal
//--- заполнение данными буфера
   CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUp);
//--- индексация как в таймсериях
   ArraySetAsSeries(FractalUp,true);
  
//--- далее используем оператор цикла for для поиска первого верхнего фрактала
   for(n=0; n<Bars(Symbol(),PERIOD_CURRENT); n++)
     {
      //--- если непустое значение, прерываем цикл
      if(FractalUp[n]!=EMPTY_VALUE)
         break;
     }
//--- запишем ценовое значение первого фрактала в переменную
   UpFractal_1=FractalUp[n];
//--- запишем индекс первого фрактала в переменную
   UpperFractal_1=n;
  
   return (UpFractal_1);
}
 
Top2n:

Buon tempo, compito: trovare i prezzi H(max) o L(min) in un dato numero di barre in questione.

Ho curiosato un po', non riesco ad assegnare un intervallo di selezione, cioè dove inserire la variabile (DO), per selezionare l'intervallo di ricerca

double UpperFractal(int)  // Фрактал UP
{
  //--- объявление переменных
   int n,UpperFractal_1;
//--- объявление массивов для записи значений буферов индикатора iFractal
   double FractalUp[];
   double UpFractal_1;
//--- сначала нужно записать в массивы значения буферов индиктора Fractal
//--- заполнение данными буфера
   CopyBuffer(Fractal,0,TimeCurrent(),Bars(Symbol(),PERIOD_D1),FractalUp);
//--- индексация как в таймсериях
   ArraySetAsSeries(FractalUp,true);
  
//--- далее используем оператор цикла for для поиска первого верхнего фрактала
   for(n=0; n<Bars(Symbol(),PERIOD_CURRENT); n++)
     {
      //--- если непустое значение, прерываем цикл
      if(FractalUp[n]!=EMPTY_VALUE)
         break;
     }
//--- запишем ценовое значение первого фрактала в переменную
   UpFractal_1=FractalUp[n];
//--- запишем индекс первого фрактала в переменную
   UpperFractal_1=n;
  
   return (UpFractal_1);
}


Perché devo usare i frattali?

Prima CopyHigh() per l'intervallo richiesto, e poi nell'array dove l'intervallo è copiato, cercate max (ArrayMaximum()).

Lo stesso per min, ma CopyLow() e ArrayMinimum()

 
Grazie!!!!!
 

Non capisco cosa c'è di sbagliato, il compito è trovare il valore minimo su un dato intervallo (indice)

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   double low=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied) low=ArrayMinimum(Low);
   return(low);
  }
 
Top2n:

Non capisco cosa c'è di sbagliato, il compito è trovare il valore minimo su un dato intervallo (indice)

//+------------------------------------------------------------------+
//| Получим Low для заданного номера бара                            |
//+------------------------------------------------------------------+
double iLow(string symbol,ENUM_TIMEFRAMES timeframe,int index)
  {
   double low=0;
   ArraySetAsSeries(Low,true);
   int copied=CopyLow(symbol,timeframe,0,index,Low);
   if(copied>0 && index<copied) low=ArrayMinimum(Low);
   return(low);
  }


ArrayMinimum restituisce l'INDEX dell'elemento il cui valore è il più basso. Ora abbiamo bisogno di ottenere il valore stesso dall'arrayLow per l'indicelow:

Basso[basso]