找回密码
 注册
搜索
楼主: xinxing

打算开发一个股票自动交易系统(Algorithmic trading)

[复制链接]
 楼主| 发表于 2019-3-22 07:51 AM | 显示全部楼层


mikeqc 发表于 2019-3-19 11:50 PM
你还是没有理解我为什么要提出趋势和盘整这两个不同的走势。如果是盘整走势,就不会有震荡指标钝化的问题 ...

完成了:
             第一步:我们可以先定义超买、超卖。
             第二步:定量化超买、超卖状态的计算。
开始:
             第三步:制定交易规则,设置可调参数。

“制定交易规则”是核心。胡同里有经验的人很多,如何利用RSI指数进行DT?
希望大佬们首先能够分享你们的经验,我们共同再把“经验”变成“规则”,然后把“规则”变成“程序”,最后运行“程序”,反过来验证“规则”的合理性和普适性,修改“规则”,让“规则”变得更合理。。。这样,几轮循环之后,我们就有了一个“自动交易系统”,这个“自动交易系统”,可以“自动发帖”到胡同来,即时共享运行结果和买卖信号。过程,公开、透明,程序源码分享、数据可查。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-22 08:22 AM | 显示全部楼层
最简单的规则就是: buy at oversold and sell at overbought. 这个规则能盈利吗?我不知道答案。
有盈利的可能,但是,如果这么简单就能够盈利,那么大家都可以轻松盈利,这好像不可能。
无论如何,猜测只是猜测,只有做了计算,这个算出来的结果才是答案。不动手计算,没有答案,争取这个周末算出来,跟大家分享。
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-22 09:10 PM | 显示全部楼层
xinxing 发表于 2019-3-21 10:33 PM
Wonderful!  It would be nice if you can provide a list of timestamps associated with when these BU ...

my sell frequency is high, so it's hard to provide it
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-22 09:41 PM | 显示全部楼层
algo 发表于 2019-3-22 09:10 PM
my sell frequency is high, so it's hard to provide it

how high? In average, once a day, twice a day, or 10 times a day, or more?
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-23 12:59 PM | 显示全部楼层
本帖最后由 xinxing 于 2019-3-23 01:24 PM 编辑

xinxing 发表于 2019-3-22 08:22 AM 最简单的规则就是: buy at oversold and sell at overbought. 这个规则能盈利吗?我不知道答案。 有盈利的 ...
任何一笔交易(Transaction)都应该有一条对应的记录。所以,先定义一下这个结构:

    // A Transaction is about when at what price buy/sell how many number of shares.
    struct Transaction {
        Transaction(ulong _time = 0, double _price = 0, int act = 0, int accumulation = 0)
            : time(_time)
            , price(_price)
            , shares(act)
            , holding(accumulation)
        {}

        ulong time;   // date and time
        double price; // market price
        int shares;   // number of share(s) of this transaction. +: buy, -: sell
        int holding;  // number of holding share(s) after this transaction
    };

利用这个结构,定义一个数组,把所有交易都记录下来。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-23 07:03 PM | 显示全部楼层
本帖最后由 xinxing 于 2019-3-23 07:19 PM 编辑

刚刚过去的一周里, RSI买卖记录如下,是赚钱的。

  1. Mon Mar 18 11:40:00 2019,1552923600,281.51, 1
  2. Tue Mar 19 12:08:00 2019,1553011680,284.18, -1
  3. Tue Mar 19 15:33:00 2019,1553023980,282.19, 1
  4. Wed Mar 20 14:16:00 2019,1553105760,282.494, -1
  5. Thu Mar 21 11:09:00 2019,1553180940,283.393, -1
  6. Thu Mar 21 12:02:00 2019,1553184120,284.095, -1
这里有个问题,买 和 卖 如何 平衡?

因为Realized profit/loss 只有在持仓为零时才是真的,否则是虚的。

