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

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

[复制链接]
 楼主| 发表于 2019-3-19 06:01 PM | 显示全部楼层


mikeqc 发表于 2019-3-19 08:33 AM
这样的操作思路是假定当下行情是盘整。

一个好的交易系统或方法,最基本的是可以区分所操作级别上, ...

感谢mikeqc,您经验丰富,希望常过来指导。列出的七步是开发步骤,不是操盘操作,不涉及当下行情。您提出的趋势反转,趋势形成的初期,以及趋势形成之后的第一次回调,很有指导意义,在模型开发时,我会尽量去做。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-19 06:03 PM | 显示全部楼层
mojideheng 发表于 2019-3-19 09:01 AM
难道胡币开始值钱啦?!看来要好好攒点了!

希望胡币流动起来。感谢捐赠和投资。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-19 06:05 PM | 显示全部楼层
algo 发表于 2019-3-18 10:20 PM
over all performance 2018-04-18 spy qqq me --   99.89%  99.28% 101.16%
over all performance 201 ...


Could you please explain, in detail, how you obtain the first percentage,  99.89% ,  in the very first line? Thx.
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-19 06:20 PM | 显示全部楼层
能投资1W胡币,不要回报,但想分享你的source code. 当然我也可以share我的script

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-19 06:33 PM | 显示全部楼层
xinxing 发表于 2019-3-19 06:05 PM
Could you please explain, in detail, how you obtain the first percentage,  99.89% ,  in the very ...

start to invest at 2018-03-18, assume spy qqq and I have 100%, after one month, spy worth only 99.89%, qqq worth only 99.28%, I have 1% gain, so my number is 101.16%
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-19 06:35 PM | 显示全部楼层
coexist 发表于 2019-3-19 06:20 PM
能投资1W胡币,不要回报,但想分享你的source code. 当然我也可以share我的script

非常荣幸能得到您的捐赠支持,开发过程中所有source code公开,没问题。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-19 07:03 PM | 显示全部楼层
algo 发表于 2019-3-19 06:33 PM
start to invest at 2018-03-18, assume spy qqq and I have 100%, after one month, spy worth only 99. ...

Wonderful! Your model gains 136% in one year, this must be a back test result, right?
It would be nice if you can provide a list of timestamps associated with when these BUY/SELL happens, so that I can learn how often your model triggers these BUY and SELL. Thanks.
回复 鲜花 鸡蛋

使用道具 举报

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

言归正传,直奔主题。

RSI计算公式

$$ RSI = 100 - \frac{100}{1+RS} $$ $$ First RS = \frac{Average Gain}{Average Loss} $$ where, $$ Average Gain = (Total Gains/n); $$ $$ Average Loss = (Total Losses/n); $$ where, $n$ is number of RSI periods $$ Smoothed RS = \frac{[(previous Average Gain)\times 13 + Current Gain]/14} {[(previous Average Loss)\times 13 + Current Gain]/14} $$
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-19 07:28 PM | 显示全部楼层
xinxing 发表于 2019-3-18 09:51 PM
言归正传,先说概念。

只看股票的价格,我看不出名堂:涨不知道涨到何时为止,跌不知道跌到多少是底。胡 ...

如果有钝化出现,怎么解决
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-19 07:48 PM | 显示全部楼层
shibainu 发表于 2019-3-19 07:28 PM
如果有钝化出现,怎么解决

行家提问,一下命中核心。RIS钝化是指RSI持续走高或走低,迟迟不反转。
RIS钝化这个问题将会在 “第三步:制定交易规则,设置可调参数。”当中得到解决。希望老大到时间多出主意,多想办法,我们共同解决。
基本思路是,我们制定一个粗略的触发点,让程序自动优化,反馈给我们,具体如何触发才能够使得利益最大化。概念上称之为“在人指导下的机器学习”。
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-19 11:50 PM | 显示全部楼层
xinxing 发表于 2019-3-19 07:48 PM
行家提问,一下命中核心。RIS钝化是指RSI持续走高或走低,迟迟不反转。
RIS钝化这个问题将会在 “第三步 ...

你还是没有理解我为什么要提出趋势和盘整这两个不同的走势。如果是盘整走势,就不会有震荡指标钝化的问题,RSI背离了就会有回调。如果是趋势,只要抓住我提的那三种情况的任何一种就可以躺在赚钱了。

用今天SPY 1分钟图为例子

12:02, 284.36 是趋势改变点, 1卖,

1:20, 283.68 是趋势确认点, 2卖,

今天没有严格定义上的3卖,但是15:07 第一次回抽 283.00 也可介入。

抓住这几个点是不是就可以躺在赚钱了?
spy1min.png

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

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

说的对,我现在还不理解“趋势”和“盘整”这两种走势在RSI上如何区分。
我的首要任务是先把RSI算出来。正好mikeqc贴了图,我看今晚能否重复算出SPY的RSI图。

接下来就该学习mikeqc的分析了。
1)mikeqc给出了第一个卖出点在12:02, 284.36 是趋势改变点,完全同意,
2)我不知道如何判断“1:20, 283.68 是趋势确认点, 2卖” 请老大传授经验。
3)如何避免“15:07 第一次回抽”时不犯错误,不错误买进?还请老大指点迷津,根据什么,如何作出正确判断。多谢。

太棒了,我非常喜欢mikeqc理论和实际相结合,分析了3/19/19的RSI和股价的具体关系。
我觉得受益匪浅,我第一个点赞,如果你也觉得受益于mikeqc的分析,也请点赞。感谢分享。

点评

