Skip to content

Commit

Permalink
V0.9.16 更新一批代码 (#140)
Browse files Browse the repository at this point in the history
* 0.9.16 update

* 0.9.16 update

* 0.9.16 update

* 0.9.16 update

* 0.9.16 fix codes

* 0.9.16 fix codes

* 0.9.16 fix codes

* 0.9.16 清理多余逻辑

* 0.9.16 update

* 0.9.16 简化代码

* 0.9.16 fix codes

* 0.9.16 fix codes

* 0.9.16 新增策略编写案例

* 0.9.16 update

* 0.9.16 加入仓位策略名称校验

* 0.9.16 加入仓位策略名称校验

* 0.9.16 update

* 0.9.16 update

* 0.9.16 优化信号函数,使其符合最新的编写规范

* 0.9.16 优化信号函数,使其符合最新编写规范
  • Loading branch information
zengbin93 authored Apr 10, 2023
1 parent 1f59136 commit 02b2ea1
Show file tree
Hide file tree
Showing 26 changed files with 917 additions and 1,019 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/pythonpackage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ name: Python package

on:
push:
branches: [ master, V0.9.15 ]
branches: [ master, V0.9.16 ]
pull_request:
branches: [ master ]

Expand Down
4 changes: 2 additions & 2 deletions czsc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,10 +24,10 @@
from czsc.sensors import holds_concepts_effect, StocksDaySensor, ThsConceptsSensor, SignalsPerformance


__version__ = "0.9.15"
__version__ = "0.9.16"
__author__ = "zengbin93"
__email__ = "[email protected]"
__date__ = "20230331"
__date__ = "20230404"


def welcome():
Expand Down
18 changes: 4 additions & 14 deletions czsc/analyze.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,7 @@ def remove_include(k1: NewBar, k2: NewBar, k3: RawBar):
else:
raise ValueError

if k3.open > k3.close:
open_ = high
close = low
else:
open_ = low
close = high
open_, close = (high, low) if k3.open > k3.close else (low, high)
vol = k2.vol + k3.vol
# 这里有一个隐藏Bug,len(k2.elements) 在一些及其特殊的场景下会有超大的数量,具体问题还没找到;
# 临时解决方案是直接限定len(k2.elements)<=100
Expand Down Expand Up @@ -258,14 +253,9 @@ def update(self, bar: RawBar):
else:
# 当前 bar 是上一根 bar 的时间延伸
self.bars_raw[-1] = bar
if len(self.bars_ubi) >= 3:
edt = self.bars_ubi[-2].dt
self.bars_ubi = [x for x in self.bars_ubi if x.dt <= edt]
last_bars = [x for x in self.bars_raw[-50:] if x.dt > edt]
else:
last_bars = self.bars_ubi[-1].elements
last_bars[-1] = bar
self.bars_ubi.pop(-1)
last_bars = self.bars_ubi.pop(-1).raw_bars
assert bar.dt == last_bars[-1].dt
last_bars[-1] = bar

# 去除包含关系
bars_ubi = self.bars_ubi
Expand Down
2 changes: 1 addition & 1 deletion czsc/connectors/research.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def get_raw_bars(symbol, freq, sdt, edt, fq='前复权', **kwargs):
kline = pd.read_parquet(file)
if 'dt' not in kline.columns:
kline['dt'] = pd.to_datetime(kline['datetime'])
kline = kline[(kline['dt'] >= sdt) & (kline['dt'] <= edt)]
kline = kline[(kline['dt'] >= pd.to_datetime(sdt)) & (kline['dt'] <= pd.to_datetime(edt))]
_bars = czsc.resample_bars(kline, freq, raw_bars=True)
return _bars

Expand Down
13 changes: 7 additions & 6 deletions czsc/objects.py
Original file line number Diff line number Diff line change
Expand Up @@ -496,8 +496,8 @@ def load(cls, raw: dict):
"""
fa = Factor(name=raw['name'],
signals_all=[Signal(x) for x in raw['signals_all']],
signals_any=[Signal(x) for x in raw['signals_any']] if raw.get('signals_any') else None,
signals_not=[Signal(x) for x in raw['signals_not']] if raw.get('signals_not') else None
signals_any=[Signal(x) for x in raw['signals_any']] if raw.get('signals_any') else [],
signals_not=[Signal(x) for x in raw['signals_not']] if raw.get('signals_not') else []
)
return fa

Expand Down Expand Up @@ -601,11 +601,12 @@ def load(cls, raw: dict):
assert raw['operate'] in Operate.__dict__["_value2member_map_"], f"operate {raw['operate']} not in Operate"
assert raw['factors'], "factors can not be empty"

e = Event(name=raw['name'], operate=Operate.__dict__["_value2member_map_"][raw['operate']],
e = Event(name=raw['name'] if raw.get('name') else raw['operate'],
operate=Operate.__dict__["_value2member_map_"][raw['operate']],
factors=[Factor.load(x) for x in raw['factors']],
signals_all=[Signal(x) for x in raw['signals_all']] if raw.get('signals_all') else None,
signals_any=[Signal(x) for x in raw['signals_any']] if raw.get('signals_any') else None,
signals_not=[Signal(x) for x in raw['signals_not']] if raw.get('signals_not') else None
signals_all=[Signal(x) for x in raw['signals_all']] if raw.get('signals_all') else [],
signals_any=[Signal(x) for x in raw['signals_any']] if raw.get('signals_any') else [],
signals_not=[Signal(x) for x in raw['signals_not']] if raw.get('signals_not') else []
)
return e

Expand Down
8 changes: 1 addition & 7 deletions czsc/signals/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,6 @@
bar_time_V230327,
bar_weekday_V230328,
bar_r_breaker_V230326,

# 以下是旧版本的信号函数,不再维护,仅供参考,不要使用
bar_zdt_V221110,
bar_zdt_V221111,
bar_zdt_V230313,
)

from czsc.signals.jcc import (
Expand Down Expand Up @@ -143,15 +138,14 @@
tas_kdj_base_V221101,
tas_kdj_evc_V221201,

tas_double_rsi_V221203,
# tas_double_rsi_V221203,
tas_rsi_base_V230227,

tas_first_bs_V230217,
tas_second_bs_V230228,
tas_second_bs_V230303,

tas_hlma_V230301,
tas_hlma_V230304,
)


Loading

0 comments on commit 02b2ea1

Please sign in to comment.