比如这里的4和5两个空仓,现在平掉是赚的,但是如果周一大涨,可能就变亏了。 补充内容 (2019-3-23 07:58 PM): 写错了,不是4和5,应该是5和6,指最后两个空仓

SPY-RSI-2019_03_18-22.png
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-23 10:31 PM | 显示全部楼层
xinxing 发表于 2019-3-22 09:41 PM
how high? In average, once a day, twice a day, or 10 times a day, or more?

I have many models, you can choose whatever you like. Depends on the model you used, the sell frequency can be  1 time per 5 minutes
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-24 07:37 AM | 显示全部楼层
algo 发表于 2019-3-23 10:31 PM
I have many models, you can choose whatever you like. Depends on the model you used, the sell freq ...

Well, your trading fee will up to $20,000 a year, which is too high to profit.
Here we are interested in exchange idea how to develop a model from scratch, not a place to advertise any model.
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-24 09:39 AM | 显示全部楼层
回到46#的问题:
买 和 卖 如何 平衡?

定义 overbought 采用了一个阈值,提高这个阈值 做空的 次数会降低,反之,会提高。
次数的变化,肯定会影响到盈利, 也就是盈利是这个阈值的一个函数,我们希望找到一个最佳的阈值使得盈利最大化。
出乎意料的是在0.56找到一个最坏值,变小和变大分叉后有两个不同的最佳值。


over-bought-threshold-at-oversold50.png
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-24 11:55 AM | 显示全部楼层
xinxing 发表于 2019-3-24 07:37 AM
Well, your trading fee will up to $20,000 a year, which is too high to profit.
Here we are inter ...

my tool is not for sell, no advertise at all. just want to exchange ideas. by the way, Robinhood is free.
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-24 12:10 PM | 显示全部楼层
algo 发表于 2019-3-24 11:55 AM
my tool is not for sell, no advertise at all. just want to exchange ideas. by the way, Robinhood i ...

so explain your algorithm please.
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-25 06:19 AM | 显示全部楼层
本帖最后由 xinxing 于 2019-3-25 06:23 AM 编辑

把 oversold 和 overbought 的阈值分别设置成 -0.5 和+0.63, 可以得到SPY如下交易:

Date and timetimestamppricesharesholdingrealizednetProfitSofar
Fri Feb 9 10:51:00 20181518191460257.40511
Fri Feb 9 12:11:00 20181518196260255.8912
Tue Feb 13 13:27:00 20181518546420265.751-2018.207718.2077
Tue Feb 27 10:59:00 20181519747140276.9611
Wed Feb 28 11:00:00 20181519833600274.8312
Tue Mar 13 11:19:00 20181520954340278.54813
Thu Mar 15 14:05:00 20181521137100274.7914
Mon Mar 19 11:04:00 20181521471840271.6115
Wed Mar 21 11:57:00 20181521647820272.16-50-15.93762.27014
Fri Mar 23 11:57:00 20181521820620262.1811
Fri Mar 23 15:07:00 20181521832020259.8812
Tue Mar 27 15:11:00 20181522177860261.93213
Mon Apr 2 11:10:00 20181522681800258.9514
Fri Apr 6 14:04:00 20181523037840260.5515
Mon Apr 9 15:25:00 20181523301900262.6916
Fri Apr 20 11:18:00 20181524237480266.76317
Tue Apr 24 13:05:00 20181524589500263.82618
Tue Apr 24 14:07:00 20181524593220261.71119
Mon Apr 30 11:58:00 20181525103880266.14110
Mon Apr 30 12:20:00 20181525105200265.64111
Mon Apr 30 14:15:00 20181525112100265.21112
Tue May 1 14:06:00 20181525197960263.723-1209.2026611.4728
Thu May 3 10:44:00 20181525358640259.9411
Wed May 9 12:37:00 20181525883820268.552-108.6118320.0846
Thu May 17 14:06:00 20181526580360271.3411
Mon May 21 11:38:00 20181526917080272.8612
Tue May 22 15:03:00 20181527015780273.26613
Tue May 22 15:14:00 20181527016440273.03114
Wed May 23 10:54:00 20181527087240271.1415
Fri May 25 12:24:00 20181527265440271.99716
Fri May 25 14:50:00 20181527274200271.65317
Tue May 29 11:56:00 20181527609360269.0618
Tue May 29 12:18:00 20181527610680268.23919
Thu May 31 14:07:00 20181527790020270.594110
Fri Jun 1 15:20:00 20181527880800273.189111
Fri Jun 1 15:22:00 20181527880920273.168112
Wed Jun 6 14:52:00 20181528311120277.04-12064.941785.0263
Wed Jun 13 14:12:00 20181528913520278.7311
Fri Jun 15 10:41:00 20181529073660275.62412
Fri Jun 15 14:38:00 20181529087880277.248-200.14250985.1688
Thu Jun 21 10:31:00 20181529591460274.43111
Mon Jun 25 10:17:00 20181529936220271.36212
Mon Jun 25 12:14:00 20181529943240269.813
Mon Jun 25 14:59:00 20181529953140269.52514
Wed Jun 27 12:48:00 20181530118080272.16915
Wed Jun 27 13:24:00 20181530120240270.9216
Thu Jul 5 09:29:00 20181530797340272.4117
Mon Jul 16 14:52:00 20181531767120278.9718
Fri Jul 20 14:42:00 20181532112120279.6519
Tue Jul 24 13:01:00 20181532451660281.58110
Fri Jul 27 12:43:00 20181532709780281.37111
Fri Jul 27 13:06:00 20181532711160280.87112
Fri Aug 3 15:27:00 20181533324420283.566-12099.7373184.906
Mon Aug 6 12:16:00 20181533572160284.64-1-1
Thu Aug 9 15:55:00 20181533844500285.0610-0.42184.486
Mon Aug 13 11:34:00 20181534174440283.0611
Thu Aug 16 12:24:00 20181534436640284.938-101.87828186.364
Thu Aug 16 15:58:00 20181534449480283.87111
Thu Aug 23 11:27:00 20181535038020285.75912
Thu Aug 30 14:25:00 20181535653500290.19613
Fri Sep 7 12:14:00 20181536336840287.5714
Tue Sep 11 12:06:00 20181536681960289.37-4010.0844196.449
Tue Sep 11 12:13:00 20181536682380289.445-1-1
Wed Sep 12 15:36:00 20181536780960289.387-1-2
Wed Sep 26 15:57:00 20181537991820289.5920-0.348681196.1
Fri Sep 28 14:10:00 20181538158200290.58611
Mon Oct 1 15:39:00 20181538422740291.26712
Tue Oct 2 15:11:00 20181538507460291.5213
Tue Oct 2 15:22:00 20181538508120291.2614
Wed Oct 3 14:57:00 20181538593020291.76415
Fri Oct 5 11:57:00 20181538755020287.22916
Fri Oct 5 12:03:00 20181538755380287.19617
Mon Oct 8 11:53:00 20181539013980286.02318
Wed Oct 10 14:11:00 20181539195060282.0819
Thu Oct 11 14:49:00 20181539283740272.37110
Mon Oct 15 12:05:00 20181539619500275.06111
Tue Oct 16 15:51:00 20181539719460280.506-110-60.7844135.316
Thu Oct 18 11:40:00 20181539877200277.72211
Thu Oct 18 13:28:00 20181539883680275.90612
Fri Oct 19 14:11:00 20181539972660276.113
Wed Oct 24 11:11:00 20181540393860270.31214
Thu Oct 25 09:29:00 20181540474140267.3615
Fri Oct 26 15:05:00 20181540580700264.3216
Mon Oct 29 12:16:00 20181540829760266.89117
Mon Oct 29 15:18:00 20181540840680262.92518
Mon Oct 29 15:46:00 20181540842360261.03419
Wed Oct 31 15:52:00 20181541015520271.067110
Tue Nov 6 14:36:00 20181541532960273.73111
Mon Nov 12 11:04:00 20181542038640274.36112
Mon Nov 12 11:22:00 20181542039720273.669113
Wed Nov 21 15:46:00 20181542833160265.381114
Mon Nov 26 11:42:00 20181543250520266.12115
Mon Nov 26 12:40:00 20181543254000265.538116
Wed Nov 28 12:12:00 20181543425120271.871-16037.4928172.809
Wed Nov 28 15:58:00 20181543438680274.356-1-1
Tue Dec 4 12:36:00 20181543944960273.213101.14346173.952
Wed Dec 12 14:17:00 20181544642220267.27811
Mon Dec 17 12:48:00 20181545068880258.44312
Mon Dec 17 13:06:00 20181545069960257.82213
Tue Dec 18 15:04:00 20181545163440254.08914
Wed Dec 19 15:09:00 20181545250140250.96615
Thu Dec 27 13:56:00 20181545936960239.88416
Thu Jan 3 10:20:00 20191546528800245.48217
Tue Jan 15 14:33:00 20191547580780259.20218
Thu Jan 17 14:52:00 20191547754720263.372-8073.8096247.762
Tue Jan 22 13:22:00 20191548181320262.24211
Wed Jan 23 12:02:00 20191548262920261.35312
Tue Jan 29 11:02:00 20191548777720262.74713
Wed Feb 6 14:20:00 20191549480800272.41814
Tue Feb 12 13:39:00 20191549996740274.331-4038.5644286.326
Wed Feb 13 11:42:00 20191550076120274.69511
Thu Feb 21 14:31:00 20191550777460277.13912
Thu Feb 21 14:57:00 20191550779020276.57113
Mon Mar 4 11:12:00 20191551715920280.3514
Mon Mar 4 11:31:00 20191551717060279.615
Mon Mar 4 11:58:00 20191551718680277.9916
Tue Mar 5 13:35:00 20191551810900279.04617
Thu Mar 7 14:22:00 20191551986520275.16818
Fri Mar 8 14:56:00 20191552074960274.01-80-28.4769257.849
Mon Mar 18 11:40:00 20191552923600281.5111
Tue Mar 19 15:33:00 20191553023980282.1912
Wed Mar 20 14:09:00 20191553105340282.333-200.965681258.815
你可以拷贝到你的EXCEL里,自行验证。
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-25 08:25 AM | 显示全部楼层
xinxing 发表于 2019-3-25 06:19 AM
本帖最后由 xinxing 于 2019-3-25 06:23 AM 编辑 把 oversold  和 overbought 的阈值分别设置成 -0.5 和+0 ...

