MathSin

指定された角度の正弦を返します。

double  MathSin(
  double  value      // ラジアンでの引数
  );

パラメータ

value

[in]  ラジアンで表した角度

戻り値

ラジアン単位で測定された角度の正弦(-1 〜 1)

注意事項

MathSin() の代わりに sin() を使用できます。

 

例:

#define GRAPH_WIDTH 750
#define GRAPH_HEIGHT 350
 
#include <Graphics\Graphic.mqh>
 
CGraphic ExtGraph;
//+------------------------------------------------------------------+
//| スクリプトプログラム開始関数                                              |
//+------------------------------------------------------------------+
void OnStart()
 {
  vector delta=vector::Full(101,2*M_PI/100);
  delta[0]=0;
//--- deltaステップで-1〜2 piの101個の値を取得する
  vector X=delta.CumSum();
//--- Xベクトルの各値の逆正弦値を計算する
  vector Y=MathSin(X);
 
//--- 計算された値をベクトルから配列に転送する
  double x_array[],y_array[];
  X.Swap(x_array);
  Y.Swap(y_array);
 
//--- 計算されたベクトル値のグラフを描画する
  CurvePlot(x_array,y_array,clrDodgerBlue);
 
//--- EscapeキーまたはPgDnキーを押してグラフを削除し(スクリーンショットを撮り)、終了するまで待機する
  while(!IsStopped())
    {
    if(StopKeyPressed())
        break;
    Sleep(16);
    }
 
//--- クリーンアップ
  ExtGraph.Destroy();
 }
//+------------------------------------------------------------------+
//| 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);
 }

 

結果:

MathSin_Screenshot

 

参照

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