Support Board
Date/Time: Wed, 27 Nov 2024 08:43:11 +0000
[Programming Help] - unable to get spreadsheet value
View Count: 255
[2023-09-05 05:42:10] |
User373245 - Posts: 42 |
I am trying to dump the value of a study angle into the spreadsheet when my alert condition is true....The alert condition works and the spreadsheet handle is all working. I just cant figure out how to get it to store the value that is in the cell when the long and short signal become true. The study is a line angle that I need the value to when the long or short becomes true on a replay...so I can study it over a certain length of data. Ive also tried creating an input from a subgraph and both get and set input and building an array and getting it that way and wasn't able to either. SCInputRef Input_240StnAngle = sc.Input[4]; Input_240StnAngle.Name = "240 STN Val"; Input_240StnAngle.SetChartStudySubgraphValues(17, 73, 0); #include "sierrachart.h" SCDLLName("SpreadsheetInteractionEx") SCSFExport scsf_SpreadsheetInteractionEx(SCStudyInterfaceRef sc) { SCSubgraphRef Subgraph_SignalState = sc.Subgraph[1]; SCSubgraphRef Subgraph_240StnAngle = sc.Subgraph[2]; SCInputRef Input_LongSignalSelection = sc.Input[2]; SCInputRef Input_ShortSignalSelection = sc.Input[3]; SCInputRef Input_240StnAngle = sc.Input[4]; SCFloatArrayRef Array_240StnAngle = Subgraph_SignalState.Arrays[2]; if (sc.SetDefaults) { // Set the configuration and defaults sc.GraphName = "Spreadsheet Interaction Example"; sc.AutoLoop = 1; Subgraph_SignalState.Name = "Standard deviation line angle"; Subgraph_SignalState.DrawStyle = DRAWSTYLE_LINE; Subgraph_240StnAngle.Name = "Standard deviation line angle"; Subgraph_240StnAngle.DrawStyle = DRAWSTYLE_LINE; Input_LongSignalSelection.Name = "Select Long Signal"; Input_LongSignalSelection.SetChartStudySubgraphValues(17, 67, 0); Input_ShortSignalSelection.Name = "Select Short Signal"; Input_ShortSignalSelection.SetChartStudySubgraphValues(17, 68, 0); Input_240StnAngle.Name = "240 STN Val"; Input_240StnAngle.SetChartStudySubgraphValues(17, 73, 0); } void* sheetHandle = NULL; SCFloatArray LongArray; sc.GetStudyArrayUsingID(Input_LongSignalSelection.GetStudyID(), Input_LongSignalSelection.GetSubgraphIndex(), LongArray); if (LongArray.GetArraySize() == 1) return; SCFloatArray ShortArray; sc.GetStudyArrayUsingID(Input_ShortSignalSelection.GetStudyID(), Input_ShortSignalSelection.GetSubgraphIndex(), ShortArray); if (ShortArray.GetArraySize() == -1) sc.GetStudyArrayFromChartUsingID(Input_ShortSignalSelection.GetChartStudySubgraphValues(), ShortArray); bool LongSignal = LongArray[sc.Index]; bool ShortSignal = ShortArray[sc.Index]; if (sc.Index == 0) { //if((LongSignal || ShortSignal) && Subgraph_SignalState[sc.Index] == 0) if ((LongSignal || ShortSignal) && (sheetHandle != NULL)) { const char* SheetCollectionName = "ACSILInteractionExample"; const char* SheetName = "Sheet17"; void* SheetHandle = sc.GetSpreadsheetSheetHandleByName(SheetCollectionName, SheetName, false); sc.AddMessageToLog("Long Or Signal Condition is TRUE", 0); double currentValue = 0.0; sc.GetSheetCellAsDouble(sheetHandle, 63, 2, currentValue); // Modify currentValue if needed // ... // Store the modified value back in the spreadsheet sc.SetSheetCellAsDouble(sheetHandle, 63, 2, currentValue); } } return; } |
[2023-09-05 05:46:26] |
User373245 - Posts: 42 |
Yes I have the row and index correct ...I am aware they start at 0 but I have tried messing around with that as well. There is also a bit of bug as when you ad something to the code as a subgraph study it pushes your column over and so you have to anticipate the column value in how its going to change after you load your ACSIL depending on how many inputs or subgraphs you have in your ACSIL source code. Either way..I spent a bit of time making sure thats all correct.
|
To post a message in this thread, you need to log in with your Sierra Chart account: