NexusFi: Find Your Edge


Home Menu

 





SierraChart coding help (error compiling)


Discussion in Sierra Chart

Updated
    1. trending_up 489 views
    2. thumb_up 2 thanks given
    3. group 3 followers
    1. forum 3 posts
    2. attach_file 0 attachments




 
Search this Thread

SierraChart coding help (error compiling)

  #1 (permalink)
hhomsi8
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;
}

Reply With Quote

Can you help answer these questions
from other members on NexusFi?
Strategy stop orders partially filled
EasyLanguage Programming
Trade idea based off three indicators.
Traders Hideout
ZombieSqueeze
Platforms and Indicators
MC PL editor upgrade
MultiCharts
REcommedations for programming help
Sierra Chart
 
Best Threads (Most Thanked)
in the last 7 days on NexusFi
Funded Trader platforms
57 thanks
Trading with Intuition
16 thanks
Self sabotage reframed
15 thanks
Joes Trading Garage
13 thanks
Just another trading journal: PA, Wyckoff & Trends
11 thanks
  #2 (permalink)
 Trembling Hand 
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?

Follow me on Twitter Reply With Quote
Thanked by:
  #3 (permalink)
hhomsi8
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

Reply With Quote
  #4 (permalink)
 Trembling Hand 
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 View Post
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

Follow me on Twitter Reply With Quote
Thanked by:




Last Updated on August 9, 2023


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts