# 組み込み関数

トップ > 組み込み関数

Protra言語のプログラムでは、さまざまな組み込み関数を利用できます。ここでは組み込み関数の詳細と@作用素との関係を説明します。

## 配列

int Length(array) | 配列の長さを返します。

## 数学

float Exp(float) | eの累乗を返します。
float Log(float) | 自然対数を返します。
float Sqrt(float) | 平方根を返します。
float Sin(float) | サインを返します。
float Cos(float) | コサインを返します。
float Tan(float) | タンジェントを返します。
float Asin(float) | アークサインを返します。
float Acos(float) | アークコサインを返します。
float Atan(float) | アークタンジェントを返します。
float Pow(float, float) | 最初の数を2番目の数で累乗した値を返します。
float Random() | 0.0以上1.0未満の浮動小数点の乱数を返します。
int Random(int max) | 0以上max未満の整数の乱数を返します。

## 株価データ

int Open | 始値を返します。
int High | 高値を返します。
int Low | 安値を返します。
int Close | 終値を返します。
float Volume | 出来高を1000で割ったものを返します。
int Index | 最も古い株価データの営業日から何営業日目かを返します。
int RightIndex | チャートの右端のIndexを返します(Protra)。 最新の株価データのIndexを返します(PtSim)。

対象となる日付と銘柄は、ProtraかPtSimによって暗黙的に指定されます。指定された日付と銘柄を変更するには@作用素を使います。日付はint型@作用素で指定した値の営業日だけ前後にずらせます。銘柄はstring型@作用素で証券コードで指定できます。

株価データが存在しない日付や銘柄を指定すると、組み込み関数はnullを返します。int型@作用素で古すぎる日付や未来の日付を指定した場合や、string型@作用素でまだ上場していない銘柄や、存在しない銘柄を指定した場合が該当します。

Indexはint型@作用素の値を加えた値を返します。RightIndexはint型@作用素の影響を受けません。string型@作用素をIndexやRightIndexに指定すると、その銘柄のIndexやRightIndexの値が返ります。IndexとRightIndexの値は各銘柄の上場日に依存するので、銘柄によって異なる場合があります。

## 銘柄データ

string Code | 証券コードを返します。
string Market | 市場コードを返します。"T1"が東証1部、"T2"が東証2部、"M"がマザーズ、"J"がJasdaqです。
int Unit | 単元数を返します。不明の場合は0です。

これらの組み込み関数の対象となる銘柄は、ProtraかPtSimによって暗黙的に指定されます。変更するときはstring型@作用素を使います。

## 日付

int Year | 年を返します。
int Month | 月を返します。
int Day | 日を返します。
int DayOfWeek | 曜日を返します。月曜から金曜を1から5で返します。

これらの組み込み関数の対象となる日付は、ProtraかPtSimによって暗黙的に指定されます。変更したいときはint型@作用素を使います。

## 描画

Protraでチャートの描画に使う組み込み関数です。

int X | 描画すべきx座標を返します。
int Dx | チャートの1日分の幅を返します。
int Rgb | 赤、緑、青の明度から求めた色を表す整数を返します。 明度は0～255の整数です
null DrawLine(int rgb, float x1, float y1, float x2, float y2)
座標(x1, y1)から(x2, y2)へ色rgbの直線を描画します。
null DrawRectangle(int rgb, float x1, float y1, float x2, float y2)
座標(x, y)が左下で幅w、高さhの色rgbの矩形を描画します。 高さが負の場合は座標(x, y)が左上で下方に矩形を描画します
null DrawEllipse(int rgb, float x, float y, float w, float h)
矩形に内接する楕円を描画します。
null DrawString(int rgb, string s, float x, float y, int dh)
座標(x, y)のdhポイント上に色rgbの文字列sを描画します。 最初の引数を省略すると黒で描画します。
null FillRectangle(int rgb, float x, float y, float w, float h)
矩形内部を塗りつぶします。
null FillEllipse(int rgb, float x, float y, float w, float h)
矩形に内接する楕円を塗りつぶします。
null Indicator(int i, float v)
チャートに表示する指標`$Name[i]`の値としてvを登録します。

`{i}X`のようにint型@作用素をXに用いると、前後の営業日のx座標である`X + Dx * i`が返ります。int型@作用素をIndicatorに用いると、前後の営業日の指標の値を登録できます。ほかの関数は@作用素の影響を受けません。

## 売買

PtSimで売買の指示に使う組み込み関数です。

null Buy(int price, int num) | price円でnum株買います。
null Sell(int price, int num) | price円でnum株売ります。

売買の対象となる日付と銘柄はPtSimによって暗黙的に指定されます。銘柄を変更するときはstring型@作用素で証券コードを指定します。日付をint型作用素でずらすことも一応できますが、間違いが起きやすいのでお勧めできません。