Support Board
Date/Time: Wed, 12 Feb 2025 04:30:31 +0000
Post From: Access to old Support Board
[2020-09-29 04:41:45] |
Kiwi - Posts: 375 |
So I've attached the code file (.cpp) and the dll compiled with Sierra Chart 2175 here. I see I was in my 'compact is better' phase back in 2012. The code was just: #include "sierrachart.h"
SCDLLName("* Kiwi 12 Recovery *") /*==========================================================================*/ SCSFExport scsf_RecalcChart(SCStudyInterfaceRef sc) { if (sc.SetDefaults) { sc.GraphName = "Recalc"; sc.StudyDescription = "Recalc Chart every x secs based on real time"; sc.Subgraph[0].Name = "Strobe"; sc.Subgraph[1].Name = "Time"; sc.Subgraph[0].DrawStyle=DRAWSTYLE_IGNORE; sc.Subgraph[1].DrawStyle=DRAWSTYLE_IGNORE; sc.Input[0].Name="Seconds between recalcs"; sc.Input[0].SetInt(60); sc.Input[1].Name="Also reload chart data"; sc.Input[1].SetYesNo(0); sc.UpdateAlways=1; return; } if (sc.CurrentSystemDateTime.GetTime() % sc.Input[0].GetInt() == 0) { if (sc.Subgraph[0][sc.ArraySize-1] < 999660) { sc.Subgraph[0][sc.ArraySize-1] = 999666; sc.Subgraph[1][sc.ArraySize-1] = sc.CurrentSystemDateTime.GetTime(); sc.FlagFullRecalculate = 1; if (sc.Input[1].GetYesNo()) sc.FlagToReloadChartData = 1; } else sc.Subgraph[0][sc.ArraySize-1] = 0; } } /*==========================================================================*/ SCSFExport scsf_TInt(SCStudyGraphRef sc) { if (sc.SetDefaults) { sc.GraphName="TI"; sc.StudyDescription="Tick Interpretter"; sc.Subgraph[0].Name="TI+"; sc.Subgraph[0].DrawStyle = DRAWSTYLE_BAR; sc.Subgraph[1].Name="TI-"; sc.Subgraph[1].DrawStyle = DRAWSTYLE_BAR; sc.Subgraph[6].Name="Up Colour"; sc.Subgraph[7].Name="Dn Colour"; sc.Subgraph[8].Name="Neutral Colour"; sc.Input[2].Name="Cut Off 1"; sc.Input[2].SetInt(500); sc.Input[3].Name="Cut Off 2"; sc.Input[3].SetInt(1100); sc.DrawZeros=0; return; } int& cutoff1 = sc.Input[2].IntValue; int& cutoff2 = sc.Input[3].IntValue; SCSubgraphRef value1 = sc.Subgraph[0], value2 = sc.Subgraph[1], answer = sc.Subgraph[5]; for ( int i=sc.UpdateStartIndex; i < sc.ArraySize; i++) { float medianprice = (sc.High[i] + sc.Low[i]) / 2; answer[i] = 0; if(sc.High[i] > cutoff1) answer[i] = answer[i] + (sc.High[i] - cutoff1); if(medianprice > cutoff1) answer[i] = answer[i] + (medianprice - cutoff1); if(sc.High[i] > cutoff2) answer[i] = answer[i] + 2.0*(sc.High[i] - cutoff2); if(sc.Low[i] < -cutoff1) answer[i] = answer[i] - (-cutoff1 - sc.Low[i]); if(medianprice < -cutoff1) answer[i] = answer[i] - (-cutoff1 - medianprice); if(sc.Low[i] < -cutoff2) answer[i] = answer[i] - 2.0*(-cutoff2 - sc.Low[i]); value1[i] = (answer[i-1] + 2.0*answer[i]) / 3.0; //value2[i] = (answer[i-2] + 2.0*answer[i-1]) / 3.0; if(value1[i] > 0) sc.Subgraph[0].DataColor[i] = sc.Subgraph[1].DataColor[i] = sc.Subgraph[6].PrimaryColor; else if(value1[i] < 0) sc.Subgraph[0].DataColor[i] = sc.Subgraph[1].DataColor[i] = sc.Subgraph[7].PrimaryColor; else sc.Subgraph[0].DataColor[i] = sc.Subgraph[1].DataColor[i] = sc.Subgraph[8].PrimaryColor; } } |
![]() ![]() |