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

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

Réponse acceptée

Kazuya
Kazuya le 16 Mai 2019
確かに不便ですね・・。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 commentaires
Shoumei
Shoumei le 23 Mai 2019
備忘録
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 le 23 Mai 2019
すごい。

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur 書式設定と注釈 dans Help Center et File Exchange

Produits


Version

R2019a

Community Treasure Hunt

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

Start Hunting!