@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.