Login Page - Create Account

Support Board


Date/Time: Fri, 07 Feb 2025 02:49:26 +0000



Post From: Calculation Precedence And Auto looping

[2020-05-15 08:54:09]
Flipper - Posts: 65
Code for the first Manual looping study


SCSFExport scsf_ManualLoopExample(SCStudyInterfaceRef sc)
{
  SCSubgraphRef NumberSubgraph = sc.Subgraph[0];


  if (sc.SetDefaults)
  {
    // Set the configuration and defaults
    sc.GraphName = "Manual Loop Example";

    sc.AutoLoop = 0; // no auto-looping


    NumberSubgraph.Name = "Number";

    return;
  }

  int& num = sc.GetPersistentInt(0);
  int& LastBarIndexProcessed = sc.GetPersistentInt(1);
  SCString MessageText;

  // Do data processing
  for (int Index = sc.UpdateStartIndex; Index < sc.ArraySize; Index++)
  {
    num = Index;
    NumberSubgraph[Index] = sc.Volume[Index];


    // One Time Processing per Bar
    if (Index == 0)
      LastBarIndexProcessed = -1;
    if (Index == LastBarIndexProcessed)
      return;
    LastBarIndexProcessed = Index;

    MessageText.Format("STUDY-1 Index: %d, num: %d Subgraph value last Bar: %.2f ", Index, num, NumberSubgraph[Index]);
    sc.AddMessageToLog(MessageText, 0);

  }
}


And Code for the second Study which references the first manual looping study.


SCSFExport scsf_ExampleReference(SCStudyInterfaceRef sc)
{

  SCSubgraphRef ReferenceSubgraph = sc.Subgraph[0];

  SCInputRef StudyReference = sc.Input[0];

  SCString MessageText;

  if (sc.SetDefaults)
  {
    sc.GraphName = "Example Reference";
    sc.AutoLoop = 1;
    sc.CalculationPrecedence = LOW_PREC_LEVEL;


    ReferenceSubgraph.Name = "ReferanceSubgraph";

    StudyReference.Name = "Auto Loop Study Reference";
    StudyReference.SetStudySubgraphValues(0, 0);


    return;
  }


  sc.GetStudyArrayUsingID(StudyReference.GetStudyID(), StudyReference.GetSubgraphIndex(), ReferenceSubgraph);
  int num_FromLoopStudy = sc.GetPersistentIntFromChartStudy(sc.ChartNumber, StudyReference.GetStudyID(), 0);




  // One Time Processing per Bar
  int& LastBarIndexProcessed = sc.GetPersistentInt(1);
  if (sc.Index == 0)
    LastBarIndexProcessed = -1;
  if (sc.Index == LastBarIndexProcessed)
    return;
  LastBarIndexProcessed = sc.Index;

  MessageText.Format("STUDY-2 Index: %d, num: %d Subgraph value last Bar: %.2f,
Subgraph One Bar ago: %.2f", sc.Index, num_FromLoopStudy, ReferenceSubgraph[sc.Index], ReferenceSubgraph[sc.Index-1]);

  sc.AddMessageToLog(MessageText, 0);

}

Date Time Of Last Edit: 2020-05-15 08:55:06