Login Page - Create Account

Support Board


Date/Time: Wed, 27 Nov 2024 13:00:50 +0000



[Programming Help] - [Programming Help] Getting error compiling a custom indicator

View Count: 231

[2023-08-08 18:39:44]
User981913 - Posts: 8
Hi, I am new to programming, and I was trying to create (translate my own indicator from EasyLanguage to SierraChart ACSIL). I am getting this list of error while compiling the code, tried to search a lot for it and compared it with few indicators code in ACS_Source but I could not figure it out, any help would be highly appreciated it

Here is my coding


SCSFExport scsf_TrueMomentum_H(SCStudyInterfaceRef sc)
{
  SCSubgraphRef Subgraph_Main = sc.Subgraph[0];
  SCSubgraphRef Subgraph_Signal = sc.Subgraph[1];
  SCSubgraphRef Subgraph_ZeroLine = sc.Subgraph[2];
  SCSubgraphRef Subgraph_UpperLine = sc.Subgraph[3];
  SCSubgraphRef Subgraph_LowerLine = sc.Subgraph[4];
  SCSubgraphRef Subgraph_Overbought = sc.Subgraph[5];
  SCSubgraphRef Subgraph_Oversold = sc.Subgraph[6];

  SCInputRef Input_Length = sc.Input[0];
  SCInputRef Input_CalcLength = sc.Input[1];
  SCInputRef Input_SmoothLength = sc.Input[2];

  if (sc.SetDefaults)
  {
    sc.GraphName = "Custom Indicator";

    sc.GraphRegion = 0;
    sc.ValueFormat = 2;
    sc.AutoLoop = 1;

    Subgraph_Main.Name = "Main";
    Subgraph_Main.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_Main.PrimaryColor = RGB(0, 255, 0);
    Subgraph_Main.SecondaryColor = RGB(255, 0, 0);
    Subgraph_Main.SecondaryColorUsed = true;
    Subgraph_Main.DrawZeros = false;

    Subgraph_Signal.Name = "Signal";
    Subgraph_Signal.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_Signal.PrimaryColor = RGB(0, 255, 0);
    Subgraph_Signal.SecondaryColor = RGB(255, 0, 0);
    Subgraph_Signal.SecondaryColorUsed = true;
    Subgraph_Signal.DrawZeros = false;

    Subgraph_ZeroLine.Name = "ZeroLine";
    Subgraph_ZeroLine.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_ZeroLine.PrimaryColor = RGB(169, 169, 169);
    Subgraph_ZeroLine.DrawZeros = true;

    Subgraph_UpperLine.Name = "UpperLine";
    Subgraph_UpperLine.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_UpperLine.PrimaryColor = RGB(255, 0, 0);
    Subgraph_UpperLine.DrawZeros = false;

    Subgraph_LowerLine.Name = "LowerLine";
    Subgraph_LowerLine.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_LowerLine.PrimaryColor = RGB(0, 255, 0);
    Subgraph_LowerLine.DrawZeros = false;

    Subgraph_Overbought.Name = "Overbought";
    Subgraph_Overbought.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_Overbought.PrimaryColor = RGB(255, 0, 0);
    Subgraph_Overbought.DrawZeros = false;

    Subgraph_Oversold.Name = "Oversold";
    Subgraph_Oversold.DrawStyle = DRAWSTYLE_LINE;
    Subgraph_Oversold.PrimaryColor = RGB(0, 255, 0);
    Subgraph_Oversold.DrawZeros = false;

    Input_Length.Name = "Length";
    Input_Length.SetInt(14);
    Input_Length.SetIntLimits(1, MAX_STUDY_LENGTH);

    Input_CalcLength.Name = "Calculation Length";
    Input_CalcLength.SetInt(5);
    Input_CalcLength.SetIntLimits(1, MAX_STUDY_LENGTH);

    Input_SmoothLength.Name = "Smooth Length";
    Input_SmoothLength.SetInt(3);
    Input_SmoothLength.SetIntLimits(1, MAX_STUDY_LENGTH);

    return;
  }

  int len = Input_Length.GetInt();
  SCFloatArrayRef s = sc.Subgraph[7]; // Create an array to store 's' values
  SCFloatArrayRef MA = sc.Subgraph[8]; // Create an array to store 'MA' values
  SCFloatArrayRef Main = sc.Subgraph[9]; // Create an array to store 'Main' values
  SCFloatArrayRef Signal = sc.Subgraph[10]; // Create an array to store 'Signal' values

  s[sc.Index] = 0;
  for (int ss = 0; ss < len; ss++)
  {
    if (sc.Close[sc.Index] > sc.Open[sc.Index - ss])
      s[sc.Index] = s[sc.Index] + 1;
    else if (sc.Close[sc.Index] < sc.Open[sc.Index - ss])
      s[sc.Index] = s[sc.Index] - 1;
    //else
    //  s[sc.Index] = 0;
  }

  MA[sc.Index] = sc.SimpleMovAvg(s, Input_CalcLength.GetInt());
  Main[sc.Index] = sc.SimpleMovAvg(MA, Input_SmoothLength.GetInt());
  Signal[sc.Index] = sc.SimpleMovAvg(Main, Input_SmoothLength.GetInt());

  Subgraph_Main[sc.Index] = Main[sc.Index];
  Subgraph_Signal[sc.Index] = Signal[sc.Index];
  Subgraph_ZeroLine[sc.Index] = 0;
  Subgraph_UpperLine[sc.Index] = len;
  Subgraph_LowerLine[sc.Index] = -len;
  Subgraph_Overbought[sc.Index] = len * 0.8;
  Subgraph_Oversold[sc.Index] = -len * 0.8;
}



