Login Page - Create Account

Support Board


Date/Time: Thu, 18 Apr 2024 15:38:57 +0000



[Programming Help] - 64 Bit performance

View Count: 2372

[2018-03-31 17:29:47]
WarriorTrader - Posts: 245
Hello,

Can anyone out there tell me about the performance gains after upgrading to the 64 bit version of SC?


Thx,
WT
[2018-03-31 17:40:44]
Sierra Chart Engineering - Posts: 104368
Refer to:
Software Download: Difference Between 32 and 64-bit Versions
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
[2018-04-01 16:09:57]
WarriorTrader - Posts: 245
Hello,

On an unrelated topic I noticed you longer have the following documented:

sc.GetStudyPersistentVariablesFromChartUsingID(Chart.GetChartNumber(),Chart.GetStudyID())

Is there a more efficient way to pass messages between two charts?


I am rewriting some studies for effeincy. What would be the most efficient way to send data to a study on another chart? I plan on staying with sc.GetStudyPersistentVariablesFromChartUsingID but do you have anything better? The Overlay studies could be used buy I only need data from the current bar sc.Index, and I do have other datat that is no not in any study.

sc.GetStudyPersistentVariablesFromChartUsingID does cause a lot of recaculations and I'm trying to cut that down. Does the overlay study cause less recaculations?

Thx,
WT
[2018-04-01 21:39:33]
Sierra Chart Engineering - Posts: 104368
You need to use these functions:
https://www.sierrachart.com/index.php?page=doc/ACSIL_Members_Functions.html#scGetStudyPersistentIntFromChart
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
[2018-04-02 19:49:11]
WarriorTrader - Posts: 245


I moved everything over with the exception of sc.PersistVars - assuming the line below should be fine for the foreseeable future.

float& ChartHigh=sc.PersistVars->f1;
[2018-04-02 21:06:04]
Sierra Chart Engineering - Posts: 104368
Yes that will be supported for the foreseeable future.
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
[2018-04-03 17:03:46]
WarriorTrader - Posts: 245


The function sc.GetStudyPersistentFloatFromChart seams like it is not working. I have some output for both source and destination variables from replay. I can provide source code if you need it.


ESM8 Rev. 7t #8 | Performing a full recalculation because it has been tagged. Chartbook: BidAskBarsOnP&F_7TickReversal_GC.Cht | 2018-04-03 12:50:55
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:50:55
Chart: ESM8 Rev. 7t #1 | Study: Tick Value Candle | ValueHighPrice destination--> 0.00 | 2018-04-03 12:50:55
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:50:56
Chart: ESM8 Rev. 7t #1 | Study: Tick Value Candle | ValueHighPrice destination--> 0.00 | 2018-04-03 12:50:56
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:50:57
Chart: ESM8 Rev. 7t #1 | Study: Tick Value Candle | ValueHighPrice destination--> 0.00 | 2018-04-03 12:50:57
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:50:58
Chart: ESM8 Rev. 7t #1 | Study: Tick Value Candle | ValueHighPrice destination--> 0.00 | 2018-04-03 12:50:58
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:50:59
Chart: ESM8 Rev. 7t #1 | Study: Tick Value Candle | ValueHighPrice destination--> 0.00 | 2018-04-03 12:50:59
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:51:00
Chart: ESM8 Rev. 7t #1 | Study: Tick Value Candle | ValueHighPrice destination--> 0.00 | 2018-04-03 12:51:00
Chart: Replay 1.00X: TICK-NYSE [M] 1 Min #28 | Study: Tick Value Visible Bars Helper | ValueHigh source ###### 451.00 | 2018-04-03 12:51:01
[2018-04-03 17:18:14]
WarriorTrader - Posts: 245
I hard coded the chart number and study ID

float& ValueHighPrice = sc.GetStudyPersistentFloatFromChart(28, 2, 4); //float& ValueHighPrice = sc.GetStudyPersistentFloatFromChart (VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 4);


-----------------------------------------

source:

float& ValueHigh = sc.PersistVars->f4;
Date Time Of Last Edit: 2018-04-03 17:19:41
[2018-04-03 22:22:58]
WarriorTrader - Posts: 245
Hello,

