Libraryless. Click here for Pure Java version (10759L/60K).
sclass TradingCandle { // min, max, start and end prices settable double min = infinity(); settable double max; settable double start; settable double end; settable Timestamp startTime; settable Timestamp endTime; settable long projectedEndTime; settable bool ongoing; settable S coin; double openingPrice aka startingPrice aka open() { ret start; } double closingPrice aka endPrice aka close() { ret end; } selfType open(double x) { ret start(x); } selfType close(double x) { ret end(x); } selfType high(double x) { ret max(x); } selfType low(double x) { ret min(x); } bool isGreen() { ret end > start; } bool isRed() { ret end < start; } bool isWhite() { ret end == start; } S colorText() { ret isGreen() ? "green" : isRed() ? "red" : "white"; } double durationInSeconds() { ret toSeconds(endTime.minus(startTime)); } void addValue(double price, Timestamp timestamp) { if (price < min) min = price; if (price > max) max = price; end = price; endTime = timestamp; if (startTime == null) { startTime = timestamp; start = price; } } S myType() { ret "candle"; } toString { S text = firstToUpper(colorText()) + " " + myType(); if (startTime != null) { text += " starting " + startTime + ", duration " + iround(toSeconds(endTime.minus(startTime))) + "s"; text += ", starting price " + formatPrice(start) + ", end price " + formatPrice(end); text += ", min " + formatPrice(min) + ", max " + formatPrice(max); } ret text; } double changeRatio() { ret doubleRatio(end, start); } public TradingCandle clone() { ret shallowClone(this); } Color color() { ret directionToCandleColor(end-start); } double hl2 aka mid() { ret avg(min, max); } double delta aka move() { ret end-start; } double high() { ret max; } double low() { ret min; } selfType startTime(long startTime) { ret startTime(toTimestamp(startTime)); } selfType endTime(long endTime) { ret endTime(toTimestamp(endTime)); } Timestamp openingTime() { ret startTime; } Timestamp closingTime() { ret endTime; } Timestamp middleTime() { ret new Timestamp((startTime.toLong()+endTime.toLong())/2); } // whichever one is later long endOrProjectedEndTime() { ret main max(endTime().unixDate(), projectedEndTime); } }
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): elmgxqgtpvxh, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1036115 |
Snippet name: | TradingCandle - a candle in a trading view |
Eternal ID of this version: | #1036115/31 |
Text MD5: | 52ff03c3d354664bdc9469fa38b49ec8 |
Transpilation MD5: | c34b04b317bde129fa4b63382f0c3662 |
Author: | stefan |
Category: | javax |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2023-03-20 21:42:36 |
Source code size: | 2541 bytes / 98 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 251 / 447 |
Version history: | 30 change(s) |
Referenced in: | [show references] |