- Desktop
- Tools
- PASCAL Programming
- Reading A Datafile Example
Reading A Datafile Example
The following code is an example of how to read a Datafile into Optuma
//// Sample script for reading bar data from a file// Sample data from the file//// Date,Time,Open,High,Low,Close,Volume,OI// 2009-03-09,00:00:00,26.88,26.97,26.43,26.64,3896429,0// 2009-03-10,00:00:00,26.85,27.78,26.75,27.78,5748436,0// 2009-03-11,00:00:00,28.80,28.91,28.25,28.61,5789265,0//
// This section is where variable are defined that need to be used in both the Init and Process proceduresvar Plot1 : TPlot;
// DefineTool is where the settings for the Tool are defined// This procedure is called once when the tool is loaded// Normally this procedure does not need to be changedprocedure DefineTool(Tool : TTool);begin Tool.Name := 'ReadDataFile'; Tool.MouseClicks := 1; Tool.Hint := ''; Tool.ToolType := ttDataList;end;
// Init is called to initialise the tool// This procedure is called once when the tool is added to a chartprocedure Init(Tool : TTool);var i : Integer; dataFile, dataRow : TStringList;begin Plot1 := Tool.AddPlot(); Plot1.Color := clBlue; Plot1.PlotStyle := Shaded; // possible values are (Line, Dot, Histogram, Step, Shaded) Plot1.FillColor := clBlue;
dataFile := TStringlist.Create; dataFile.Delimiter := #10; dataFile.LoadFromFile('c:\data\data.csv'); dataRow := TStringList.Create; dataRow.Delimiter := ',';
Plot1.Data.SetSize(dataFile.Count-1); // start from 1 because the file has a header for i := 1 to dataFile.Count-1 do begin dataRow.Clear; // break up each row into fields dataRow.CommaText := dataFile[i]; if dataRow.Count > 5 then begin Plot1.Row[i-1].Date := VarToDateTime(dataRow[0]); Plot1.Row[i-1].Open := StrToFloatDef(dataRow[2], 0); Plot1.Row[i-1].High := StrToFloatDef(dataRow[3], 0); Plot1.Row[i-1].Low := StrToFloatDef(dataRow[4], 0); Plot1.Row[i-1].Close := StrToFloatDef(dataRow[5], 0); Plot1.Row[i-1].Hidden := False; end; end;end;
// Process is called to calculate and drawn the tool on screen// This procedure is called when new data is received or loaded and// when a selection point is moved by the userprocedure Process(Tool : TTool; ProcessStart : Integer; ProcessEnd : Integer; DataIn : TDataList);begin
end;Forum Discussion
Your privacy choices
We use cookies and similar technologies to make the site work, see how it's used, and improve it. Analytics and advertising cookies only run with your consent — see our Privacy Policy for details.