Support Board
Date/Time: Wed, 27 Nov 2024 15:36:46 +0000
Post From: [Programming Help] Getting error compiling a custom indicator
[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 -- |