Yeni başlayanlardan sorular MQL5 MT5 MetaTrader 5 - sayfa 689

 
Roma Ivanov :
buradan alınan formül - https://www.mql5.com/en/articles/1492
makalede referans olarak -- ^ işlemi üs alma işlemidir
 
Roma Ivanov :
buradan alınan formül - https://www.mql5.com/en/articles/1492

Okuma. Ancak makaledeki (Excel) formül ve grafiklere bakılırsa - üs.

yanılıyor olabilirim

 

İyi zaman! İki boyutlu bir diziyi *.csv formatına nasıl çevireceğimi merak ettim, uygun bir örnek buldum ama mt4 için bu 5. için gerekli.

//+------------------------------------------------------------------+
//|                                                  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/en/articles/1443

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

İyi zaman! İki boyutlu bir diziyi *.csv formatına nasıl çevireceğimi merak ettim, uygun bir örnek buldum ama mt4 için bu 5. için gerekli.

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

Diziler yalnızca referans yoluyla iletilebilir:

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

Diziler yalnızca referans yoluyla iletilebilir:

int GenerateCsv( string fileName, int arraySizeX, int arraySizeY,
                 double & arrayIndexX[], double & arrayIndexY[], double & arrayZ[][])
Ve yine de yemin ediyor & arrayZ[][] diyor ki - '[' - geçersiz dizin değeri

 
Top2n :
Ve yine de yemin ediyor & arrayZ[][] diyor ki - '[' - geçersiz dizin değeri

arrayZ'nin kaç boyutu var?
 
Artyom Trishkin :
arrayZ'nin kaç boyutu var?

Bildirildi & arrayZ[][3000], 16'ya eşitlersem, genellikle olay işleme işlevi bulunamadı

#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 :

Bildirilen & 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 );
  }


Onu zaten aldın. Orada her şey nasıl yapılıyor? Göremiyorum cepten yazıyorum.
 

CAppDialog sınıfı kullanılarak oluşturulan bir panelin rengini nasıl değiştirebilirim?

   if (!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
       return ( false );
 
Artyom Trishkin :
Onu zaten aldın. Orada her şey nasıl yapılıyor? Göremiyorum cepten yazıyorum.

rahatsız ettiğim için özür dilerim

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

а надо 

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

  { 

Ancak dosya, istenen verilerle değil,

sonuç - bir sütun dolu 17 satır boolean true

StringSetChar dizesine sahip bir satır var - başlangıçta lanetli,

bool olarak değiştirildi StringSetCharacter - bu nedenle bir boole verir

//+------------------------------------------------------------------+
//| 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);
  }
Dosyalar:
VCSV.mq5  3 kb