Dienstag, 16. April 2024, 16:24 UTC+2

Sie sind nicht angemeldet.

  • Anmelden
  • Registrieren

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

1

Sonntag, 31. August 2014, 14:49

Stundenberechnungen: StartStunde + Anz.Stunden optimierbar?

Hallo,

ich möchte die Handelzeit optimierbar programmieren, d.h. ein Variable für die Startstunde und eine 2.Variable für die Dauer.
z.B.:
startStunde=6
anzStunden=10
-> von 6Uhr bis 16Uhr kann HS handeln

Zitat


global Const startStunde: [01b_startStunde:22,0,23,0,23,1,3,I];
global Const anzStunden: [01a_anzStunden:2,1,10,1,10,1,3,I]; //von 1 bis 10h
global Const endStunde: startStunde + anzStunden;
global Calc isTrue_marktHandeln: DatePart(h) >= startStunde AND DatePart(h) <= endStunde;


Mit dem Code funktioniert es aber nicht bei hohen Stundenzahlen, z.B.
startStunde=22
anzStunden=5
-> nur 22 und 23Uhr aktiv

Kann man den Code oben vielleicht besser codiern, dass er auch über Mitternacht korrekt funktioniert, d.h. z.B. direkt Zeitberechnungen und Zeitvergleiche durchführen?
Danke.

Viele Grüße,
Sten

Lucas

unregistriert

2

Sonntag, 31. August 2014, 15:33

So oder so ähnlich habe ich das Problem irgendwann mal gelöst :D

startStunde=6
anzStunden=10

calc endeStunde: if(startstunde+anzStunden<=2400,startstunde+anzStundens,startstunde+anzStundens -2400);


Viele Grüße aus FFM
Lucas

sten

Experte

Registrierungsdatum: 6. September 2002

Beiträge: 2 879

3

Sonntag, 31. August 2014, 16:28

Hallo Lucas,

Danke für die Berechnungsidee. Ich habe es dann so umgesetzt:

Zitat


global Const startStunde: [01b_startStunde:23,0,23,0,23,1,3,I];
global Const anzStunden: [01a_anzStunden:23,1,24,1,24,1,3,I]; //=24..immer gehandelt
global Calc sumStunden: startStunde + anzStunden;
global Calc endStunde: If(sumStunden<=24, sumStunden, sumStunden-24) ;
global Calc isTrue_marktHandeln: If(sumStunden<=24, Zwischen(DatePart(h), startStunde, endStunde-1), Zwischen(DatePart(h), startStunde, 23) OR Zwischen(DatePart(h), 0, endStunde-1));


Mit dem Indi Zwischen() kann man es noch etwas kompakter formulieren. Vielleicht kann man den Indikator für Stundenberechungen erweitern, dass er direkt mit [22,3] solchen Bereichen im Zeitberechungsmodus zurecht kommt, aber es geht aus so.

Viele Grüße,
Sten

PS:
Die Variable "isTrue_marktHandeln" kann man sich auch sehr schön in den <=60minChart legen und sieht dann sofort die aktiven Kerzen.