Hallo,
ich bin verwirrt, ich verstehe Dein Problem nicht.
Zunächst: Rundungen ist ein schwieriges Thema, auch wenn es einfach aussieht. Investox benutzt (vermutlich) intern einen Datentyp double. Diese Datentyp kann große Fließkommazahlen aufnehmen, ist aber eigentlich nicht dafür geeignet damit zu rechnen (und Runden ist eine Rechnung). Der Grund ist, dass zum Beispiel 7000.5 möglicherweise nicht als 7000.5 gespeichert wird, sondern z.B. als 7000.50000000000000000000001 oder 7000.49999999999999999. Wie genau die Zahl gespeichert wird, ist von CPU zu CPU unterschiedlich. Macht in der Praxis überhaupt keinen Unterschied, bewirkt aber das die Zahl größer <>7000.5 ist.
Dann: Mir ist nicht klar was Du eigentlich machen will. Ich vermute, dass Du einfach die Funktionalität von 'floor()' haben willst. Also den ganzzahligen Wert einer Zahl.
Die von Dir markierten Bars sehen für mich alle korrekt aus. Soweit man das auf dem Monitor sehen kann. Du kannst die Berechnungsergebnisse ebenfalls auf dem Chart anzeigen. Mit dem Mauspfeil kann man dann über den Bar gehen und sich anzeigen lassen, wie groß der numerische Wert ist.
In Deinem Fall würde ich sagen: lege mal eine Berechnung in den Chart die dieses hier macht:
|
Quellcode
|
1
2
3
|
calc round: if(round(high)>high, round(high)-0.5, round(high));
calc floor: floor(high);
if(round <> floor, 1, 0)
|
Der erzeugte Graph müsste konstant 0 anzeigen. Gibt es irgendwo eine 1, stimmt was nicht, dann müsste da genauer hingucken.
Viele Grüße