トレードステーションでチャートにVWAPを表示するEasyLanguageコード

2017年4月9日

VWAP

以前、 トレードステーション・Easylanguageの実用アイデア・面白アイデアを募集します! という記事を書いてみた所、VWAPに関してこのようなコメントがきました。

  • 日中足チャートにVWAPを描画できないか?
  • それを用いて自動売買できないか?(VWAP上抜けで買い、下抜けで売り)

まず、「日中足チャートにVWAPを描画できないか?」に関して試してみました。

トレードステーションでのVWAP

トレードステーション標準では、レーダースクリーン等にVWAPを表示できますが、チャートにはVWAPを表示できません。

EasyLanguage予約語にはVWAPがあるのですが、これでは日中足チャートを表示できません。

ですので、海外サイトなどをあさってみた所、このような記述を発見できました。

海外サイトでのVWAPのコード(問題あり)

EasyLanguage VWAP code help

この掲示板で紹介されているVWAPのコードはこちらです。VWAPに加え、ボリンジャーバンド的に標準偏差をプラスマイナスしたバンドをプロットしています。

vars: _VWAP(0),
pv(0),
Totalvolume(0),
Barfromstart(0),
Squareddeviations(0),
Probabilityweighteddeviations(0),
deviationsum(0),
standarddeviation(0);
If date > date[1] 
then 
begin
Barfromstart=0;
pv=AvgPrice*volume;
Totalvolume=volume;
_VWAP=pv/totalvolume;
end
else
begin
Barfromstart=Barfromstart[1]+1;
pv=pv[1] + AvgPrice*Volume;
Totalvolume=Totalvolume[1] + Volume;
_VWAP=pv/Totalvolume;
end;
deviationsum=0;
for value1= 0 to Barfromstart
begin
Squareddeviations=Square( _VWAP-avgprice[value1]);
Probabilityweighteddeviations=volume[value1]*Squareddeviations/Totalvolume;
deviationsum=deviationsum +Probabilityweighteddeviations;
end;

standarddeviation=SquareRoot(deviationsum); 
Plot1(_VWAP);
Plot2(_VWAP+standarddeviation);
Plot3(_VWAP+2*standarddeviation);
Plot4(_VWAP-standarddeviation);
Plot5(_VWAP-2*standarddeviation);

ですが、よーく見ると分かるのですが、このコードには問題があります。

ここで求めているVWAPは正しいVWAPではありません。。例えば以下、白い水平線がこの日の終わりの正しいVWAPですが、ズレておりますね。

VWAP

このコードで描画しているVWAPはあくまで擬似的なVWAPになっています。というより、トレードステーションのヘルプ:VWAP (Reserved Word)にもこう書いてある始末・・

VWAP は、ある取引日においてある証券の取引の大半が行われた価格を示します。1 日を通してバーの平均価格で取引された金額を加算し (「avgprice」xバー当たりの「取引された株数」)、その日に取引された株の総数で割って計算します。

これ間違ってますよね。計算式がおかしいです。

正しくVWAPを求めるコード

では正しくVWAPを求める方法はないのでしょうか・・

VWAPを計算するには約定価格とでき高のデータが必要なのですが、ヘルプを見てもこれを求められるような記述が発見できませんでした。残念。

なお、トレステ公式TwitterにはVWAPインジケータが提供されましたが、こちらもやはり疑似VWAPコードになっています。

正確なVWAPを描画する方法が発見できたら本記事に追記します。もしご存知の方がいらっしゃったら教えてください!