However I am getting this errors


-- Starting remote build of Custom Studies Source files: TrueMomentum_H.cpp. 64-bit -- 14:17:12

Allow time for the server to compile the files and build the DLL.

The remote build did not succeed. Result:

TrueMomentum_H.cpp: In function 'void scsf_TrueMomentum_H(SCStudyInterfaceRef)':
TrueMomentum_H.cpp:105:61: error: no matching function for call to 's_sc::SimpleMovAvg(c_ArrayWrapper<float>&, int)'
105 | MA[sc.Index] = sc.SimpleMovAvg(s, Input_CalcLength.GetInt());
| ^
In file included from TrueMomentum_H.cpp:2:
sierrachart.h:1253:18: note: candidate: 'c_ArrayWrapper<float>& s_sc::SimpleMovAvg(SCFloatArrayRef, SCFloatArrayRef, int, int)'
1253 | SCFloatArrayRef SimpleMovAvg(SCFloatArrayRef In, SCFloatArrayRef Out, int Index, int Length)
| ^~~~~~~~~~~~
sierrachart.h:1253:18: note: candidate expects 4 arguments, 2 provided
sierrachart.h:1257:18: note: candidate: 'c_ArrayWrapper<float>& s_sc::SimpleMovAvg(SCFloatArrayRef, SCFloatArrayRef, int)'
1257 | SCFloatArrayRef SimpleMovAvg(SCFloatArrayRef In, SCFloatArrayRef Out, int Length)
| ^~~~~~~~~~~~
sierrachart.h:1257:18: note: candidate expects 3 arguments, 2 provided
TrueMomentum_H.cpp:106:66: error: no matching function for call to 's_sc::SimpleMovAvg(c_ArrayWrapper<float>&, int)'
106 | Main[sc.Index] = sc.SimpleMovAvg(MA, Input_SmoothLength.GetInt());
| ^
In file included from TrueMomentum_H.cpp:2:
sierrachart.h:1253:18: note: candidate: 'c_ArrayWrapper<float>& s_sc::SimpleMovAvg(SCFloatArrayRef, SCFloatArrayRef, int, int)'
1253 | SCFloatArrayRef SimpleMovAvg(SCFloatArrayRef In, SCFloatArrayRef Out, int Index, int Length)
| ^~~~~~~~~~~~
sierrachart.h:1253:18: note: candidate expects 4 arguments, 2 provided
sierrachart.h:1257:18: note: candidate: 'c_ArrayWrapper<float>& s_sc::SimpleMovAvg(SCFloatArrayRef, SCFloatArrayRef, int)'
1257 | SCFloatArrayRef SimpleMovAvg(SCFloatArrayRef In, SCFloatArrayRef Out, int Length)
| ^~~~~~~~~~~~
sierrachart.h:1257:18: note: candidate expects 3 arguments, 2 provided
TrueMomentum_H.cpp:107:70: error: no matching function for call to 's_sc::SimpleMovAvg(c_ArrayWrapper<float>&, int)'
107 | Signal[sc.Index] = sc.SimpleMovAvg(Main, Input_SmoothLength.GetInt());
| ^
In file included from TrueMomentum_H.cpp:2:
sierrachart.h:1253:18: note: candidate: 'c_ArrayWrapper<float>& s_sc::SimpleMovAvg(SCFloatArrayRef, SCFloatArrayRef, int, int)'
1253 | SCFloatArrayRef SimpleMovAvg(SCFloatArrayRef In, SCFloatArrayRef Out, int Index, int Length)
| ^~~~~~~~~~~~
sierrachart.h:1253:18: note: candidate expects 4 arguments, 2 provided
sierrachart.h:1257:18: note: candidate: 'c_ArrayWrapper<float>& s_sc::SimpleMovAvg(SCFloatArrayRef, SCFloatArrayRef, int)'
1257 | SCFloatArrayRef SimpleMovAvg(SCFloatArrayRef In, SCFloatArrayRef Out, int Length)
| ^~~~~~~~~~~~
sierrachart.h:1257:18: note: candidate expects 3 arguments, 2 provided

-- End of Build --

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

Login

Login Page - Create Account