Support Board
Date/Time: Sun, 22 Jun 2025 14:53:52 +0000
ConvertDateTimeToChartTimeZone broken on daylight savings day
View Count: 742
[2022-03-18 19:40:53] |
User719512 - Posts: 316 |
Here is a clean repro that you can run on this issue. Sierra Chart Engineering, please take a look and advise. Pacific Time/PT is 2 hours behind Chicago/Central Time/CT. So on a Chicago chart, 9am PT is 11 am CT. Using SetTime() for times before 10:00am give bad results on the DST day 3/13/2022. Using SetTime() for times on/after 10:00am give good results on the DST day 3/13/2022. This is running the same code. Sierra appears to be broken when using the pattern: sc.BaseDateTimeIn[sc.Index]; sc.ConvertDateTimeFromChartTimeZone(CurrentBarDateTime, TIMEZONE_LOS_ANGELES); SetTime() -> SetTime(Input_TimeOfDay.GetTime()); sc.ConvertDateTimeToChartTimeZone(PT_Time, TIMEZONE_LOS_ANGELES); The conversion FROM chart time and back TO chart time is not giving the same result on the DST day! One would expect a conversion FROM Central Time (chart time), TO Pacific Time, and back TO Central Time (Chart Time) to be equal. See output and a sample code below. You can repro this on a NQ 60 min chart set to Chicago time zone. -------------------------- Output -------------------------- Setting: Input_TimeOfDay -> 9:59 The time expected should all be "11:59:00". You can see for several bars, the time is "12:59:00". This is the issue. Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0049 @ 2022-03-11 14:30:00, PT_Time 2022-03-11 09:59:00 -> PT_to_CT_ChartTime 2022-03-11 11:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0050 @ 2022-03-11 15:15:00, PT_Time 2022-03-11 09:59:00 -> PT_to_CT_ChartTime 2022-03-11 11:59:00 | 2022-03-14 17:43:38.767 * --> error below Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0051 @ 2022-03-13 16:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0052 @ 2022-03-13 17:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0053 @ 2022-03-13 18:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0054 @ 2022-03-13 19:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0055 @ 2022-03-13 20:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0056 @ 2022-03-13 21:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0057 @ 2022-03-13 22:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0058 @ 2022-03-13 23:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0059 @ 2022-03-14 00:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0060 @ 2022-03-14 01:15:00, PT_Time 2022-03-13 09:59:00 -> PT_to_CT_ChartTime 2022-03-13 12:59:00 | 2022-03-14 17:43:38.767 * --> error above Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0061 @ 2022-03-14 02:15:00, PT_Time 2022-03-14 09:59:00 -> PT_to_CT_ChartTime 2022-03-14 11:59:00 | 2022-03-14 17:43:38.768 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0062 @ 2022-03-14 03:15:00, PT_Time 2022-03-14 09:59:00 -> PT_to_CT_ChartTime 2022-03-14 11:59:00 | 2022-03-14 17:43:38.768 * Setting: Input_TimeOfDay -> 10:00 Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0049 @ 2022-03-11 14:30:00, PT_Time 2022-03-11 10:00:00 -> PT_to_CT_ChartTime 2022-03-11 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0050 @ 2022-03-11 15:15:00, PT_Time 2022-03-11 10:00:00 -> PT_to_CT_ChartTime 2022-03-11 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0051 @ 2022-03-13 16:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0052 @ 2022-03-13 17:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0053 @ 2022-03-13 18:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0054 @ 2022-03-13 19:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0055 @ 2022-03-13 20:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.345 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0056 @ 2022-03-13 21:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.346 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0057 @ 2022-03-13 22:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.346 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0058 @ 2022-03-13 23:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.346 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0059 @ 2022-03-14 00:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.346 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0060 @ 2022-03-14 01:15:00, PT_Time 2022-03-13 10:00:00 -> PT_to_CT_ChartTime 2022-03-13 12:00:00 | 2022-03-14 17:45:23.346 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0061 @ 2022-03-14 02:15:00, PT_Time 2022-03-14 10:00:00 -> PT_to_CT_ChartTime 2022-03-14 12:00:00 | 2022-03-14 17:45:23.346 * Chart: F.US.ENQM22 [CBV][M] 60 Min #1 | Study: zzz_DST_Test | sc.Index: 0062 @ 2022-03-14 03:15:00, PT_Time 2022-03-14 10:00:00 -> PT_to_CT_ChartTime 2022-03-14 12:00:00 | 2022-03-14 17:45:23.346 * -------------------------- Code -------------------------- #include "sierrachart.h" // // scsf_DST_Test // SCSFExport scsf_DST_Test(SCStudyInterfaceRef sc) { SCInputRef Input_TimeOfDay = sc.Input[0]; if (sc.SetDefaults) { sc.GraphName = "zzz_DST_Test"; sc.AutoLoop = 1; sc.DrawZeros = 1; sc.GraphRegion = 1; sc.DrawStudyUnderneathMainPriceGraph = 0; Input_TimeOfDay.Name = "Time of Day PT"; Input_TimeOfDay.SetTime(HMS_TIME(6,30,0)); return; } if (sc.GetBarHasClosedStatus() != BHCS_BAR_HAS_CLOSED) { return; } SCDateTime CurrentBarDateTime = sc.BaseDateTimeIn[sc.Index]; SCDateTime CurrentBarDateTime_PT = sc.ConvertDateTimeFromChartTimeZone(CurrentBarDateTime, TIMEZONE_LOS_ANGELES); SCDateTime PT_Time = CurrentBarDateTime_PT; PT_Time.SetTime(Input_TimeOfDay.GetTime()); SCDateTime PT_to_CT_ChartTime = sc.ConvertDateTimeToChartTimeZone(PT_Time, TIMEZONE_LOS_ANGELES); SCString msg; msg.Format("sc.Index: %0.4d @ %s, PT_Time %s -> PT_to_CT_ChartTime %s", sc.Index, sc.FormatDateTime(CurrentBarDateTime).GetChars(), sc.FormatDateTime(PT_Time).GetChars(), sc.FormatDateTime(PT_to_CT_ChartTime).GetChars() ); sc.AddMessageToLog(msg, 1); } |
[2022-03-22 16:54:57] |
|
We will look this over. This may not be anything that we could easily resolve. Or maybe it is not something that is resolvable. But we will gain an understanding of it.
Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service: Sierra Chart Teton Futures Order Routing |
[2022-03-24 15:49:10] |
|
This will be resolved in the next release.
Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service: Sierra Chart Teton Futures Order Routing |
[2022-03-24 22:46:09] |
User719512 - Posts: 316 |
I have verified this fix in v2375 and so far, everything I have tested (live, replay, various times that broke my studies before) has given expected results. Thank you for addressing this issue. |
To post a message in this thread, you need to log in with your Sierra Chart account: