@jaycee_rowe
Here is an example code snippet in Groovy to compute Parabolic SAR (Stop and Reverse) :
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 |
def computeSAR(def high, def low, def acceleration, def maxAcceleration) {
def sar = []
// initial values
def sarPrev = low[1]
def acc = acceleration
def extremePoint = high[0]
def trend = 1
// loop through the data to calculate SAR
for (int i = 2; i < high.size(); i++) {
if (trend == 1) {
if (low[i] < sarPrev) {
sar.add(sarPrev)
sarPrev = extremePoint
acc = acceleration
trend = -1
extremePoint = low[i]
} else {
def sarCurrent = sarPrev + acc * (extremePoint - sarPrev)
sar.add(sarCurrent)
if (high[i] > extremePoint) {
extremePoint = high[i]
acc += acceleration
}
}
} else {
if (high[i] > sarPrev) {
sar.add(sarPrev)
sarPrev = extremePoint
acc = acceleration
trend = 1
extremePoint = high[i]
} else {
def sarCurrent = sarPrev - acc * (sarPrev - extremePoint)
sar.add(sarCurrent)
if (low[i] < extremePoint) {
extremePoint = low[i]
acc += acceleration
}
}
}
}
return sar
}
// Example usage
def high = [10, 11, 12, 13, 14, 15, 16]
def low = [9, 10, 11, 12, 13, 14, 15]
def acceleration = 0.02
def maxAcceleration = 0.2
def sar = computeSAR(high, low, acceleration, maxAcceleration)
println sar
|
This code calculates the Parabolic SAR values based on the high and low prices of a financial instrument, as well as the acceleration and maxAcceleration parameters. The function computeSAR returns an array of Parabolic SAR values. You can customize the input data and parameters as needed for your specific use case.