まくまくトレードステーションノート
EasyLanguage: 銘柄のファンダメンタルデータを取得する (GetFundData)
2018-11-25

個別銘柄の決算日、営業利益、PER、PBR といったファンダメンタルデータを取得するには、GetFundData 系の API を使用します。 取得するデータの型(数値、文字列、真偽値)に応じて、以下の3種類の関数を使用します。

  • GetFundData - 数値のファンダメンタルデータを取得する
  • GetFundDataAsString - 文字列のファンダメンタルデータを取得する
  • GetFundDataAsBoolean - 真偽値のファンダメンタルデータを取得する

関数の定義

GetFundData(sFieldName, nDataPointsBack) → 数値
GetFundDataAsString(sFieldName, nDataPointsBack) → 文字列
GetFundDataAsBoolean(sFieldName, nDataPointsBack) → 真偽値

1つ目のパラメータ sFieldName には、取得したいファンダメンタルデータを表す文字列を指定します。 どのような情報が取得できるかは、以下の TradeStation のヘルプページに一覧が載っています。

2つ目のパラメータ nDataPointsBack には、何四半期前の情報を取得するかを指定します。 1 を指定すれば、前の四半期の情報を取得することができます。

下記の例では、個別銘柄の売上高や各種利益を取得しています。

vars:
    double sales(0),
    double op(0),
    double rp(0),
    double np(0);

sales = GetFundData("CE_SALES", 0);  // 売上高
op = GetFundData("CR_OP", 0);  // 営業利益
rp = GetFundData("CR_RP", 0);  // 経常利益
np = GetFundData("CR_NP", 0);  // 純利益

Once begin
    Print("CE_SALES(売上高)=", sales:0:0, " (100万円)");
    Print("CE_OP(営業利益)=", op:0:0, " (100万円)");
    Print("CE_RP(経常利益)=", rp:0:0, " (100万円)");
    Print("CE_NP(純利益)=", np:0:0, " (100万円)");
end;

出力例(印刷ログ)

CE_SALES(売上高)=1650000 (100万円)
CE_OP(営業利益)=33259 (100万円)
CE_RP(経常利益)=34047 (100万円)
CE_NP(純利益)=24779 (100万円)

エラー処理を追加する

直前の GetFundData 系の関数呼び出しがエラーになると、GetLastFundDataError 変数(予約語)の値が 0 (fdrOK) 以外の値になります。 この情報を参照すれば、ファンダメンタルデータを取得できなかった場合の例外処理を記述することができます。

vars: op(0);

Once begin
    op = GetFundData("CR_OP", 0);  // 営業利益(100万円)
    If GetLastFundDataError <> fdrOk then Print("Cannot get CR_OP");
    Print("CE_OP(営業利益)=", op:0:0, " (100万円)");
end;

あるいは、多値関数バージョンのファンダメンタルデータ取得関数を使用して、エラー情報を取得することもできます。

基本バージョン 多値関数バージョン
GetFundData FundValue
GetFundDataAsString FundString
GetFundDataAsBoolean FundBoolean

多値関数バージョンでは、第3パラメータが出力用パラメータとなっており、そこでエラーコードを受け取ることができます。

vars: op(0), error(-1);

Once begin
    op = FundValue("CR_OP", 0, error);  // 営業利益(100万円)
    If error <> fdrOk then Print("Error=", error:0:0);
    Print("CE_OP(営業利益)=", op:0:0, " (100万円)");
end;
2018-11-25