Dark Theme
Light Theme
Trading Articles
Article Categories
Article Tools
Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to
register in order to view the content of the threads and start contributing to our community.
It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
SierraChart coding help (error compiling)
Updated August 9, 2023
trending_up
477 views
thumb_up
2 thanks given
group
3 followers
forum
3 posts
attach_file
0 attachments
SierraChart coding help (error compiling)
August 6th, 2023, 09:05 AM
Stockholm, Sweden
Posts: 10 since Feb 2023
Thanks Given: 7
Thanks Received: 0
Hi, I am new to coding, I have developed a momentum indicator in EasyLanguage for TradeStation (simple one really). and Now that I want to move to SierraChart , I faced problem trying to replicate the code for ACSIL
Here is my EasyLanguage code:
HTML Code:
inputs:
double length(14),
double calcLength(5),
double smoothLength(3);
vars:
double s(0),
double MA(0),
double Main(0),
double Signal(0),
double ss(0),
double len(0);
len = length;
s = 0;
for ss = 0 to (len - 1) begin
if close > open[ss] then s = s + 1;
if close < open[ss] then s = s - 1;
//else s = 0;
end;
MA = XAverage(s, calcLength);
Main = XAverage(MA, smoothLength);
Signal = XAverage(Main, smoothLength);
plot1(Main, "Main", iff(Main > Signal, green, red));
plot2(Signal, "Signal", iff(Main > Signal, green, red));
plot3(0, "ZeroLine", Darkgray);
plot4(length, "UpperLine", red);
plot5(-length, "LowerLine", green);
plot6(length * 0.8, "Overbought", red);
plot7(-length * 0.8, "Oversold", green);
And Here is my endless trial of replicating it to SierraChart ACSIL, I really appreciate any help cause I am going nuts with this thingy
HTML Code:
SCDLLName("TrueMomentum_H")
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 = "#MyTrueMomentum";
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;
}
Can you help answer these questions from other members on NexusFi?
Best Threads (Most Thanked) in the last 7 days on NexusFi
August 8th, 2023, 05:13 AM
Melbourne, Land of Oz
Experience: Advanced
Platform: Sierra Chart, CQG
Broker: CQG
Trading: HSI
Posts: 246 since Jun 2011
Thanks Given: 28
Thanks Received: 360
What does the error say?
August 8th, 2023, 02:19 PM
Stockholm, Sweden
Posts: 10 since Feb 2023
Thanks Given: 7
Thanks Received: 0
I am getting this error lists:
HTML Code:
-- 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 -- 14:17:17
August 9th, 2023, 02:12 AM
Melbourne, Land of Oz
Experience: Advanced
Platform: Sierra Chart, CQG
Broker: CQG
Trading: HSI
Posts: 246 since Jun 2011
Thanks Given: 28
Thanks Received: 360
hhomsi8
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 -- 14:17:17
Its telling you what is wrong with your code and what line. "note: candidate expects 3 arguments, 2 provided"
You are not providing all required parameters for each function that is throwing an error. See the specs for the Simple Moving Average here
https://www.sierrachart.com/index.php?page=doc/ACSIL_Members_Functions.html
Last Updated on August 9, 2023