Login Page - Create Account

Support Board


Date/Time: Thu, 30 Jul 2026 10:32:12 +0000



Subgraph value label no longer renders after recent update to 2919

View Count: 331

[2026-06-15 01:00:32]
User708541 - Posts: 205
Subgraph value label with LL_VALUE_ALIGN_VALUES_SCALE no longer renders after recent update (worked on 2915, not 2919)

Custom ACSIL study. A subgraph configured with LineLabel = LL_DISPLAY_VALUE | LL_VALUE_ALIGN_VALUES_SCALE (UI: Value label = "Right Side Value Scale") stopped displaying its value in the right-side values scale after updating from 2915 to 2919.
The subgraph carries a value only on the last bar or two (DrawZeros = false elsewhere); it's a current-value indicator, not a continuous line.

Confirmed: the value is present and correct (shows in the Region Data Line), it's within the visible scale range, and the subgraph draws (a guide segment appears at the right height). A built-in MACD added to the same region, same scale, with the identical "Right Side Value Scale" value-label setting, renders its tag normally — the only apparent difference is that the MACD has a value on every bar.
Tested with no effect: draw styles Point, Line, and "Subgraph Name and Value Labels Only"; all six horizontal alignment options; value written to sc.ArraySize-1. Reproduces on a clean chart.

What changed in the values-scale handling, and what's now required for a sparse/DrawZeros=false subgraph to display its value on the scale?
[2026-06-15 13:46:43]
Sierra_Chart Engineering - Posts: 24344
We are unaware of any changes which would cause this problem.

We need a way to be able to test this.
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, use the Teton service:
Sierra Chart Teton Futures Order Routing
[2026-06-15 15:59:14]
User708541 - Posts: 205
Do you need something from me?
[2026-06-15 21:02:10]
TriStar Trading - Posts: 198
I have the same issue when going from 2918 to 2919 but only on a select few of my custom studies. The select few were all written at the same time. Below is the cpp for one of the programs. All it does is plot lines for values entered as inputs. I have other custom studies that work just fine. Let me know if this helps or you need anything more. Thanks, Mike

#include "sierrachart.h"

SCDLLName("TriStar_FuseLines_vPROD")

