Support Board
Date/Time: Wed, 30 Oct 2024 22:55:47 +0000
Post From: trying to get started programming, problem with simple exampe (own SMA)
[2023-09-21 17:27:00] |
ForgivingComputers.com - Posts: 952 |
sc.Index is the current bar, sc.ArraySize is the number of bars on the chart. When recalculating the chart sc.Index starts at 0 and goes up to sc.ArraySize - 1. Since the SMA is looking back from the current bar, the size of the array is irrelevant. #include "sierrachart.h"
SCDLLName("Test SMA") SCSFExport scsf_SMA(SCStudyInterfaceRef sc) { if (sc.SetDefaults) { sc.GraphName = "Test SMA"; sc.GraphRegion = 0; sc.AutoLoop = 1; //Automatic looping is enabled. sc.Subgraph[0].Name = "SMA"; sc.Subgraph[0].DrawStyle = DRAWSTYLE_LINE; sc.Subgraph[0].PrimaryColor = RGB (0, 255, 0); sc.Input[0].Name = "Bars"; sc.Input[0].SetInt(10); return; } // Section 2 - Do data processing here double sma; double sum; int Bars = sc.Input[0].GetInt(); // We need to see at least Bars number of bars if (sc.Index < Bars) return; sum = 0.0; // Loop from current Bar back and sum close prices of each bar for (int BarIndex = sc.Index ; BarIndex > sc.Index - Bars; BarIndex--) { sum = sum + sc.Close[BarIndex]; } // Divide by Bars to get average sc.Subgraph[0][sc.Index] = sma = sum/Bars; } |