mirror of
https://github.com/0xrsydn/idx-cli.git
synced 2026-11-07 09:45:36 +00:00
fix(history): date candles in Jakarta time, not UTC
MSN stamps each IDX trading day at local midnight (17:00Z the previous day), so every MSN candle was labelled one day early. Yahoo weekly and monthly bars have the same stamp and were labelled Sunday / last day of the previous month. Take the date in the exchange offset instead: Yahoo's meta.gmtoffset when present, else WIB (UTC+7). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ld3fDSDiBzAaQvgZJX5NKM
This commit is contained in:
parent
793d765e5a
commit
0ba3d805a7
6 changed files with 43 additions and 4 deletions
|
|
@ -2,6 +2,8 @@ pub mod msn;
|
|||
pub mod types;
|
||||
pub mod yahoo;
|
||||
|
||||
use chrono::FixedOffset;
|
||||
|
||||
use crate::config::{HistoryProviderKind, ProviderKind};
|
||||
use crate::error::IdxError;
|
||||
use types::{
|
||||
|
|
@ -9,6 +11,14 @@ use types::{
|
|||
NewsItem, Period, Quote, SentimentData,
|
||||
};
|
||||
|
||||
/// IDX trades in Western Indonesia Time (WIB, UTC+7, no DST). Providers stamp
|
||||
/// candles in UTC, so day boundaries must be taken in this zone.
|
||||
pub(crate) const IDX_UTC_OFFSET_SECS: i32 = 7 * 3600;
|
||||
|
||||
pub(crate) fn idx_offset() -> FixedOffset {
|
||||
FixedOffset::east_opt(IDX_UTC_OFFSET_SECS).expect("valid WIB offset")
|
||||
}
|
||||
|
||||
pub trait QuoteProvider {
|
||||
fn quote(&self, symbol: &str) -> Result<Quote, IdxError>;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue