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

时间:2016-12-21 07:35:11

标签: algorithm clojure stochastic

在“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)))

作者将其描述为:

  

随机-K:这给了我们高价/低价的价格变动百分比。

(提名和代码来自“Clojure for Finance”,提摩太华盛顿)

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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

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