Login Page - Create Account

Support Board


Date/Time: Fri, 18 Apr 2025 04:49:10 +0000



Post From: I have a programming question(TPO-Profile Chart)

[2025-04-07 15:27:02]
User134797 - Posts: 55
This is the script.

#include <windows.h>
#include "sierrachart.h"
SCDLLName("TPO Exporter – Uitgebreid")

SCSFExport scsf_TPOExport(SCStudyInterfaceRef sc)
{
SCInputRef StartExport = sc.Input[0];
SCInputRef AantalDagen = sc.Input[1];
SCInputRef TPOStudyID = sc.Input[2];

if (sc.SetDefaults)
{
sc.GraphName = "TPO Exporter – Uitgebreid";
sc.AutoLoop = 0;

StartExport.Name = "Start Export";
StartExport.SetYesNo(false);

AantalDagen.Name = "Aantal dagen om te exporteren";
AantalDagen.SetInt(3);
AantalDagen.SetIntLimits(1, 30);

TPOStudyID.Name = "Study ID van TPO Chart";
TPOStudyID.SetStudyID(3); // pas aan indien anders

return;
}

if (!StartExport.GetYesNo())
return;

StartExport.SetYesNo(false);

// 📅 Bestandsnaam per dag
SCDateTime vandaag = sc.CurrentSystemDateTime.GetDate();
char datumLabel[11];
snprintf(datumLabel, sizeof(datumLabel), "%04d-%02d-%02d",
vandaag.GetYear(), vandaag.GetMonth(), vandaag.GetDay());

SCString bestandPad = sc.DataFilesFolder();
bestandPad += "\\TPO_";
bestandPad += datumLabel;
bestandPad += ".csv";

FILE* bestand = fopen(bestandPad.GetChars(), "w");
if (!bestand)
{
SCString foutmelding = "❌ Kan bestand niet openen: ";
foutmelding += bestandPad;
sc.AddMessageToLog(foutmelding, 1);
return;
}

// ✅ Header met alles
fprintf(bestand, "Datum,Open,High,Low,Last,POC,VAH,VAL,POC_EXT,OpenMarker,LastT,InBalance,IBR1,OpenRange,PoorHL\n");

int tpoID = TPOStudyID.GetStudyID();

// ✅ Standaardvelden
SCFloatArray OpenArray, HighArray, LowArray, LastArray;
SCFloatArray VALArray, POCArray, VAHArray;

sc.GetStudyArrayUsingID(tpoID, 0, OpenArray);
sc.GetStudyArrayUsingID(tpoID, 1, HighArray);
sc.GetStudyArrayUsingID(tpoID, 2, LowArray);
sc.GetStudyArrayUsingID(tpoID, 3, LastArray);
sc.GetStudyArrayUsingID(tpoID, 15, VALArray);
sc.GetStudyArrayUsingID(tpoID, 16, POCArray);
sc.GetStudyArrayUsingID(tpoID, 17, VAHArray);

// ✅ Extra SG’s
SCFloatArray POC_Ext, OpenMarker, LastT, InBalance, IBR1, OpenRange, PoorHL;
sc.GetStudyArrayUsingID(tpoID, 14, POC_Ext);
sc.GetStudyArrayUsingID(tpoID, 18, OpenMarker);
sc.GetStudyArrayUsingID(tpoID, 20, LastT);
sc.GetStudyArrayUsingID(tpoID, 21, InBalance);
sc.GetStudyArrayUsingID(tpoID, 22, IBR1);
sc.GetStudyArrayUsingID(tpoID, 25, OpenRange);
sc.GetStudyArrayUsingID(tpoID, 34, PoorHL);

SCDateTime vorigeDatum = 0;
int geschreven = 0;

for (int i = sc.ArraySize - 1; i >= 0 && geschreven < AantalDagen.GetInt(); --i)
{
SCDateTime tijd = sc.BaseDateTimeIn.GetDate();
if (tijd == vorigeDatum)
continue;

vorigeDatum = tijd;

if (OpenArray == 0 && HighArray == 0 && LowArray == 0 && LastArray == 0)
continue;

char datumStr[11];
snprintf(datumStr, sizeof(datumStr), "%04d-%02d-%02d",
tijd.GetYear(), tijd.GetMonth(), tijd.GetDay());

fprintf(bestand, "%s,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f,%.2f\n",
datumStr,
OpenArray, HighArray, LowArray, LastArray,
POCArray, VAHArray, VALArray,
POC_Ext, OpenMarker, LastT, InBalance, IBR1, OpenRange, PoorHL);

++geschreven;
}

fclose(bestand);

SCString klaar = "✅ Uitgebreide TPO-export voltooid: ";
klaar += bestandPad;
sc.AddMessageToLog(klaar, 0);
}