解释这个随机函数是如何工作的

Explain how this stochastik function works

在书中"Clojure for Finance"我发现了这样一个函数:

(defn stochastic-k [last-price low-price high-price]
  (let [hlrange (- high-price low-price)
        hlmidpoint (/ hlrange 2)
        numerator (if (> last-price hlmidpoint)
                    (- last-price hlmidpoint)
                    (- hlmidpoint low-price))]
     (/ numerator hlrange)))

作者描述为:

stochastic-k: This gives us our percentage of price movement of the high/low price.

(Timothy Washington 的“Clojure for Finance”引述和代码)

我尝试了 REPL 中的函数,但它的输出对我来说没有意义:

user=> (println (stochastic-k 18 13 23))
13/10

所以结果是 1.3,但我实际上期望 1.0,因为据我所知,18 是 13 到 23 范围的中点。

任何人都可以向我解释该功能应该如何工作吗?

我认为实施中似乎存在错误。我认为分子应该是这样的:

numerator (if (> last-price hlmidpoint)
                    (- last-price hlmidpoint)
                    (- hlmidpoint last-price))

然后该函数将生成一个分数,表示 last-price 与范围内的平均价格有多少差异。