Is anyone looking into this? I went ahead and took the time to switched seven studies to use sc.GetStudyPersistentFloatFromChar()t now all is does is return zero values. Should I open a new thread? It will take me over an hour or two to switch things back and recompile. Could test it on the live GainCapital feed but want to make sure everything works before I turn off my old 1209 version of SC.

Thx,
WT
[2018-04-04 01:51:55]
Sierra Chart Engineering - Posts: 104368
We did not believe there was any problem with these functions and we verified there is not.

Here is an example:
SCSFExport scsf_GetStudyPersistentVariableFromChartExample(SCStudyInterfaceRef sc)
{
  SCInputRef ChartStudyReference = sc.Input[0];

  if (sc.SetDefaults)
  {
    // Set the configuration and defaults

    sc.GraphName = "Get Study Persistent Variable from Chart Example";
    sc.AutoLoop = 1;
    sc.FreeDLL = 0;

    ChartStudyReference.Name = "Chart Study Reference";
    ChartStudyReference.SetChartStudyValues(1, 0);

    return;
  }

  //Set persistent float variable with a value of 100 using integer key 1.
  float& r_PersistentFloat = sc.GetPersistentFloat(1);
  r_PersistentFloat = 100;

  // Get a reference to a persistent variable with key value 1 in the chart
  // and study specified by the "Chart Study Reference" input. Assuming the
  // "Chart Study Reference" input is referencing this particular chart and
  // study instance, then this function will return 100.
  const float PersistentValue = sc.GetStudyPersistentFloatFromChartStudy(ChartStudyReference.GetChartNumber(), ChartStudyReference.GetStudyID(), 1);

  if (sc.Index == sc.ArraySize - 1)
  {
    SCString OutputText;
    OutputText.Format("%f", PersistentValue);

    sc.AddMessageToLog(OutputText, 0);
  }
}

Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
[2018-04-04 22:03:13]
WarriorTrader - Posts: 245
Hello,

I have reverted back to how the old function and everything is working fine. It is time for me to move on. Please keep sc.GetStudyPersistentVariablesFromChartUsingID available even if it is not documented.


  const s_PersistentVariables * p_DeltaLadderPersistVars = sc.GetStudyPersistentVariablesFromChartUsingID(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID()); //ChartStudyInput.GetStudyID() Delta Ladder

  if (p_DeltaLadderPersistVars) {

    TickHigh = p_DeltaLadderPersistVars->f1; //const float& TickHigh = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 1); //TickHigh = p_DeltaLadderPersistVars->f1;
    TickLow = p_DeltaLadderPersistVars->f2; //const float& TickLow = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 2); //TickLow = p_DeltaLadderPersistVars->f2;
    TickValueCurrent = p_DeltaLadderPersistVars->f3; //const float& TickValueCurrent = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 3); //TickValueCurrent = p_DeltaLadderPersistVars->f3;
                                   //float& RemotePriceCurrent = GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 4); //RemotePriceCurrent=p_DeltaLadderPersistVars->f4;
    TickIndex = p_DeltaLadderPersistVars->i1; //const int& TickIndex = sc.GetStudyPersistentIntFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 1); //TickIndex = p_DeltaLadderPersistVars->i1; //will be replaced with sc.Index //for SimTickPriceMarker  

    ValueHighPrice = p_DeltaLadderPersistVars->f4; //const float& ValueHighPrice = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 4);
    ValueLowPrice = p_DeltaLadderPersistVars->f5; //const float& ValueLowPrice = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 5);
    ValuePOC = p_DeltaLadderPersistVars->f8; //const float & ValuePOC = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 6);

    CurrentOpen = p_DeltaLadderPersistVars->f7; //const float& CurrentOpen = sc.GetStudyPersistentFloatFromChart(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 7);

  }
  
  
const float PersistentValue = sc.GetStudyPersistentFloatFromChartStudy(ChartStudyReference.GetChartNumber(), ChartStudyReference.GetStudyID(), 1);


The code you just posted could NOT possibly compile. The function in question has a return type of a reference to a float – float & - not a return type of float. I included a screen shot of my Visual Studio
showing the return type of the function.

Anyway, looks like I am the only one using this advanced feature since it has been years since this function was developed but no one complained.
The thing is if someone else who is new to SC tries the function, instead of posting a message on support, they will just move on to something else.

SC is on the cutting edge of trading software, making things like bid/ask data availably 10 years before other popular trading software (Ninja).
The new version is very fast and responsive. Keep up the good work.

