-
Notifications
You must be signed in to change notification settings - Fork 35
Expand file tree
/
Copy pathCandleEntryDouble.kt
More file actions
69 lines (56 loc) · 3.13 KB
/
CandleEntryDouble.kt
File metadata and controls
69 lines (56 loc) · 3.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
package info.appdev.charting.data
import android.annotation.SuppressLint
import android.graphics.drawable.Drawable
import kotlin.math.abs
/**
* High-precision candle entry that stores all OHLC values as Double, extending [CandleEntryFloat]
* so it works seamlessly in the existing candlestick chart rendering pipeline.
* Use [xDouble], [highDouble], [lowDouble], [openDouble], [closeDouble] for full-precision access.
*/
@SuppressLint("ParcelCreator")
open class CandleEntryDouble : CandleEntryFloat {
var xDouble: Double = 0.0
var highDouble: Double = 0.0
var lowDouble: Double = 0.0
var openDouble: Double = 0.0
var closeDouble: Double = 0.0
override var x: Float
get() = xDouble.toFloat()
set(value) { xDouble = value.toDouble() }
constructor(
x: Double, shadowH: Double, shadowL: Double, open: Double, close: Double
) : super(x.toFloat(), shadowH.toFloat(), shadowL.toFloat(), open.toFloat(), close.toFloat()) {
xDouble = x; highDouble = shadowH; lowDouble = shadowL; openDouble = open; closeDouble = close
this.high = shadowH.toFloat(); this.low = shadowL.toFloat()
this.open = open.toFloat(); this.close = close.toFloat()
}
constructor(
x: Double, shadowH: Double, shadowL: Double, open: Double, close: Double, data: Any?
) : super(x.toFloat(), shadowH.toFloat(), shadowL.toFloat(), open.toFloat(), close.toFloat(), data) {
xDouble = x; highDouble = shadowH; lowDouble = shadowL; openDouble = open; closeDouble = close
this.high = shadowH.toFloat(); this.low = shadowL.toFloat()
this.open = open.toFloat(); this.close = close.toFloat()
}
constructor(
x: Double, shadowH: Double, shadowL: Double, open: Double, close: Double, icon: Drawable?
) : super(x.toFloat(), shadowH.toFloat(), shadowL.toFloat(), open.toFloat(), close.toFloat(), icon) {
xDouble = x; highDouble = shadowH; lowDouble = shadowL; openDouble = open; closeDouble = close
this.high = shadowH.toFloat(); this.low = shadowL.toFloat()
this.open = open.toFloat(); this.close = close.toFloat()
}
constructor(
x: Double, shadowH: Double, shadowL: Double, open: Double, close: Double, icon: Drawable?, data: Any?
) : super(x.toFloat(), shadowH.toFloat(), shadowL.toFloat(), open.toFloat(), close.toFloat(), icon, data) {
xDouble = x; highDouble = shadowH; lowDouble = shadowL; openDouble = open; closeDouble = close
this.high = shadowH.toFloat(); this.low = shadowL.toFloat()
this.open = open.toFloat(); this.close = close.toFloat()
}
/** Overall range between shadow-high and shadow-low at full precision. */
val shadowRangeDouble: Double get() = abs(highDouble - lowDouble)
/** Body size at full precision. */
val bodyRangeDouble: Double get() = abs(openDouble - closeDouble)
override fun copy(): CandleEntryDouble =
CandleEntryDouble(xDouble, highDouble, lowDouble, openDouble, closeDouble, data)
override fun toString(): String =
"CandleEntryDouble xDouble=$xDouble highDouble=$highDouble lowDouble=$lowDouble openDouble=$openDouble closeDouble=$closeDouble"
}