Login Page - Create Account

Support Board


Date/Time: Tue, 22 Apr 2025 16:27:02 +0000



Post From: Annoying problem with Heiken Ashi and ACSIL (for SC engineer)

[2025-01-08 16:24:50]
User431178 - Posts: 654
When Heiken Ashi is set to "Display as main price Graph", it is impossible to access Heiken Ashi OHLC values: I always get the underlying price OHLC, even when accessing values from the indicator itself.

Are you sure about that?


SCSFExport scsf_hk_values(SCStudyInterfaceRef sc)
{
  auto& in_study_id = sc.Input[0];

  if (sc.SetDefaults)
  {
    sc.GraphName = "Chart Values";
    sc.GraphRegion = 0;
    sc.AutoLoop = 0;
    sc.ScaleRangeType = SCALE_AUTO;
    sc.DisplayStudyInputValues = 0;
    sc.CalculationPrecedence = VERY_LOW_PREC_LEVEL;

    in_study_id.Name = "Study ID";
    in_study_id.SetStudyID(0);

    return;
  }

  auto refData = SCGraphData{};

  sc.GetStudyArraysFromChartUsingID(sc.ChartNumber
                  , in_study_id.GetStudyID()
                  , refData);


  if (sc.UpdateStartIndex == 0)
  {
    const auto open = sc.FormatGraphValue(sc.Open[sc.ArraySize - 1], sc.BasedOnGraphValueFormat);
    const auto high = sc.FormatGraphValue(sc.High[sc.ArraySize - 1], sc.BasedOnGraphValueFormat);
    const auto low = sc.FormatGraphValue(sc.Low[sc.ArraySize - 1], sc.BasedOnGraphValueFormat);
    const auto last = sc.FormatGraphValue(sc.Close[sc.ArraySize - 1], sc.BasedOnGraphValueFormat);

    auto msg = SCString{};

    msg.Format("Main Chart Values at index %d | Open: %s, High: %s, Low: %s, Last: %s"
      , sc.ArraySize - 1
      , open.GetChars()
      , high.GetChars()
      , low.GetChars()
      , last.GetChars());

    sc.AddMessageToLog(msg, 0);

    if (refData.GetArraySize() == 0)
      return;

    const auto open_ref = sc.FormatGraphValue(refData[SC_OPEN][sc.ArraySize - 1], sc.BasedOnGraphValueFormat);
    const auto high_ref = sc.FormatGraphValue(refData[SC_HIGH][sc.ArraySize - 1], sc.BasedOnGraphValueFormat);
    const auto low_ref = sc.FormatGraphValue(refData[SC_LOW][sc.ArraySize - 1], sc.BasedOnGraphValueFormat);
    const auto last_ref = sc.FormatGraphValue(refData[SC_LAST][sc.ArraySize - 1], sc.BasedOnGraphValueFormat);

    msg.Format("HK Values at index %d | Open: %s, High: %s, Low: %s, Last: %s"
      , sc.ArraySize - 1
      , open_ref.GetChars()
      , high_ref.GetChars()
      , low_ref.GetChars()
      , last_ref.GetChars());

    sc.AddMessageToLog(msg, 0);
  }
}



2025-01-08 10:19:51.416 | Chart: NQH25-CME[M] 1 Min #1 | Study: Chart Values | Main Chart Values at index 24856 | Open: 21319.75, High: 21324.50, Low: 21319.75, Last: 21323.00
2025-01-08 10:19:51.416 | Chart: NQH25-CME[M] 1 Min #1 | Study: Chart Values | HK Values at index 24856 | Open: 21314.32, High: 21324.50, Low: 21314.32, Last: 21323.00

2025-01-08 10:19:58.176 | Chart: NQH25-CME[M] 1 Min #1 Heikin-Ashi | Study: Chart Values | Main Chart Values at index 24856 | Open: 21314.32, High: 21324.50, Low: 21314.32, Last: 21323.00
2025-01-08 10:19:58.176 | Chart: NQH25-CME[M] 1 Min #1 Heikin-Ashi | Study: Chart Values | HK Values at index 24856 | Open: 21314.32, High: 21324.50, Low: 21314.32, Last: 21323.00

Rows 1 and 2 above are with HK as sub-chart, rows 3 and 4 are with HK as main chart.
When HK is main chart, values return for OHLC are same for HK and chart.