Support Board
Date/Time: Sun, 08 Sep 2024 00:06:09 +0000
Post From: Labels display on right hand side of chart
[2023-12-03 14:05:46] |
user08187 - Posts: 15 |
Hi, Thanks for the "Horizontal Lines" study suggestion. As per your suggestion, I've coded a custom study similar to Horizontal lines study, but I have a few questions regarding that. SCInputRef fileName = sc.Input[0]; if (sc.SetDefaults) { sc.GraphName = "NamesAndValues"; sc.StudyDescription = "Names And Values"; sc.GraphRegion = 0; fileName.Name = "File Name"; fileName.SetString("InFile.txt"); sc.AutoLoop = 1; return; } // Section 2 - Do data processing here if (!sc.IsFullRecalculation) return; SCString fileNameString = fileName.GetString(); if (fileNameString.IsEmpty()) { return; } auto index = 0; const std::string delimiter = ","; std::ifstream input(fileNameString); for (std::string line; getline(input, line); ) { auto pos = line.find(delimiter); auto symbol = line.substr(0, pos); auto scSymbol = sc.Symbol.GetChars(); if (strcmp(scSymbol,symbol.c_str()) == 0) { line = line.substr(pos+1); pos = line.find(delimiter); auto label = line.substr(0, pos); auto value = line.substr(pos + 1); sc.Subgraph[index].Name = label.c_str(); sc.Subgraph[index][sc.Index] = stof(value); sc.Subgraph[index].DisplayNameValueInDataLine = 0; sc.Subgraph[index].DisplayNameValueInWindowsFlags = 0; sc.Subgraph[index].IncludeInStudySummary = 0; sc.Subgraph[index].DrawStyle = DRAWSTYLE_TRANSPARENT_TEXT; sc.Subgraph[index].LineLabel = LL_DISPLAY_NAME | LL_NAME_ALIGN_CENTER | LL_NAME_ALIGN_LEFT_EDGE; sc.Subgraph[index].UseLabelsColor = 1; sc.Subgraph[index].LabelsColor = RGB(255, 0, 0); index++; } } input.close(); my input file has lines like below ESZ3.CME,Name1,4610
ESZ3.CME,Name2,4560 Questions(in the decreasing order of importance): 1. the custom study doesn't display Value on the price axis, like how "Horizontal Lines" display Value on the price axis(see the attached image). What needs to be added/changed in the code? 2. while the chart is loading, I wanted the study to be executed only once and not for each bars on the chart. But, if I put "sc.AutoLoop = 0", it's not displaying any Name Value pairs. What needs to be added/changed in the code? 3. In addition to being executed only once while loading, I wanted the study to be executed only when I wanted to recalculate. Is the code("if (!sc.IsFullRecalculation) return;") correct for that? 4. what needs to be added in the code, so that I don't want to display Custom Study Name, Subgraph Name and Value, Input Values, etc. in the Chart Values for tools, Top of Chart(i.e., after SYMBOL BARPERIOD ... ), etc.? Thanks |
![]() |