Support Board
Date/Time: Tue, 22 Apr 2025 05:37:25 +0000
Post From: Donchian Channel
[2023-02-24 18:40:31] |
User509820 - Posts: 69 |
Found it, what exactly would I need to change to get it to perform this way indicated. SCSFExport scsf_DonchianChannel(SCStudyInterfaceRef sc) { SCSubgraphRef Subgraph_HighestHigh = sc.Subgraph[0]; SCSubgraphRef Subgraph_LowestLow = sc.Subgraph[1]; SCSubgraphRef Subgraph_Midline = sc.Subgraph[2]; SCInputRef Input_Length = sc.Input[3]; SCInputRef Input_UseClose = sc.Input[4]; if (sc.SetDefaults) { sc.GraphName = "Donchian Channel"; sc.GraphRegion = 0; sc.AutoLoop = true; Subgraph_HighestHigh.Name= "Highest High"; Subgraph_HighestHigh.DrawStyle= DRAWSTYLE_LINE; Subgraph_HighestHigh.DrawZeros= true; Subgraph_HighestHigh.GraphicalDisplacement= 1; Subgraph_LowestLow.Name = "Lowest Low"; Subgraph_LowestLow.DrawStyle= DRAWSTYLE_LINE; Subgraph_LowestLow.DrawZeros= true; Subgraph_LowestLow.GraphicalDisplacement= 1; Subgraph_Midline.Name = "Mid Line"; Subgraph_Midline.DrawStyle= DRAWSTYLE_LINE; Subgraph_Midline.LineStyle= LINESTYLE_DOT; Subgraph_Midline.DrawZeros= true; Subgraph_Midline.GraphicalDisplacement= 1; Input_Length.Name = "Length "; Input_Length.SetInt(5); Input_Length.SetIntLimits(1, MAX_STUDY_LENGTH); Input_UseClose.Name = "Use Close instead of High and Low"; Input_UseClose.SetYesNo(false); return; } float Lowest = FLT_MAX; float Highest = -FLT_MAX; if (Input_UseClose.GetYesNo()) { for (int BarIndex = sc.Index - (Input_Length.GetInt() - 1); BarIndex <= sc.Index; BarIndex++) { Highest = (Highest < sc.Close[BarIndex]) ? sc.Close[BarIndex] : Highest; Lowest = (Lowest > sc.Close[BarIndex]) ? sc.Close[BarIndex] : Lowest; } } else { for (int BarIndex = sc.Index - (Input_Length.GetInt() - 1); BarIndex <= sc.Index; BarIndex++) { if (Highest < sc.High[BarIndex]) Highest = sc.High[BarIndex]; if (Lowest > sc.Low[BarIndex]) Lowest = sc.Low[BarIndex]; } } Subgraph_HighestHigh[sc.Index] = Highest; Subgraph_LowestLow[sc.Index] = Lowest; Subgraph_Midline[sc.Index] = (Highest + Lowest)/2.0f; } |