Thx,
WT
imagePersisVarType.png / V - Attached On 2018-04-04 21:55:13 UTC - Size: 153.3 KB - 303 views
[2018-04-05 04:01:45]
Sierra Chart Engineering - Posts: 104368
The code you just posted could NOT possibly compile. The function in question has a return type of a reference to a float – float & - not a return type of float. I included a screen shot of my Visual Studio
showing the return type of the function.
Yes it does compile and the reference does not have to be placed into a reference. A copy is just fine. There was no need for a reference in the example.


The thing is if someone else who is new to SC tries the function, instead of posting a message on support, they will just move on to something else.
Hopefully you really do not think there is a genuine problem, and that we are releasing functionality that just does not work. The way this functionality works internally is very simple and well-established and does work properly.

Attached is a test chart book demonstrating this.

In chart #1, go to Chart >> Recalculate and after you do that look at the Message Log. You will see Chart #2 automatically calculate and display the value of the persistent variable each time.

In the next release the example has been updated to use sc.UpdateAlways and increment the persistent variable.
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
Date Time Of Last Edit: 2018-04-05 04:02:59
attachmentPersistent variables example.Cht - Attached On 2018-04-05 04:02:33 UTC - Size: 58.97 KB - 323 views
[2018-04-05 05:30:05]
Sierra Chart Engineering - Posts: 104368
One other small detail, this name:
sc.GetStudyPersistentFloatFromChartStudy

Is the functions new name but the old name still works. But in an older version of Sierra Chart you have to use the old name which does not include Study at the end.
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
[2018-04-05 14:46:14]
WarriorTrader - Posts: 245
In chart #1, go to Chart >> Recalculate and after you do that look at the Message Log. You will see Chart #2 automatically calculate and display the value of the persistent variable each time.

Hello,

Here are my screen shots before and after following your directions.

Using v1705

It does recalculate but there is no output.


Thx,
--WT
Attachment Deleted.
imagePersisVarType2.png / V - Attached On 2018-04-05 14:43:09 UTC - Size: 98.53 KB - 283 views
imagePersisVarType3..png / V - Attached On 2018-04-05 14:43:24 UTC - Size: 104.97 KB - 321 views
[2018-04-05 15:52:50]
Sierra Chart Engineering - Posts: 104368
It is possible that the particular test functions we used might have been renamed in the latest version and are not going to work in the version you are running. Although we do not see any evidence of that in the Message Log unless it were cleared. Update to the latest prerelease and test again.

However, still the ACSIL (sc.) functions being used for getting persistent variables from another chart and study, internally have not changed and have always worked properly.
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
Date Time Of Last Edit: 2018-04-05 17:01:02
[2018-04-05 17:38:38]
Sierra Chart Engineering - Posts: 104368
Yes both of them are included in each installation.

There are icons for each of them on the desktop and you can also run the executables directly from the installation folder. The 64-bit version ends with "_64".
Sierra Chart Support - Engineering Level

Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy:
https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation

For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service:
Sierra Chart Teton Futures Order Routing
[2018-04-05 20:09:21]
WarriorTrader - Posts: 245
Hello,

Can you post the code for the example? Still getting zeros with sc.GetStudyPersistentFloatFromChartStudy. Should I replace sc.PersistVars?

const float TickHigh = sc.GetStudyPersistentFloatFromChartStudy(VisibleBarsChart.GetChartNumber(), VisibleBarsChart.GetStudyID(), 1);

Source:
  float& TickHigh = sc.PersistVars->f1;
  float& TickLow = sc.PersistVars->f2;
  //float& PriceForTickCandle=sc.PersistVars->f3;
  float& PriceForTickCandleCurrent = sc.PersistVars->f3;
  int& TickIndex = sc.PersistVars->i1;

  float& ValueHigh = sc.PersistVars->f4;
  float& ValueLow = sc.PersistVars->f5;
  float& ValuePOC = sc.PersistVars->f6;

  float& CurrentOpen = sc.PersistVars->f7;

  if (CandleType.GetIndex() == 1) {


Thx,
WT
[2018-04-05 20:31:53]
WarriorTrader - Posts: 245
OK getting rid of sc.PersistVars did the trick. Thanks for your help.


THx
--WT

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

Login

Login Page - Create Account