MathPow

基数を指定された乗まで引き上げます。

double  MathPow(
  double  base,        // 底
  double  exponent      // 指数値
  );

パラメータ

base

[in]  底

exponent

[in]  指数値

戻り値

基数を指定された乗まで引き上げた値

注意事項

MathPow()の代わりにpow()を使用できます。

 

例:

#define GRAPH_WIDTH 750
#define GRAPH_HEIGHT 350
 
#property script_show_inputs
 
#include <Graphics\Graphic.mqh>
 
//--- 入力パラメータ
input double   InpExponentValue  = 2;   // 指数値
 
CGraphic ExtGraph;
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
//--- step 1で0〜10の11の値を取得する
  vector X(11,VectorArange);
  Print("vector X = \n",X);
//--- X ベクトルの各値を InpExponentValue 乗して計算する
  X=MathPow(X,InpExponentValue);
  Print("MathPow(X,",(string)InpExponentValue,") = \n",X);
 
//--- 計算された値をベクトルから配列に転送する
  double y_array[];
  X.Swap(y_array);
 
//--- 計算されたベクトル値のグラフを描画する
  CurvePlot(y_array,clrDodgerBlue);
 
//--- EscapeキーまたはPgDnキーを押してグラフを削除し(スクリーンショットを撮り)、終了するまで待機する
  while(!IsStopped())
    {
    if(StopKeyPressed())
        break;
    Sleep(16);
    }
 
//--- クリーンアップ
  ExtGraph.Destroy();
  /*
  結果:
  vector X =
  [0,1,2,3,4,5,6,7,8,9,10]
  MathPow(X,2.0) =
  [0,1,4,9,16,25,36,49,64,81,100]
  */
 }
//+------------------------------------------------------------------+
//| ベクトルに「value」を「step」単位で入力する                                  |
//+------------------------------------------------------------------+
template<typename T>
void VectorArange(vector<T> &vec,T value=0.0,T step=1.0)
 {
  for(ulong i=0; i<vec.Size(); i++,value+=step)
    vec[i]=value;
 }
//+------------------------------------------------------------------+
//| ESCが押されたら「true」を返す                                            |
//| PgDnが押されたら、グラフのスクリーンショットを撮り、「true」を返す                     |
//| その他の場合は「false」を返す                                           |
//+------------------------------------------------------------------+
bool StopKeyPressed()
 {
//--- ESCが押されたら「true」を返す
  if(TerminalInfoInteger(TERMINAL_KEYSTATE_ESCAPE)!=0)
    return(true);
//--- PgDnが押されてグラフのスクリーンショットが正常に取得されたら、「true」を返す
  if(TerminalInfoInteger(TERMINAL_KEYSTATE_PAGEDOWN)!=0 && MakeAndSaveScreenshot(MQLInfoString(MQL_PROGRAM_NAME)+"_Screenshot"))
    return(true);
//--- 「false」を返す
  return(false);
 }
//+------------------------------------------------------------------+
//| グラフオブジェクトを作成して曲線を描く                                        |
//+------------------------------------------------------------------+
void CurvePlot(double &x_array[], double &y_array[], const color colour)
 {
  ExtGraph.Create(ChartID(), "Graphic", 0, 0, 0, GRAPH_WIDTH, GRAPH_HEIGHT);
  ExtGraph.CurveAdd(x_array, y_array, ColorToARGB(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(54, 9, text1, ColorToARGB(clrBlack));
  ExtGraph.TextAdd(54,21, text2, ColorToARGB(clrBlack));
  ExtGraph.Update();
 }
//+------------------------------------------------------------------+
//| スクリーンショットを撮り、画像をファイルに保存する                                |
//+------------------------------------------------------------------+
bool MakeAndSaveScreenshot(const string file_name)
 {
  string file_names[];
  ResetLastError();
  int selected=FileSelectDialog("Save Picture", NULL, "All files (*.*)|*.*", FSD_WRITE_FILE, file_names, file_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(0, file_names[0], GRAPH_WIDTH, GRAPH_HEIGHT);
  ChartSetInteger(0,CHART_SHOW,true);
  return(res);
 }

 

結果:

MathPow_Screenshot

 

参照

実数型(double、float)統計科学的チャートクライアント端末プロパティ