# チャートプログラムの書き方

トップ > チャートプログラムの書き方

Protraのチャートは、すべてProtra言語によって記述されたプログラムで描画されます。ここでは独自のチャートを追加する方法を説明します。

## チャートプログラムの置き場所

Protraはインストールされたディレクトリの下のchartディレクトリ以下に置かれた、拡張子.ptのファイルをチャートプログラムとして認識します。chartディレクトリ以下にプログラムを置くだけで、Protraのチャート選択メニューからプログラムを選択できます。

## 描画の仕組み

プログラムで描画する必要があるのは1日分のチャートだけです。Protraは指定された銘柄のチャートの左端から右端までの期間について、銘柄と日付を指定してプログラムを繰り返し実行します。グローバル変数の内容は繰り返しをまたいで引き継がれます。グローバル変数に途中結果を保存することで、複数日のデータを必要とする指標を計算できます。

## サンプルプログラム

以下の一行のプログラムは青色の出来高のバーを描画します。

    FillRectangle(Rgb(0, 0, 255), X-Dx/2, 0, Dx, Volume)

このプログラムでは、FillRectangle、Rgb、X、Dx、Volumeの5つの組み込み関数を使用しています。FillRectangleは矩形を塗りつぶします。Rgbは色を表す数値を、Xは描画すべきx座標を、Dxはチャートの一日分の横幅を、Volumeはその日の出来高を返します。組み込み関数については後述の組み込み関数を参照してください。

チャートの座標系は左下が原点で、x軸が右向きでy軸が上向きです。この例では、矩形の左端はXからDxの半分左側で、下端はチャートの描画領域の一番下です。矩形の幅はDxで高さはVolumeです。x座標の単位はピクセルですが、y座標にはピクセルとは関係のない値を指定できます。描画する際のy座標はProtraが適切に計算します。

## 指標の描画

指標の名前と値をチャートの左上に描画するには、まずグローバル変数$Namesと$Colorsの配列に指標の名前と色を設定します。上に示したの出来高のサンプルでは以下のように記述します。これでProtraによって"出来高"と青色で左上に描画されます。$Namesおよび$Colorsは6個まで設定できます。

    $Names[0] = "出来高"
    $Colors[0] = Rgb(0, 0, 255)
    FillRectangle(Rgb(0, 0, 255), X-Dx/2, 0, Dx, Volume)

指標の値を表示するには、以下のように組み込み関数Indicatorでその日の値を登録します。Indicatorの最初の引数は$Names[i]のiに対応します。これでマウスカーソルの位置の日付の指標の値が、左上の指標の名前の下に描画されます。

    $Names[0] = "出来高"
    $Colors[0] = Rgb(0, 0, 255)
    FillRectangle(Rgb(0, 0, 255), X-Dx/2, 0, Dx, Volume)
    Indicator(0, Volume)

## 非時系列チャートの描画

Protraは時系列チャートを前提としている部分が多いため、新値足や練足などの非時系列チャートの描画は難しいです。もし非時系列チャートを描画するのなら、まず変数$IsTimeSeriesを偽にしてProtraの日付描画機能をオフにします。その上で一番最初の呼び出しの時点でチャート全体を描画するとよいでしょう。コードにすると以下のようになります。

    $IsTimeSeries = 0
    if ! $Drawed
        // 描画処理
        $Drawed = 1
    end