(1)还是跑不过大盘。
(2)能不能把 MAX DRAWN DOWN 也给出了

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-25 05:32 PM | 显示全部楼层
mikeqc 发表于 2019-3-25 08:25 AM
(1)还是跑不过大盘。
(2)能不能把 MAX DRAWN DOWN 也给出了

(1) 净利润258.815,感觉能跑赢大盘,请老大具体算一下这期间的大盘涨多少?
(2) MAX DRAWN DOWN 是 61.133
     The valley bottom level is 135.316 at Tue Oct 16 15:51:00 2018.
     It's previous peak level is 196.449 at Tue Sep 11 12:06:00 2018.
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-25 10:31 PM | 显示全部楼层
xinxing 发表于 2019-3-25 05:32 PM
(1) 净利润258.815,感觉能跑赢大盘,请老大具体算一下这期间的大盘涨多少?
(2) MAX DRAWN DOWN 是 61 ...

你的系统净利润 258.815点,那本金是多少?肯定不能全仓,要不然早就爆了。不要忘记从10/18到11/28那一次操作,一共加仓 16次。也就是说每一个 lot 只能小于你总资金的6%。买大盘可是all in, buy and hold.

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-25 11:04 PM | 显示全部楼层
本帖最后由 xinxing 于 2019-3-25 11:23 PM 编辑
mikeqc 发表于 2019-3-25 10:31 PM
你的系统净利润 258.815点,那本金是多少?肯定不能全仓,要不然早就爆了。不要忘记从10/18到11/28那一 ...


