MathSqrt

Devuelve la raíz cuadrada de un número.

double  MathSqrt(
   double  value      // número positivo
   );

Parámetros

value

[in]  Valor numérico positivo.

Valor devuelto

Raíz cuadrada de value. Si value es negativo, MathSqrt devuelve NaN (valor indeterminado).

Nota

En vez de la función MathSqrt() se puede usar la función sqrt().

 

Ejemplo:

#define GRAPH_WIDTH  750
#define GRAPH_HEIGHT 350
 
#include <Graphics\Graphic.mqh>
 
CGraphic ExtGraph;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- obtenemos 11 valores de 0 a 10 con paso 1
   vector X(11,VectorArange);
   Print("vector X = \n",X);
//--- calculamos la raíz cuadrada para cada valor del vector X
   X=MathSqrt(X);
   Print("MathSqrt(X) = \n",X);
   
//--- transferimos los valores calculados de vector a array
   double y_array[];
   X.Swap(y_array);
 
//--- dibujamos el gráfico de los valores calculados del vector
   CurvePlot(y_array,clrDodgerBlue);
 
//--- esperamos la pulsación de Escape o PgDn para eliminar el gráfico (crear una captura de pantalla) y finalizar el funcionamiento
   while(!IsStopped())
     {
      if(StopKeyPressed())
         break;
      Sleep(16);
     }
 
//--- limpiamos
   ExtGraph.Destroy();
   /*
  resultado:
   vector X = 
   [0,1,2,3,4,5,6,7,8,9,10]
   MathSqrt(X) = 
   [0,1,1.414213562373095,1.732050807568877,2,2.23606797749979,2.449489742783178,2.645751311064591,2.82842712474619,3,3.16227766016838]
   */
  }
//+------------------------------------------------------------------+
//| Rellena el vector con el valor value con el incremento step      |
//+------------------------------------------------------------------+
template<typename T
void VectorArange(vector<T> &vec,T value=0.0,T step=1.0
  { 
   for(ulong i=0i<vec.Size(); i++,value+=step
      vec[i]=value
  }
//+------------------------------------------------------------------+
//| Al pulsar ESC, retorna true                                      |
//| Al pulsar PgDn hace una captura del gráfico y retorna true       |
//| Si no, retorna false                                             |
//+------------------------------------------------------------------+
bool StopKeyPressed()
  {
//--- si ESC está pulsado, retornamos true
   if(TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE)!=0)
      return(true);
//--- si PgDn está pulsado y se realiza correctamente la captura de pantalla, retornamos true
   if(TerminalInfoInteger(TERMINAL_KEYSTATE_PAGEDOWN)!=0 && MakeAndSaveScreenshot(MQLInfoString(MQL_PROGRAM_NAME)+"_Screenshot"))
      return(true);
//--- retornamos false
   return(false);
  }
//+------------------------------------------------------------------+
//| Crea un objeto de gráfico y dibuja una curva                     |
//+------------------------------------------------------------------+
void CurvePlot(double &x_array[], double &y_array[], const color colour)
  {
   ExtGraph.Create(ChartID(), "Graphic"000GRAPH_WIDTHGRAPH_HEIGHT);
   ExtGraph.CurveAdd(x_arrayy_arrayColorToARGB(colour), CURVE_LINES);
   ExtGraph.IndentUp(30);
   ExtGraph.CurvePlotAll();
   string text1="Press ESC to delete the graph and stop the script, or";
   string text2="Press PgDn to create a screen, delete the graph and stop the script";
   ExtGraph.TextAdd(549text1ColorToARGB(clrBlack));
   ExtGraph.TextAdd(54,21text2ColorToARGB(clrBlack));
   ExtGraph.Update();
  }
//+------------------------------------------------------------------+
//| Crea una captura de pantalla y guarda la imagen en un archivo    |
//+------------------------------------------------------------------+
bool MakeAndSaveScreenshot(const string file_name)
  {
   string file_names[];
   ResetLastError();
   int selected=FileSelectDialog("Save Picture"NULL"All files (*.*)|*.*"FSD_WRITE_FILEfile_namesfile_name+".png");
   if(selected<1)
     {
      if(selected<0)
         PrintFormat("%s: FileSelectDialog() function returned error %d"__FUNCTION__GetLastError());
      return false;
     }
   
   bool res=false;
   if(ChartSetInteger(0,CHART_SHOW,false))
      res=ChartScreenShot(0file_names[0], GRAPH_WIDTHGRAPH_HEIGHT);
   ChartSetInteger(0,CHART_SHOW,true);
   return(res);
  }

 

Resultado:

MathSqrt_Screenshot

Vea también

Tipos reales (double, float), Estadística, Gráficos científicos, Estado del terminal de cliente