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

 
Mihail Matkovskij:

Ma ci vorranno molte modifiche prima che questo codice possa essere usato nel trading reale...

Sì, ho capito. È improbabile che si arrivi al trading automatico completo. Devi testare a fondo le tue idee di trading per un lungo periodo di tempo con un gran numero di operazioni.

Senza il tester è impossibile verificare qualitativamente un'idea, il che è un peccato. L'ottimizzazione dei parametri della strategia è anche sfortunata. Il tester rende il processo molto facile.

 
Alexey Viktorov:

Non avrei mai pensato di doverti citare sulla documentazione...

... .. .il tempo di chiusura dell'ordine è 0...

Grazie, non lo pensavo nemmeno io. Non l'ho fatto spesso, ma ho dovuto assaggiare un biglietto e non ho mai avuto un problema, apparentemente perché ho ciclato attraverso quelli del mercato.

 
Igor Makanu:
Alexey Viktorov:

Grazie!

 

Salve. Cercando di trovare errori di calcolo nell'indicatore. Emette un valore di Close[0] (usato di seguito) tramite Alert. Emette un numero con 4 cifre decimali, il broker ha cinque cifre.

Alert(Close[0]);

Cosa sto facendo di sbagliato? Grazie.

 
Oleg Bondarev:

Salve. Cercando di trovare errori di calcolo nell'indicatore. Emette un valore di Close[0] (usato di seguito) tramite Alert. Emette un numero con 4 cifre decimali, il broker ha cinque cifre.

Cosa sto facendo di sbagliato? Grazie.

E da dove avete preso Close[0]? Sarebbe interessante dare un'occhiata al codice sorgente, visto che non sei su un forum di sensitivi... :)

 

Ciao, aiutami a trovare una via d'uscita - problema!

#define           Pmax 1200   //размер массива по периоду
double           ExtBuffer[];

//+------------------------------------------------------------------+
//| Структура для хранения данных Фибо                               |
//+------------------------------------------------------------------+
struct PosFib
  {
   double            period[Pmax]; 
  };

int OnCalculate(const int rates_total,....)
{
   PosFib BP[Pmax];
   
   for(int p=2; p<Pmax; p++) // отбор по периодам
      for(int b=prev_calculated>Pmax?prev_calculated:Pmax; b<rates_total; b++)
        {
         BP[b].period[p]=sm.d[p-1].m[b];
        }

   return(rates_total);
}

Durante la compilazione, dà un avvertimento - la dimensione delle variabili locali è troppo grande (più di 512kb)

Quanto è critico questo avvertimento?


 
Top2n:

Ciao, aiutami a trovare una via d'uscita - problema!

Durante la compilazione, dà un avvertimento - la dimensione delle variabili locali è troppo grande (più di 512kb)

Per favore, consigliate come aggirare questa situazione!

int OnCalculate(const int rates_total,....)
{
   PosFib BP[];
   ArrayResize(BP, Pmax);
....

SZY: è conveniente usare i buffer degli indicatori per i calcoli (INDICATOR_CALCULATIONS), se hai problemi, usali al loro posto

 
Igor Makanu:

Grazie

 

Buona giornata a tutti voi!

Domanda su MQL-4.
C'è la funzione ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND);. Cerca un elemento di una matrice pre-ordinata. Se l'array è bidimensionale, questa funzione cerca solo un elemento nella prima dimensione.

D. Quale funzione o costrutto di linguaggio può essere usato per trovare l'elemento richiesto nella seconda dimensione dell'array? Ho un array bidimensionale con due righe

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
Come posso trovare l'elemento dell'array con il valore che voglio nella riga inferiore e non in quella superiore? Perché ArrayBsearch( ) cerca solo nella riga superiore.
Grazie per il vostro aiuto.

 
ANDREY:

Buona giornata a tutti voi!

Domanda su MQL-4.
C'è la funzione ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND);. Cerca un elemento di una matrice pre-ordinata. Se l'array è bidimensionale, questa funzione cerca solo un elemento nella prima dimensione.

D. Quale funzione o costrutto di linguaggio può essere usato per trovare l'elemento richiesto nella seconda dimensione dell'array? Ho un array bidimensionale con due righe

10,9,8,7,6,5,4,3,2,1

10,3,8,9,2,1,1,8,8,6
Come posso trovare l'elemento dell'array con il valore che voglio nella riga inferiore invece che in quella superiore? Perché ArrayBsearch( ) cerca solo nella riga superiore.
Grazie per l'aiuto.

In MQL4, ho solo questo modo:

//+------------------------------------------------------------------+
//|                                                  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 value1 = 3;
input double value2 = 8;

//+------------------------------------------------------------------+
//| 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}
  };
  
  double bufer[size2];
  
  int i;
  
  int index;
  
  string str;
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[0, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value1, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[0, i] = bufer[i];
    str += (string)array[0, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[0]: {" + str + "}");
  
  Print("value1 array[0]["+(string)index+"]: ", array[0][index]);
  
  
  i = 0;
  for(; i < size2; i++) {
    bufer[i] = array[1, i];
  }
  
  ArraySort(bufer, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  index = ArrayBsearch(bufer, value2, WHOLE_ARRAY, 0, MODE_ASCEND);
  
  str = "";
  
  i = 0;
  for(; i < size2; i++) {
    array[1, i] = bufer[i];
    str += (string)array[1, i] + ((i != size2 - 1) ? ", " : "");
  }
  
  Print("array[1]: {" + str + "}");
  
  Print("value2 array[1]["+(string)index+"]: ", array[1][index]);
}
//+------------------------------------------------------------------+

Risultato:

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array value2[1][6]: 8.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array[1]: {1, 1, 2, 3, 6, 8, 8, 8, 9, 10}

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: value1 array[0][2]: 3.0

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: array[0]: {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}


File: