Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1208

 
Maxim Kuznetsov:

Ma non ordinare i dati a caso, senza un obiettivo globale.

Dal progetto attuale: prendiamo un array (corto), l'output è un indice di elementi nel giusto ordine:

void BubleSortIndex5(double &data[5],int &index[5])
{
   for(int i=0;i<5;i++)
      index[i]=i;
   for(int i=0;i<4;i++) {
      for(int j=1;j<5;j++) {
         if (data[index[i]]>data[index[j]]) {
            int tmp=index[i];
            index[i]=index[j];
            index[j]=tmp;
         }
      }
   }
}


per gli array più grandi dobbiamo cambiare l'algoritmo di ordinamento (il bubbling non funziona per gli array più grandi) - cambiatelo.

Il messaggio principale è: non toccare i dati di origine. Operare sia con riferimenti che, ancora meglio, con indici di array. Altrimenti, si perdono le informazioni che saranno molto necessarie in seguito.

Grazie mille .

".....Opera sia con collegamenti che, ancora meglio, con indici di array. Altrimenti si perdono informazioni che saranno necessarie in seguito...."

È la prima volta che sento parlare di operazioni di riferimento. Vi sarei grato se poteste dirmi dove potrei leggerlo, per capire la differenza tra operare con i riferimenti e operare con i dati sorgente, non ricordo un tale argomento nel libro di testo di Kovalev.

 

Colleghi, per favore consigliate perché il suono smette di suonare quando il volume desiderato della candela.

Il file audio è nella cartella SOUNDS, quando imposto l'avviso il file viene riprodotto normalmente, ma non c'è alcun suono nell'indicatore.

Oppure, avete bisogno di una cartella speciale con suoni per gli indicatori?


/---- Il ciclo principale del calcolo dell'indicatore

for(bar=limit; bar>=0 && !IsStopped(); bar--)
{
Range=(high[bar]-low[bar])/_Point;
IndBuffer[bar]=Range;

if(Range<5)
{
if (prev_calculated > 0 && Flag==0)
{
Flag=1;
}
}
if(Range>=Threshold){
clr=0;
if (prev_calculated > 0 && Flag==1 )
{
Flag=0;

PlaySound("zummer");


}
}

 
ANDREY:

Grazie mille per la vostra risposta rapida. Nel mio caso, ogni valore di un elemento dell'array è unico ed esiste in una sola istanza. Cioè, il valore 5, come gli altri valori, non si ripete.

Nel mio caso il valore 5 potrebbe non esistere in un array non ordinato. Significa che alcune celle nell'array non ordinato possono essere vuote.
Ma se il valore 5 non è nell'array non ordinato, allora non posso specificare il valore 5 come secondo parametro nella funzione ArrayBsearch(). Solo i valori che necessariamente esistono nell'array non ordinato entrano in questa funzione.
Grazie per il vostro aiuto.

Perché avete bisogno diArrayBsearch() se non intendete ordinare gli array? Per trovare un numero, tutto ciò di cui avete bisogno è un semplice confronto alternato del numero che state cercando con i numeri nelle celle dell'array. Se il numero che stai cercando non c'è, restituisci un numero falso.

//+------------------------------------------------------------------+
//|                                                  FindInArray.mq4 |
//|                                       Copyright 2020, © Cyberdev |
//+------------------------------------------------------------------+
#property copyright "Copyright 2020, © Cyberdev"
#property version   "1.00"
#property strict

#property script_show_inputs

#define  size1 2 
#define  size2 10

input double value = 5;
input int index = 0;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int vIndex = -1;

bool searshValue(double & array2D[2][], const int _len, const int _index, const double _value) {
  int i;
  for(i = 0; i < _len; i++) {
    if(NormalizeDouble(array2D[_index][i], _Digits) == NormalizeDouble(_value, _Digits)) {
      vIndex = i;
      return true;
    }
  }
  return false;
}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart() {
  double array[size1][size2] = {
    {10,9,8,7,6,5,4,3,2,1}, 
    {10,3,8,9,2,1,1,8,8,6}
  };
  
  if(searshValue(array, size2, index, value)) 
    Print("value1 array["+(string)index+"]["+(string)vIndex+"]: ", array[index][vIndex]);
  else
    Print("Value: "+(string)value+" not found!");
}
//+------------------------------------------------------------------+
 
Mihail Matkovskij:

Allora perché avete bisogno diArrayBsearch() se non volete affatto ordinare gli array? Per trovare un numero, tutto ciò di cui avete bisogno è un semplice confronto alternato del numero che state cercando con i numeri nelle celle dell'array. Se il numero che stai cercando non c'è, restituisci un numero falso.

Grazie mille. Grazie a voi ho imparato informazioni utili e migliorato la mia conoscenza di MQL4

 
ANDREY:

Grazie mille. Grazie a voi ho imparato informazioni preziose e ho ampliato i miei orizzonti e le mie conoscenze su MQL4.

Lieto di essere stato d'aiuto.

 
Mihail Matkovskij:

Allora perché avete bisogno diArrayBsearch() se non volete affatto ordinare gli array? Per trovare un numero devi solo confrontare il numero che stai cercando con i numeri nelle celle dell'array, uno per uno. Se il numero che stai cercando non c'è, restituisci semplicemente un numero falso.

Ho capito bene che la funzione

searshValue ()

Non da MQL4 e nemmeno da MQL5?

 
Mihail Matkovskij:

Felice di essere d'aiuto.

Vorrei che ci fossero più persone come te...... che fossero felici di aiutare

 
ANDREY:

Ho capito bene che la funzione

Non da MQL4 o anche da MQL5?

Guardate attentamente l'esempiohttps://www.mql5.com/ru/forum/160683/page1208#comment_17279150 . Non hai trovato niente lì?

Questa funzione:

bool searshValue(double & array2D[2][], const int _len, const int _index, const double _value) {
  int i;
  for(i = 0; i < _len; i++) {
    if(NormalizeDouble(array2D[_index][i], _Digits) == NormalizeDouble(_value, _Digits)) {
      vIndex = i;
      return true;
    }
  }
  return false;
}
Dovresti stare un po' più attento!
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2020.07.09
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 

Ciao, ho bisogno di aiuto, ho un conto aperto su questa piattaforma attraverso una società di intermediazione che non vuole ritirare i miei fondi, cosa devo fare?

 
Ботагоз Битабарова:

Ciao, ho bisogno di aiuto, su questa piattaforma ha aperto un conto per me, attraverso una società di intermediazione che non vuole ritirare i miei fondi, cosa fare?

Questa risorsa non ha niente a che vedere con le società di intermediazione.