candleチャート​の表示で休場日の間隔​が空かない様にしたい

10 ビュー (過去 30 日間)
Shoumei
Shoumei 2019 年 5 月 16 日
コメント済み: Kazuya 2019 年 5 月 23 日
Financial Toolboxのcandleを使ってローソクチャートを表示した際に、土日祝日でデータが無い場合、チャートが歯抜け状態で表示されます。
Yahoo Financeのチャートだと歯抜けにならいよう、間を詰めて表示してくれるのですが、同様にローソクチャートを表示することはできないでしょうか?
例えばcandleだと下図のようにGW期間のデータが無いので歯抜け部分があります。
Yahooファイナンスだと下図のように歯抜けにならずに表示されます。
おおよそ同じ期間のデータを表示していますが、異なるチャートの様に見えてしまいます。
なお、candle表示する際の元データはtimetableを使用しています。

採用された回答

Kazuya
Kazuya 2019 年 5 月 16 日
確かに不便ですね・・。x軸に datetime 型を使っている以上、間が空いてしまうのは避けられないので、candle 関数への入力を行列(各列が'Open', 'High', 'Low', 'Close'の順)にして、あとから x 軸に日付っぽいラベルを付けるというのが1つです。
load SimulatedStock.mat;
candle(TMW{end-20:end,1:4},'b');
title('Candlestick chart for TMW')
ha = gca;
xticksloc = ha.XTick + 1; % なぜか0スタートなので。
ha.XTickLabel = string(TMW.Time(xticksloc));
  4 件のコメント
Shoumei
Shoumei 2019 年 5 月 23 日
備忘録
load SimulatedStock.mat;
stockData = TMW(end-180:end, :);
candle(stockData{:, 1:4}) % 休場日が歯抜けになるので並べ替え
legend('Day', 'Location', 'northwest')
ha = gca;
xticksloc = ceil(ha.XTick);
tempTime = stockData.Time;
for n = length(stockData.Time)+1:max(xticksloc)+1
% Timetableの最終データからXTickの最後インデックスまでNaN代入
tempTime(end+1) = tempTime(end)+1;
end
sz1 = size(tempTime, 1);
if sz1 < 40
% データが少ないときは月日表示
tempTime.Format = 'M月d日';
ha.XTickLabel = string(tempTime(xticksloc+1));
xlabel(year(tempTime(end)))
else
% データが多いときは年月表示
tempTime.Format = 'yy年M月';
ha.XTickLabel = string(tempTime(xticksloc+1));
% 最初と最後だけ年月日
tempTime.Format = 'yy年M月d日';
ha.XTickLabel{1} = string(tempTime(xticksloc(1)+1));
ha.XTickLabel{end} = string(tempTime(xticksloc(end)+1));
if strcmp(year(tempTime(1)), year(tempTime(end)))
xlabel(year(tempTime(end)))
else
% 複数年に渡るときは開始年と終了年表示
xlabel(string(year(tempTime(1)))+' - '+string(year(tempTime(end))))
end
end
Clipboard01.png
Kazuya
Kazuya 2019 年 5 月 23 日
すごい。

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File Exchange書式設定と注釈 についてさらに検索

タグ

製品


リリース

R2019a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!