@jamison
To calculate Williams %R in Kotlin, you can use the following code snippet:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
fun williamsPercentR(highs: List<Double>, lows: List<Double>, closes: List<Double>, period: Int): List<Double> {
val result = mutableListOf<Double>()
for (i in period - 1 until highs.size) {
val highestHigh = highs.subList(i - period + 1, i + 1).maxOrNull() ?: 0.0
val lowestLow = lows.subList(i - period + 1, i + 1).minOrNull() ?: 0.0
val currentClose = closes[i]
val percentR = ((highestHigh - currentClose) / (highestHigh - lowestLow)) * -100
result.add(percentR)
}
return result
}
|
This function takes in three lists of high prices, low prices, and closing prices, as well as the period for which you want to calculate the Williams %R. It then loops through the lists to calculate the highest high and lowest low within the specified period, and then calculates the Williams %R based on the formula (highestHigh - currentClose) / (highestHigh - lowestLow) * -100.
You can call this function with your data and desired period to calculate Williams %R for each data point.