Download MetaTrader 5

Examples: Three-Dimensional Graphs - a Professional Tool of Market Analyzing

To add comments, please log in or register
MetaQuotes Software Corp.
Moderator
182377
MetaQuotes Software Corp. 2007.09.13 12:27 

New article Three-Dimensional Graphs - a Professional Tool of Market Analyzing has been published:

In this article we will write a simple library for the construction of 3D graphs and their further viewing in Microsoft Excel. We will use standard MQL4 options to prepare and export data into *.csv file.

All traders operate with constantly changing prices and quotes. Everyone searches correspondences and regularities. We analyze volumes, values of different indicators and many other parameters. I don't think it necessary to persuade you of MQL4 benefits in terms of market analysis. You simply write a script and make conclusions based on results. Usually analysis is conducted upon charts or graphs that reflect a certain correspondences of two variables. All this is fine, of course, but sometimes we need to find the correspondences of three variables and visualize them. For this purpose 3D graphs and their analysis are used all over the world. Such approach saves your time and money.

In this article we will write a simple library for the construction of 3D graphs and their further viewing in Microsoft Excel. We will use standard MQL4 options to prepare and export data into *.csv file

Author: Antoniuk Oleg

MQL4 Comments
16319
MQL4 Comments 2008.01.03 02:59  
I am trying to make this 3D chart for x=time, y=price, z=volume.
Sorry for simple questions I'm very new to coding.
//+------------------------------------------------------------------+
//|                                                  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
//+------------------------------------------------------------------+
//| 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);
  }
//+------------------------------------------------------------------+
//| GenerateCsv                                                      |
//+------------------------------------------------------------------+
int GenerateCsv(string fileName, int arraySizeX, int arraySizeY, int arraySizeZ,
                double arrayIndexX[], double arrayIndexY[], double arrayIndexZ[])
  {
   int handle = FileOpen(fileName, FILE_CSV|FILE_WRITE, ' '), x, y, z;
   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 + arrayIndexY[y];
           str = str + ";";
             }
           FileWrite(handle, PrepareString(str));
           
                for(z = 0; z < arraySizeZ; z++)
                 {
                str = str + arrayIndexZ[z];
                str = str + ";";         
               }
             FileWrite(handle, PrepareString(str));
       {
     }
   FileClose(handle);   
   return(handle);
  }
//+------------------------------------------------------------------+
JUAN MANUEL ALMODOVAR
111
JUAN MANUEL ALMODOVAR 2008.09.25 17:29  

Just a little bug.

At the line


arrayZ[x,y]=MathSin(arrayIndexX[x]+arrayIndexY[y]);


the code must be:

arrayZ[x,y]=MathSin(arrayIndexX[x]) + MathSin(arrayIndexY[y]);


if you see the results of the Z array there are greater than 1 and it's not possible in a Sinus, but in fact they approach to 2, the sum of the x and y sinus...

MQL4 Comments
16319
MQL4 Comments 2012.01.30 11:48  

Hello,

I would like to ask for support.

When I drag&drop the script into a price chart no new file "test.csv" appeared there.

I've also corrected the line as specified in the comment by "moneymakers", had no compiling errors and seemingly everything is placed where it should be.

Kind regards,

serendippo

To add comments, please log in or register