Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 689

 
Roma Ivanov:
die Formel ist von hier - https://www.mql5.com/ru/articles/1492
in dem Artikel unter dem Link - die Operation ^ ist eine Leistungssteigerung
 
Roma Ivanov:
Die Formel stammt von hier - https://www.mql5.com/ru/articles/1492

Ich habe es nicht gelesen. Nach der Formel und den Diagrammen in dem Artikel (Excel) zu urteilen, handelt es sich jedoch um eine Leistungssteigerung.

Ich könnte mich irren.

 

Viel Spaß! Ich habe mich gefragt, wie ich ein 2D-Array in das *.csv-Format übersetzen kann. Ich habe ein passendes Beispiel gefunden, aber es ist für mt4, ich brauche es für 5.

//+------------------------------------------------------------------+
//|                                                  generateCsv.mq4 |
//|         Copyright © 2006, Antonio Banderass. All rights reserved |
//|                                               banderassa@ukr.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Antonio Banderass. All rights reserved"
#property link      "banderassa@ukr.net"
#property library
#define ARRAY_SIZE_X 16
#define ARRAY_SIZE_Y 16
//+------------------------------------------------------------------+
//| PrepareString                                                    |
//+------------------------------------------------------------------+
string PrepareString(string s)
  {
   bool exit = false;
   int index = 0;
   string str = s;
//----
   while(!exit)
     {
       index = StringFind(str, ".", index);
       if(index > -1)
           str = StringSetCharacter(str, index, ',');
       else
           exit = true;
     }
   return(str);
  }
//+------------------------------------------------------------------+
//| GenerateCsv                                                      |
//+------------------------------------------------------------------+
int GenerateCsv(string fileName, int arraySizeX, int arraySizeY,
                double arrayIndexX[], double arrayIndexY[], double arrayZ[][]) // Ругается говорит - arrays are passed by reference only пробовал добавить &_array.. но запинается на двумерном

  {
   int handle = FileOpen(fileName, FILE_CSV|FILE_WRITE, ' '), x, y;
   string str;
   if(handle < 1)
     {
       Print("Error:", GetLastError());
       return(handle);
     }
   else
     {
       str = ";";
       for(x = 0; x < arraySizeX; x++)
         {
           str = str + arrayIndexX[x];
           str = str + ";";        
         }
       FileWrite(handle, PrepareString(str));
       for(y = 0; y < arraySizeY; y++)
         {
           str = "";  
           str = str + arrayIndexY[y] + ";";
           for(x = 0; x < arraySizeX; x++)
             {
               str = str + arrayZ[x,y];
               str = str + ";";        
             }
           FileWrite(handle, PrepareString(str));
         }
     }
   FileClose(handle);  
   return(handle);
  }
//+------------------------------------------------------------------+

https://www.mql5.com/ru/articles/1443

Трёхмерные графики - профессиональный инструмент анализа рынка
Трёхмерные графики - профессиональный инструмент анализа рынка
  • 2006.12.06
  • Antoniuk Oleg
  • www.mql5.com
В это статье мы напишем простую библиотеку для создания трехмерных графиков и последующего их проcмотра в Microsoft Excel. Мы воспользуемся стандартными возможностями языка MQL 4 для подготовки и экспорта данных в файл формата *.csv.
Dateien:
 
Top2n:

Viel Spaß! Ich habe mich gefragt, wie ich ein 2D-Array in das *.csv-Format übersetzen kann. Ich habe ein passendes Beispiel gefunden, aber es ist für mt4, ich brauche es für 5.

https://www.mql5.com/ru/articles/1443

Arrays können nur per Referenz übertragen werden:

int GenerateCsv(string fileName, int arraySizeX, int arraySizeY,
                double & arrayIndexX[], double & arrayIndexY[], double & arrayZ[][])
 
Artyom Trishkin:

Arrays können nur per Referenz übertragen werden:

int GenerateCsv(string fileName, int arraySizeX, int arraySizeY,
                double & arrayIndexX[], double & arrayIndexY[], double & arrayZ[][])
Und doch flucht es bei&arrayZ[][] sagt -'[' - ungültiger Indexwert

 
Top2n:
Und doch schlägt es fehl&arrayZ[][] sagt -'[' - ungültiger Indexwert

Und wie viele Dimensionen sind für arrayZ angegeben?
 
Artyom Trishkin:
Und wie viele Dimensionen sind für arrayZ angegeben?

Ich habe &arrayZ[][3000] deklariert, wenn ich es mit 16 gleichsetze, dann wird die Ereignisbehandlungsfunktionüberhaupt nicht gefunden

#define ARRAY_SIZE_X 16
#define ARRAY_SIZE_Y 16

int start()
  {
   int x, y;
   double arrayIndexX[ARRAY_SIZE_X];
   double arrayIndexY[ARRAY_SIZE_Y];
   double arrayZ[ARRAY_SIZE_X,ARRAY_SIZE_Y];
//----
   for(x = 0; x < ARRAY_SIZE_X; x++)
       arrayIndexX[x] = x / 10.0;      
//----
   for(y = 0; y < ARRAY_SIZE_Y; y++)
       arrayIndexY[y] = y / 10.0;
//----
   for(x = 0; x < ARRAY_SIZE_X; x++)
       for(y = 0; y < ARRAY_SIZE_Y; y++)
           arrayZ[x,y] = MathSin(arrayIndexX[x] + arrayIndexY[y]);
   GenerateCsv("test.csv", ARRAY_SIZE_X, ARRAY_SIZE_Y, arrayIndexX, arrayIndexY, arrayZ); // 'arrayZ' - parameter conversion not allowed
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| PrepareString                                                    |
//+------------------------------------------------------------------+
string PrepareString(string s)
  {
   bool exit = false;
   int index = 0;
   string str = s;
//----
   while(!exit)
     {
       index = StringFind(str, ".", index);
       if(index > -1)
           str = StringSetCharacter(str, index, ',');
       else
           exit = true;
     }
   return(str);
  }
//+------------------------------------------------------------------+
//| GenerateCsv                                                      |
//+------------------------------------------------------------------+
int GenerateCsv(string fileName, int arraySizeX, int arraySizeY,
                double &arrayIndexX[], double &arrayIndexY[], double &arrayZ[][3000])
  {
   int handle = FileOpen(fileName, FILE_CSV|FILE_WRITE, ' '), x, y;
   string str;
   if(handle < 1)
     {
       Print("Error:", GetLastError());
       return(handle);
     }
   else
     {
       str = ";";
       for(x = 0; x < arraySizeX; x++)
         {
           str = str + arrayIndexX[x];
           str = str + ";";        
         }
       FileWrite(handle, PrepareString(str));
       for(y = 0; y < arraySizeY; y++)
         {
           str = "";  
           str = str + arrayIndexY[y] + ";";
           for(x = 0; x < arraySizeX; x++)
             {
               str = str + arrayZ[x,y];
               str = str + ";";        
             }
           FileWrite(handle, PrepareString(str));
         }
     }
   FileClose(handle);  
   return(handle);
  }
//+------------------------------------------------------------------+

 
Top2n:

Deklariert &arrayZ[][3000]

string PrepareString(string s);

int GenerateCsv(string fileName, int arraySizeX, int arraySizeY,

                double &arrayIndexX[], double &arrayIndexY[], 

                double &arrayZ[][3000]); 

int start()
  {
   int x, y;
   double arrayIndexX[ARRAY_SIZE_X];
   double arrayIndexY[ARRAY_SIZE_Y];
   double arrayZ[ARRAY_SIZE_X,ARRAY_SIZE_Y];
//----
   for(x = 0; x < ARRAY_SIZE_X; x++)
       arrayIndexX[x] = x / 10.0;      
//----
   for(y = 0; y < ARRAY_SIZE_Y; y++)
       arrayIndexY[y] = y / 10.0;
//----
   for(x = 0; x < ARRAY_SIZE_X; x++)
       for(y = 0; y < ARRAY_SIZE_Y; y++)
           arrayZ[x,y] = MathSin(arrayIndexX[x] + arrayIndexY[y]);
   GenerateCsv("test.csv", ARRAY_SIZE_X, ARRAY_SIZE_Y, arrayIndexX, arrayIndexY, arrayZ); // 'arrayZ' - parameter conversion not allowed
//----
   return(0);
  }


Sie haben bereits eine vorgefertigte genommen. Wie wird es dort gemacht? Ich kann es nicht sehen - ich schreibe von meinem Handy aus.
 

Wie kann ich die Farbe eines mit derCAppDialog-Klasse erstellten Panels ändern?

   if(!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
      return(false);
 
Artyom Trishkin:
Sie müssen es bereits vorbereitet haben. Wie wird es dort gemacht? Ich kann es nicht nachschlagen - ich schreibe von meinem Handy aus.

Ich entschuldige mich für die Unannehmlichkeiten.

//+------------------------------------------------------------------+
//| start                                                            |
//+------------------------------------------------------------------+
int start()
  {

а надо 

//+------------------------------------------------------------------+
//| start                                                            |
//+------------------------------------------------------------------+
int OnStart

  { 

Aber die Datei wird erstellt, nicht mit den angeforderten Daten,

Ergebnis - eine Spalte mit 17 Zeilen boolescher Wahrheitsangaben

Es gibt eine ZeichenfolgeStringSetChar - schwor am Anfang,

inboolStringSetCharacter geändert- das muss der Grund für den boolschen Wert sein

//+------------------------------------------------------------------+
//| PrepareString                                                    |
//+------------------------------------------------------------------+
string PrepareString(string s)
  {
   bool exit = false;
   int index = 0;
   string str = s;
//----
   while(!exit)
     {
       index = StringFind(str, ".", index);
       if(index > -1)
           str = StringSetChar(str, index, ',');
       else
           exit = true;
     }
   return(str);
  }
Dateien:
VCSV.mq5  3 kb
Grund der Beschwerde: