초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 689

 
Roma Ivanov :
여기에서 가져온 공식 - https://www.mql5.com/ru/articles/1492
기사에서 참조로 -- 연산 ^는 지수입니다.
 
Roma Ivanov :
여기에서 가져온 공식 - https://www.mql5.com/en/articles/1492

읽지 않는다. 그러나 기사 (Excel)의 공식과 그래프로 판단 - 지수.

내가 틀릴 수 있다

 

좋은 시간! 2차원 배열을 *.csv 형식으로 변환하는 방법이 궁금했는데 적당한 예를 찾았는데 mt4의 경우 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/en/articles/1443

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

좋은 시간! 2차원 배열을 *.csv 형식으로 변환하는 방법이 궁금했는데 적당한 예를 찾았는데 mt4의 경우 5번째에 필요합니다.

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

배열은 참조로만 전달할 수 있습니다.

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

배열은 참조로만 전달할 수 있습니다.

int GenerateCsv( string fileName, int arraySizeX, int arraySizeY,
                 double & arrayIndexX[], double & arrayIndexY[], double & arrayZ[][])
그러나 & arrayZ[][]에서 맹세합니다 - '[' - 잘못된 인덱스 값

 
Top2n :
그러나 & arrayZ[][]에서 맹세합니다 - '[' - 잘못된 인덱스 값

arrayZ의 차원은 몇 개입니까?
 
Artyom Trishkin :
arrayZ의 차원은 몇 개입니까?

선언 arrayZ[][3000], 16과 같으면 일반적으로 이벤트 처리 기능 을 찾을 수 없습니다.

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

선언 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 );
  }


당신은 이미 그것을 가져갔다. 그곳에서 모든 것이 어떻게 이루어지나요? 모바일로 작성중이라 안보이네요.
 

CAppDialog 클래스를 사용하여 만든 패널의 색상을 변경하려면 어떻게 해야 합니까?

   if (!CAppDialog::Create(chart,name,subwin,x1,y1,x2,y2))
       return ( false );
 
Artyom Trishkin :
당신은 이미 그것을 가져갔다. 그곳에서는 모든 것이 어떻게 이루어지나요? 안보이고 모바일로 작성중입니다.

방해해서 미안해

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

а надо 

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

  { 

그러나 파일은 요청된 데이터가 아닌

결과 - 하나의 열이 17행으로 채워짐 부울 true

StringSetChar - 처음에 cursed 문자열 이 있는 줄이 있습니다.

부울 로 변경 StringSetCharacter - 이 때문에 부울 값을 제공합니다.

//+------------------------------------------------------------------+
//| 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);
  }
파일:
VCSV.mq5  3 kb
사유: