首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向量化简单的基于循环的交易系统

向量化简单的基于循环的交易系统
EN

Stack Overflow用户
提问于 2013-04-19 09:04:24
回答 1查看 539关注 0票数 0

在研究了下面两个链接中使用的矢量化方法之后,我尝试创建一个简单的交易策略模板(代码如下所示),该模板可以在R中矢量化,以获得比基于循环的结构更快的速度。我在向量化方面遇到了困难,因为必须维护和构建变量状态,例如:

1)我使用的信号对于长和短并不是相互排斥的(就像在简单的MA交叉系统中一样)。

2)一旦被触发,信号可能会漂移,直到它得到相反的指示(例如RSI在80以上做空,在20以下做多)。

3)位置会保持多个周期,因此不会出现在每个信号灯进入或信号灯为假后退出的情况(我希望在停止和倒车或SAR系统中只能进入一次)。

我认为这是一个简单的示例系统,但它比这里列出的示例要复杂一些:

http://blog.fosstrading.com/2011/03/how-to-backtest-strategy-in-r.html

Cumulative Return in Trading Strategy Test

系统逻辑摘要:当zscore低于(高于) -2 (2)时,系统开始持平,然后以要价(bid)价格做多(做空)。该系统跟踪性能统计数据,如“交易”、“胜利”、已结清损益(为简单起见,省略了其他)。在系统运行后,系统还会为绘图保留一个运行中的“权益”。

代码语言:javascript
运行
复制
# assume vectors bid, ask, and zscore containing those price series respectively
# pos = current position where 1 == long, -1 == short, 0 == flat
# entryP = entry price, pnl = open pnl, cpnl = closed pnl
pos = 0; entryP = 0.0; pnl = 0; cpnl = 0; trades = 0; wins = 0
ub = length(bid)
equity = rep(0, ub)
for (i in 10000:ub) {
pnl = 0
if (pos > 0) pnl = bid[i] - entryP
if (pos < 0) pnl = entryP - ask[i]
if (zscore[i] > 2.0 && pos != -1) { # go short
    if (pos > 0) { # exit long and record pnl
        cpnl = cpnl + pnl
        if (pnl > 0) wins = wins + 1
        trades = trades + 1
        pnl = 0
    }
    pos = -1
    entryP = bid[i]
} else if (zscore[i] < -2.0 && pos != 1) { # go long
    if (pos < 0) { # exit short and record pnl
        cpnl = cpnl + pnl
        if (pnl > 0) wins = wins + 1
        trades = trades + 1
        pnl = 0
    }
    pos = 1
        entryP = ask[i]
    }

    equity[i] = cpnl + pnl
}
# assume close-out of final position
cpnl = cpnl + pnl
if (pnl > 0) wins = wins + 1
if (pos != 0) trades = trades + 1
# plot equity chart and report performance stats
plot(equity, t='l', lwd=3)
cpnl;trades; cpnl / trades; wins/trades

有可能在R中向量化这个简单的基于循环的均值回归交易系统吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-19 10:04:06

“我在向量化方面遇到了困难,因为必须维护变量状态”

这就是所有的总结。如果你在任何迭代中的结果依赖于之前的迭代,你就不能避免循环。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16095609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档