说的对,holding=16那次动用的资金是最高的一次,cost=4312.435, 那么,盈利率 = 258.815/4312.435=6.0% 接近大盘。
是的,大盘是个很好的参考。现在这个模型的规则过于简单,诸如,之前的RSI钝化,还没有考虑。

现在进入 改变交易规则,回测,评估;再变交易规则,再回测,再评估 。。。如果有好的建议,请分享。
当然,也可以改成all-in-all-out 的交易方式,这些方案都在桌子上。
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-25 11:40 PM | 显示全部楼层
rsi是盘整区间指标,或者说是range交易的指标。对于单边上涨或下跌,表现不一定好。

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-26 12:18 AM | 显示全部楼层
本帖最后由 xinxing 于 2019-3-26 12:21 AM 编辑
mitwkwk 发表于 2019-3-25 11:40 PM
rsi是盘整区间指标,或者说是range交易的指标。对于单边上涨或下跌,表现不一定好。


同意你的看法,我也想检验 盘整区,单边上涨区,和单边下跌区域RSI的表现。
比如,单边下跌区域RSI压在低位震荡,只买进(touch oversold threshold),不出仓(not reach overbought threshold),是致命的。
直观的解决办法就是不要使用常数作为overbought 的阈值, 需要调低这个阈值,有出仓的机会, 也就是说把 overbought 的阈值 作为一个变量的函数 ,
那么,这个变量是什么?可以是MACD吗?Probably.  就这样那他们关联起来,一个自动交易模型就会慢慢浮现。

点评

我想现在我们又不得不回到 16 楼的问题上来了 - 如何区分趋势和盘整。这个肉眼可以清楚的看得出来的图形,要写成程序却不那么简单。我有两个思路,一个是均线的相对位置,一个是利用已有的指标,比如 CCI,Aroon.  发表于 2019-3-26 08:08 AM
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-26 11:28 PM | 显示全部楼层
xinxing 发表于 2019-3-26 12:18 AM 同意你的看法,我也想检验 盘整区,单边上涨区,和单边下跌区域RSI的表现。 比如,单边下跌区域RSI压在 ...
mikeqc 我想现在我们又不得不回到 16 楼的问题上来了 - 如何区分趋势和盘整。这个肉眼可以清楚的看得出来的图形,要写成程序却不那么简单。我有两个思路,一个是均线的相对位置,一个是利用已有的指标,比如 CCI,Aroon.
想请Mike从图上分析如何区分趋势和盘整,什么尺度的均线对区分趋势和盘整最有帮助?希望能与你合作开发

点评

我希望能够合作开发自动选股,找出日线周线2买和三买的单边上涨股票,而非自动操作大盘。  发表于 2019-3-27 08:32 AM
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-27 08:29 AM | 显示全部楼层
xinxing 发表于 2019-3-26 11:28 PM
想请Mike从图上分析如何区分趋势和盘整,什么尺度的均线对区分趋势和盘整最有帮助?希望能与你合作开发 ...

谈趋势和盘整,一定在级别之下谈。比如,最近跌成狗屎的TSLA,在日线上看是下跌,小时图就可能是下跌尾声(如果岛形反转成立),而在月线图上一个盘整。所谓盘整就是上下震荡,有很多的价格重叠区。比如 TSLA月线从2010-2012,以及从2014到现在,两个盘整中间就是上升趋势。

tsla monthly.png

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|www.hutong9.net

GMT-5, 2024-4-24 09:09 PM , Processed in 0.084998 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表