you can PM me. I will tell you a simply and programmable method to avoid #3 although it is not always correct.  发表于 2019-3-20 08:17 AM
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-20 07:52 AM | 显示全部楼层
xinxing 发表于 2019-3-18 10:16 PM
你的建议很好,我这就采纳。我会通过数据采集,交互协议,买卖信号的使用,下单操作等技术细节,给出自动 ...

老大,慢慢来。第一步先搞明白那些broker有API。现在INTERACTIVEBROKER和ROBINHOOD有。可以作为开发对象。
有现成CODE可以继续开发。 另外,就是DATA,其实BROKER都有提供DATA。除此,也有其他openDATA。

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-20 07:52 AM | 显示全部楼层
回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-20 07:54 AM | 显示全部楼层
xinxing 发表于 2019-3-19 07:48 PM
行家提问,一下命中核心。RIS钝化是指RSI持续走高或走低,迟迟不反转。
RIS钝化这个问题将会在 “第三步 ...

老大,如果用PYTHON,它带很多OPENSOURCE PACKAGE, RSI 计算就不是问题了。
回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-20 08:29 PM | 显示全部楼层
littletiger 发表于 2019-3-20 07:54 AM 老大,如果用PYTHON,它带很多OPENSOURCE PACKAGE, RSI 计算就不是问题了。
谢谢你的建议,IB提供了多种语言的API, 如Java, C++, Python., 选自己得心应手的最好。

我选C++ (POSIX-compliant),好处有两个:一是跨平台,可在Window、Linux、Android、iPhone运行;二是安全、高效。

IB提供15秒间隔的历史数据和即时数据。

SVG Generator - Lingfa DiagramWindow::snapshot() at Wed Mar 20 20:28:42 2019 数据采集 买卖订单 自动交易算法 Automated trading system 交易平台 Interactive Brokers Gateway/TWS

回复 鲜花 鸡蛋

使用道具 举报

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

这里把我的RSI加到Mike的下面,以便对比。大概是相符合的,按照一般的交易规则,我的RSI只有一次卖出和一次买进,比Mike的简单些。

SPY_RSI_3_20_2019.png

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

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

littletiger 发表于 2019-3-20 07:54 AM 老大,如果用PYTHON,它带很多OPENSOURCE PACKAGE, RSI 计算就不是问题了。
把28#l的计算公式变成code,就这么几行,简单 paste,分享。
void RelativeStrengthIndex::calcu(int i)
{
    double rs;
    double change = mp.m_prices [ i ] - mp.m_prices [ i - 1 ];
    if (i <= N) {
        if (change > 0) {
            m_gain += change;
        } else if (change < 0) {
            m_loss -= change;
        }

        if (i == N) {
            m_gain /= N;
            m_loss /= N;
            rs = m_gain/m_loss;
            rsi << (1-1/(1 + rs)); // first RS
        }
    } else {

        if (change > 0) {
            m_gain = (m_gain*(N-1) + change)/N;
            m_loss = m_loss*(N-1)/N;
        } else {
            m_gain = m_gain*(N-1)/N;
            m_loss = (m_loss*(N-1) - change)/N;
        }
        rs = m_gain/m_loss;
        rsi << (1-1/(1 + rs));
    }
}

这里, MinutePrice (mp)每一分钟股票的价格。

i是这一分钟,那么i-1就是前一分钟。

N=14

这里,RSI归一,而不是归100

输入是一个价格数组, mp.m_prices,输出是另外一个数组,rsi 楼上的图就是这样简单计算出来的。

评分

1

查看全部评分

回复 鲜花 鸡蛋

使用道具 举报

发表于 2019-3-21 10:21 PM | 显示全部楼层
xinxing 发表于 2019-3-19 06:05 PM
Could you please explain, in detail, how you obtain the first percentage,  99.89% ,  in the very ...

one year performance ( aggressive mode) is amazing



performance 2018-04-21 spy qqq me --   98.57%  96.99% 146.91% (over all)
performance 2018-05-21 spy qqq me --  101.09% 100.89% 373.94% (over all)
performance 2018-06-21 spy qqq me --  101.41% 105.27% 557.25% (over all)
performance 2018-07-21 spy qqq me --  103.61% 107.57% 659.90% (over all)
performance 2018-08-21 spy qqq me --  105.88% 108.05% 722.66% (over all)
performance 2018-09-21 spy qqq me --  107.97% 110.06% 794.89% (over all)
performance 2018-10-21 spy qqq me --  102.15% 104.19% 682.61% (over all)
performance 2018-11-21 spy qqq me --   98.00%  96.08% 584.71% (over all)
performance 2018-12-21 spy qqq me --   89.01%  88.41% 754.83% (over all)
performance 2019-01-21 spy qqq me --   97.20%  97.02% 748.79% (over all)
performance 2019-02-21 spy qqq me --  102.58% 102.82% 806.58% (over all)
performance 2019-03-21 spy qqq me --  105.29% 109.38% 926.30% (over all)

回复 鲜花 鸡蛋

使用道具 举报

 楼主| 发表于 2019-3-21 10:33 PM | 显示全部楼层
algo 发表于 2019-3-21 10:21 PM
one year performance ( aggressive mode) is amazing


Wonderful!  It would be nice if you can provide a list of timestamps associated with when these BUY/SELL happens, so that I can learn how often your model triggers these BUY and SELL. Thanks.
回复 鲜花 鸡蛋

使用道具 举报

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

本版积分规则

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

GMT-5, 2024-11-23 09:53 AM , Processed in 0.071462 second(s), 24 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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