python做ui界面,python做ui界面设计
这是一个很长的阅读,但我看了很多关于栈溢出的例子,创建函数来迭代数据帧等等,但是没有找到任何适合我的需求。我也只使用了大蟒和一般的代码大约2个月,所以如果有什么不清楚的地方,我很抱歉。在
我有一个包含每日价格历史的数据框,并尝试基于以下策略创建购买信号的回溯测试:
我们首先寻找收盘价大于前一天和后天收盘价的一天。我们称之为"基准日"
为了启动买入信号,我们等待收盘价回到"基准日"上方的一天。我们现在有一个空头头寸。在
我们一直保持这个位置,直到我们得到一个卖出信号,这个信号与我们所寻找的买入信号相反。(即收盘价低于前一日,且前一日和后一日较高)
我只希望一次有一个买入是活跃的,直到我们得到卖出信号,然后整个过程重新开始。在
下面是一个示例数据帧,其中包含我正在查看的一小部分数据进口熊猫作为螺纹中径
数据={
日期:[2000年一月3日,2000年一月四日,2000年一月5日,2000年一月6日,2000年一月七日,2000年一月10日,2000年一月11日,2000年一月12日,2000年一月13日,2000年一月14日,2000年一月18日,2000年一月19日,2000年一月20日
关闭:[308.3,315.3,314.4,307.5,309.8,313.4,310.7,324.2,332.5,348.8,351.1,348.2,348.7,343.5,343.3,342.4,343,334.4,334.6,336,333
df=pd .数据帧(数据)
##创建列来比较前一天和后一天的价格
df[上一次关闭]=df[关闭]。移位(1)
df[next_close]=df[close].移位(-1)
##如果价格低于前一天和后一天,返回布尔值
df[ high _ high ]=((df[ prev _ close ])df[ close ])((df[ next _ close ])df[ close ])
##如果价格高于前一天和后一天,返回真实的的布尔值
df[ low _ low ]=((df[ prev _ close ])df[ close ])((df[ next _ close ])df[ close ])
##最近真实的最低价_最低价的返回价格
df[补偿价格]=df[关闭]。其中(df[low_low]==True)
##用以前的值填写空白以保持比较价格有效
df[公司价格]。fillna(method=pad ,inplace=True)
##创建卖出比较日期,以便在平仓时参考
df[sell_comp]=df[close].其中(df[高_高]==真)
df[sell_comp].fillna(method=pad ,inplace=True)
##创建买入信号
df[ buy _ SIG ]=df[ close ]df[ comp _ price ]
##将买入信号的第一个实例指定为开仓日
df[ open _ pos ]=(df[ buy _ SIG ]==1)(df[ buy _ SIG ].shift(1)!=1)
df[ take _ signal ]=(df[ buy _ SIG ]==1)(df[ open _ pos ]==True)
df[开盘价]=df[收盘].其中(df[ take _ signal ]=True)
df[打开位置价格].fillna(method=pad ,inplace=True)
##创建卖出信号
df[卖出信号]=df[关闭] df[卖出信号]
##将第一次卖出指定为平仓日
df[ close _ pos ]=(df[ sell _ SIG ]==True)(df[ sell _ SIG ]).shift(1)==False)
##创建在职位打开时组织的列
df[打开位置日期]=df[日期]。其中((df[ open _ pos ]==True)(df[ take _ signal ]==True))
df[打开位置日期]。fillna(method=pad ,inplace=True)
##创建显示平仓日期和价格的列
df[ close _ pos _ price ]=df[ close ].其中(df[close_pos]==True)
df[关闭位置日期]=df[日期]。其中((df[close_pos]==True))
##计算交易收益
df[ gain ]=(df[ close _ pos _ price ]-df[ open _ pos _ price ]).其中((df[ close _ pos _ price ]0)(df[ open _ pos _ price ]0))
然后,我创建了另一个数据帧,当我收到卖信号时显示结果,这样我可以稍后将结果转换为元组,并迭代以添加事务成本等,以完成图表目的。在
^{pr2}$
我发现同一个open_pos_date的多个实例具有不同的close_pos_date值。在这个过程中,我允许几个空缺的职位发挥作用。在
我想把我的第一个买入信号作为我唯一的仓位,忽略所有其他的买入信号,直到我得到卖出信号。此时,我想寻找新的买入信号并持仓,直到得到新的卖出信号。在
我可能创建了太多的列,但我很难找到一种方法来获得独特的信号进行定位,然后将价格与我收到卖出信号时的价格进行比较。如果有人能推荐一个更干净的方法来做到这一点,我很乐意放弃我的第一次尝试,尝试一下。在
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。