SCSFExport scsf_TriStar_FuseLines_vPROD(SCStudyInterfaceRef sc)
{
// Subgraphs for the 5 level lines
SCSubgraphRef Fuse = sc.Subgraph[0];
SCSubgraphRef FuseR1 = sc.Subgraph[1];
SCSubgraphRef FuseR2 = sc.Subgraph[2];
SCSubgraphRef FuseR3 = sc.Subgraph[3];
SCSubgraphRef GBX = sc.Subgraph[4];

// Input references for level values
SCInputRef FuseValue = sc.Input[0];
SCInputRef FuseR1Value = sc.Input[1];
SCInputRef FuseR2Value = sc.Input[2];
SCInputRef FuseR3Value = sc.Input[3];
SCInputRef GbxValue = sc.Input[4];

// Input references for display options
SCInputRef ShowValues = sc.Input[5];
SCInputRef ShowNames = sc.Input[6];

// Input references for level names
SCInputRef FuseName = sc.Input[7];
SCInputRef FuseR1Name = sc.Input[8];
SCInputRef FuseR2Name = sc.Input[9];
SCInputRef FuseR3Name = sc.Input[10];
SCInputRef GbxName = sc.Input[11];

if (sc.SetDefaults)
{
sc.GraphName = "TST Fuse Lines vPROD";
sc.AutoLoop = 0; // Manual looping
sc.GraphRegion = 0;
sc.DrawStudyUnderneathMainPriceGraph = 1;
sc.GlobalDisplayStudySubgraphsNameAndValue = 0;
sc.DisplayStudyName = 0;
sc.DisplayStudyInputValues = 0;
sc.ScaleRangeType = SCALE_SAMEASREGION;

Fuse.Name = "Fuse";
Fuse.DrawStyle = DRAWSTYLE_LINE;
Fuse.PrimaryColor = RGB(255, 0, 255);
Fuse.LineWidth = 1;
Fuse.DrawZeros = false;

FuseR1.Name = "Fuse R1";
FuseR1.DrawStyle = DRAWSTYLE_LINE;
FuseR1.PrimaryColor = RGB(255, 0, 255);
FuseR1.LineWidth = 1;
FuseR1.DrawZeros = false;

FuseR2.Name = "Fuse R2";
FuseR2.DrawStyle = DRAWSTYLE_LINE;
FuseR2.PrimaryColor = RGB(255, 0, 255);
FuseR2.LineWidth = 1;
FuseR2.DrawZeros = false;

FuseR3.Name = "Fuse R3";
FuseR3.DrawStyle = DRAWSTYLE_LINE;
FuseR3.PrimaryColor = RGB(255, 0, 255);
FuseR3.LineWidth = 1;
FuseR3.DrawZeros = false;

GBX.Name = "Globex Fuse";
GBX.DrawStyle = DRAWSTYLE_LINE;
GBX.PrimaryColor = RGB(255, 0, 255);
GBX.LineWidth = 1;
GBX.DrawZeros = false;

FuseValue.Name = "Fuse Value"; FuseValue.SetFloat(0.0f);
FuseR1Value.Name = "Fuse R1 Value"; FuseR1Value.SetFloat(0.0f);
FuseR2Value.Name = "Fuse R2 Value"; FuseR2Value.SetFloat(0.0f);
FuseR3Value.Name = "Fuse R3 Value"; FuseR3Value.SetFloat(0.0f);
GbxValue.Name = "Globex Fuse Value"; GbxValue.SetFloat(0.0f);

ShowValues.Name = "Show Values"; ShowValues.SetYesNo(1);
ShowNames.Name = "Show Names"; ShowNames.SetYesNo(1);

FuseName.Name = "Fuse Short Name"; FuseName.SetString("Fuse");
FuseR1Name.Name = "Fuse R1 Short Name"; FuseR1Name.SetString("R1");
FuseR2Name.Name = "Fuse R2 Short Name"; FuseR2Name.SetString("R2");
FuseR3Name.Name = "Fuse R3 Short Name"; FuseR3Name.SetString("R3");
GbxName.Name = "Globex Short Name"; GbxName.SetString("GBX");

return;
}

  // Authorization check
  if (sc.IsUserAllowedForSCDLLName == false)
  {
    if (sc.Index == 0)
      sc.AddMessageToLog("This study requires authorization. Please contact TriStar Trading at mike32769@proton.me for access.", 1);

    return;
  }

// Rebuild labels and names only during full recalculation
if (sc.IsFullRecalculation)
{
int labelFlags = 0;

if (ShowValues.GetYesNo())
{
labelFlags |= LL_DISPLAY_VALUE;
labelFlags |= LL_VALUE_ALIGN_RIGHT;
labelFlags |= LL_VALUE_REVERSE_COLORS_INV;
}

if (ShowNames.GetYesNo())
{
labelFlags |= LL_DISPLAY_NAME;
labelFlags |= LL_NAME_ALIGN_FAR_RIGHT;

Fuse.ShortName = FuseName.GetString();
FuseR1.ShortName = FuseR1Name.GetString();
FuseR2.ShortName = FuseR2Name.GetString();
FuseR3.ShortName = FuseR3Name.GetString();
GBX.ShortName = GbxName.GetString();
}
else
{
Fuse.ShortName = "";
FuseR1.ShortName = "";
FuseR2.ShortName = "";
FuseR3.ShortName = "";
GBX.ShortName = "";
}

Fuse.LineLabel = labelFlags;
FuseR1.LineLabel = labelFlags;
FuseR2.LineLabel = labelFlags;
FuseR3.LineLabel = labelFlags;
GBX.LineLabel = labelFlags;
}

// Cache input values once per call
const float fuseVal = FuseValue.GetFloat();
const float fuseR1Val = FuseR1Value.GetFloat();
const float fuseR2Val = FuseR2Value.GetFloat();
const float fuseR3Val = FuseR3Value.GetFloat();
const float gbxVal = GbxValue.GetFloat();

int start = sc.UpdateStartIndex;
if (start < 0)
start = 0;

for (int i = start; i < sc.ArraySize; ++i)
{
Fuse = fuseVal;
FuseR1 = fuseR1Val;
FuseR2 = fuseR2Val;
FuseR3 = fuseR3Val;
GBX = gbxVal;
}
}

Private File
[2026-06-15 23:47:03]
TriStar Trading - Posts: 198
I assigned the line label directly like this and it worked.

Fuse.LineLabel = LL_DISPLAY_NAME | LL_NAME_ALIGN_CENTER | LL_NAME_ALIGN_FAR_RIGHT |
             LL_DISPLAY_VALUE | LL_VALUE_ALIGN_CENTER | LL_VALUE_ALIGN_RIGHT | LL_VALUE_REVERSE_COLORS_INV;

FWIW? This is the only place I have used this in all my code: |=
See the code above for reference in its use.
[2026-06-16 03:27:54]
Sierra_Chart Engineering - Posts: 24344
We are checking on this.
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, use the Teton service:
Sierra Chart Teton Futures Order Routing
[2026-06-16 07:16:28]
Sierra_Chart Engineering - Posts: 24344
We are working on the problem but will not have it resolved until tomorrow.

Also this code is completely wrong:
for (int i = start; i < sc.ArraySize; ++i)
{
Fuse = fuseVal;
FuseR1 = fuseR1Val;
FuseR2 = fuseR2Val;
FuseR3 = fuseR3Val;
GBX = gbxVal;
}

If it compiles, the compiler is not detecting a problem when it should.

It needs to be:
  for (int i = start; i < sc.ArraySize; ++i)
  {
    Fuse.Data[i] = fuseVal;
    FuseR1.Data[i] = fuseR1Val;
    FuseR2.Data[i] = fuseR2Val;
    FuseR3.Data[i] = fuseR3Val;
    GBX.Data[i] = gbxVal;
  }

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, use the Teton service:
Sierra Chart Teton Futures Order Routing
Date Time Of Last Edit: 2026-06-16 07:17:07
[2026-06-16 20:44:07]
Sierra_Chart Engineering - Posts: 24344
This should now be resolved in version 2920.
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, use the Teton service:
Sierra Chart Teton Futures Order Routing

To post a message in this thread, you need to log in with your Sierra Chart account:

Login

Login Page - Create Account