clojure/core cond(一个宏)

 clojure的宏cond,与java 的switch case类似:

(ns guestbook.models.clojureCond)
(defn clojureCond
  "cond vs switch case "
  [arg]
  (cond
    (= arg 5)
    (println "arg equal 5")
    (= arg 10)
    (println "arg equal 10")
    :else
    (println "arg is not known")
    )
  )

结果:

(use 'guestbook.models.clojureCond)
=> nil
(clojureCond 5)
arg equal 5
=> nil
(clojureCond 15)
arg is not known
=> nil

QQ交流群:967328440

群二维码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Clojure是一种基于JVM的Lisp方言,非常适合用于函数式编程和数据处理。要用Clojure实现一个量化交易策略,可以按照以下步骤进行: 1. 数据获取:从交易所或数据提供商获取历史价格数据和实时行情数据。 2. 数据处理:使用Clojure的函数式编程和数据处理能力来清洗、转换和分析数据。 3. 策略开发:使用Clojure编写策略代码,其中包括定义交易信号、风险管理规则和交易执行逻辑。 4. 回测测试:使用历史价格数据对策略进行回测测试,评估其性能和盈利能力。 5. 实盘测试:使用实时行情数据对策略进行实盘测试,并对其进行优化和改进。 以下是一个简单的量化交易策略的Clojure代码示例: ```clojure (ns my-trading-strategy (:require [ta4clj.core :as ta])) (defn calculate-indicators [prices] (let [sma (ta/sma prices 20)] (map #(if (< % 0) nil %) sma))) ; 移除最初的n个无效值和负数 (defn generate-signals [prices indicators] (let [last-price (last prices) last-sma (last indicators)] (cond (> last-price last-sma) :buy (< last-price last-sma) :sell :else :hold))) (defn execute-trades [signals portfolio] (let [last-signal (last signals) last-portfolio (last portfolio)] (cond (= last-signal :buy) (assoc last-portfolio :cash 0 :shares 100) (= last-signal :sell) (assoc last-portfolio :cash 100 :shares 0) :else last-portfolio))) (defn backtest [prices] (let [indicators (calculate-indicators prices) signals (mapv #(generate-signals %1 %2) prices indicators) portfolio (reduce execute-trades [{:cash 10000 :shares 0}] signals)] (->> portfolio (map :cash) (reduce #(conj %1 (- %2 (last %1))) [10000]) reverse))) (defn run-trading-strategy [] (let [prices [10 12 15 14 16 19 20 18 16 14 12 11 13 14 16 17 15 12 10 9] result (backtest prices)] (println "Final portfolio value: $" (last result)))) (run-trading-strategy) ; 执行策略 ``` 这个策略使用简单移动平均线指标来产生交易信号,并根据信号执行买入、卖出或持有操作。通过使用Clojure的函数式编程技术,可以轻松地处理和分析历史价格数据,并编写清晰、可维护的策略代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangningboo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值