Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 1204

 
Mihail Matkovskij:

Aber es wird noch viel Optimierungsarbeit nötig sein, bevor dieser Code im realen Handel eingesetzt werden kann...

Ja, ich verstehe. Es ist unwahrscheinlich, dass es überhaupt zu einem vollautomatischen Handel kommt. Sie müssen Ihre Handelsideen über einen langen Zeitraum mit einer großen Anzahl von Geschäften gründlich testen.

Ohne den Tester ist es unmöglich, eine Idee qualitativ zu prüfen, was bedauerlich ist. Auch die Optimierung von Strategieparametern ist unglücklich. Das Prüfgerät macht den Prozess sehr einfach.

 
Alexey Viktorov:

Ich hätte nie gedacht, dass ich dich mal mit der Dokumentation zitieren muss...

... .. .die Abschlusszeit der Bestellung ist 0...

Danke, das hatte ich auch nicht gedacht. Das habe ich nicht oft getan, aber ich musste ein Ticket probieren und hatte nie ein Problem, wahrscheinlich, weil ich diese auf dem Markt durchlaufen habe.

 
Igor Makanu:
Alexey Viktorov:

Ich danke Ihnen!

 

Hallo. Versuchen Sie, Berechnungsfehler im Indikator zu finden. Gibt einen Close[0]-Wert (unten verwendet) über Alert aus. Gibt eine Zahl mit 4 Dezimalstellen aus, der Makler hat fünf Ziffern.

Alert(Close[0]);

Was mache ich falsch? Ich danke Ihnen.

 
Oleg Bondarev:

Hallo. Versuchen Sie, Berechnungsfehler im Indikator zu finden. Gibt einen Close[0]-Wert (unten verwendet) über Alert aus. Gibt eine Zahl mit 4 Dezimalstellen aus, der Makler hat fünf Ziffern.

Was mache ich falsch? Ich danke Ihnen.

Und woher haben Sie Close[0]? Es wäre interessant, einen Blick in den Quellcode zu werfen, da Sie sich nicht in einem Hellseherforum befinden... :)

 

Hallo, helfen Sie mir, einen Ausweg zu finden - Problem!

#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);
}

Beim Kompilieren wird eine Warnung ausgegeben - die Größe der lokalen Variablen ist zu groß (mehr als 512kb)

Wie wichtig ist diese Warnung?


 
Top2n:

Hallo, helfen Sie mir, einen Ausweg zu finden - Problem!

Beim Kompilieren wird eine Warnung ausgegeben - die Größe der lokalen Variablen ist zu groß (mehr als 512kb)

Bitte geben Sie Hinweise, wie Sie diese Situation umgehen können!

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

SZY: es ist praktisch, Indikatorpuffer für Berechnungen zu verwenden (INDICATOR_CALCULATIONS), wenn Sie Probleme haben, verwenden Sie sie stattdessen

 
Igor Makanu:

Dankeschön

 

Einen guten Tag an Sie alle!

Frage zu MQL-4.
Es gibt die Funktion ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND);. Sie sucht nach einem Element eines vorsortierten Arrays. Wenn das Array zweidimensional ist, sucht diese Funktion nur nach einem Element in der ersten Dimension.

F. Welche Funktion oder welches Sprachkonstrukt kann verwendet werden, um das gewünschte Element in der zweiten Dimension des Arrays zu finden? Ich habe ein zweidimensionales Array mit zwei Zeilen

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

10,3,8,9,2,1,1,8,8,6
Wie kann ich das Array-Element mit dem gewünschten Wert in der unteren Zeile statt in der oberen Zeile finden? Denn ArrayBsearch( ) sucht nur in der obersten Zeile.
Vielen Dank für Ihre Hilfe.

 
ANDREY:

Guten Tag an Sie alle!

Frage zu MQL-4.
Es gibt die Funktion ArrayBsearch( S_L,Ask,WHOLE_ARRAY,0,MODE_ASCEND);. Es wird nach einem Element eines vorsortierten Arrays gesucht. Wenn das Array zweidimensional ist, sucht diese Funktion nur nach einem Element in der ersten Dimension.

F. Welche Funktion oder welches Sprachkonstrukt kann verwendet werden, um das gewünschte Element in der zweiten Dimension des Arrays zu finden? Ich habe ein zweidimensionales Array mit zwei Zeilen

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

10,3,8,9,2,1,1,8,8,6
Wie kann ich das Array-Element mit dem gewünschten Wert in der unteren Zeile statt in der oberen Zeile finden? Denn ArrayBsearch( ) sucht nur in der obersten Zeile.
Vielen Dank für die Hilfe.

In MQL4, habe ich nur diese Möglichkeit:

//+------------------------------------------------------------------+
//|                                                  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]);
}
//+------------------------------------------------------------------+

Ergebnis:

2020.07.08 09:25:41.426 FindInArray AUDUSD,M30: Wert2 array[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: Wert1 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}


Dateien:
Grund der Beschwerde: