策略配置重构与网格策略实现(代码+期货数据下载)

【网格策略】

网格的核心逻辑是找到一个“锚”,然后低位时多买,高位卖出。越跌越买,越涨越卖的逻辑。听到这个逻辑,你应该看出来,高波动的振荡的标的特别适合这个策略。

图片

价格的锚点是三年的最高价与最低价的平均。

proj = ProjConfig()
proj.name = '网格策略'
proj.fields = ['max(high,1440', 'low(low,1440)', '(highest_1440+lowest_1440)/2']
proj.name = ['highest_1440', 'lowest_1440', 'mid']

在这个mid的基础上,划分N档。

import numpy as np

from .algo_base import Algo


class AlgoGrid(Algo):
    def __init__(self):
        self.perc_levels = [x for x in np.arange(
            1 + 0.005 * 5, 1 - 0.005 * 5 - 0.005 / 2, -0.005)]
        self.last_price_index = None

    def __call__(self, target):
        df_bar = target.df_bar
        mid = df_bar['mid']['B0']
        close = df_bar['close']['B0']
        price_levels = [mid * x for x in self.perc_levels]
        signal = False
        curr_price_index = None
        for i in range(len(price_levels)):
            if close > price_levels[i]:
                curr_price_index = i
                break
        if not curr_price_index:
            return False

        if self.last_price_index is None:
            signal = True
        else:
            if curr_price_index != self.last_price_index:
                signal = True

        if signal:
            target.order_target_percent(
                target=curr_price_index / (len(price_levels) - 1))
            self.last_price_index = curr_price_index
        return False

【框架升级】

今天把toml配置文件,使用dataclass重构一下。

dataclass顾名思义就是数据类,可以方便地转为dict,dict可以直接dump/load到toml。

很重要的一个特性是嵌套的数据结构,dataclass的asdict都可以直接转为字典,反向也可以直接生成类。

@dataclass
class AlgoConfig:
    name: str
    args: list


@dataclass
class ProjConfig:
    name: str = ''
    desc: str = ""
    start_date = '20100101'
    end_date = None
    benchmark: list[str] = field(default_factory=list)
    symbols: list[str] = field(default_factory=list)
    data_folder: str = 'futures'
    fields: list[str] = field(default_factory=list)
    names: list[str] = field(default_factory=list)
    algos: list[AlgoConfig] = field(default_factory=list)

    def to_toml(self):
        data = asdict(self)
        toml.dump(data, open("{}.toml".format(self.name), "w", encoding='utf8'))


def from_toml(filename):
    with open(filename, "rb") as f:
        config = tomli.load(f)
        proj = ProjConfig(**config)
        return proj

吾日三省吾身

量化里最重要的事情是什么?投资逻辑。量化只是投资逻辑的数量表达。

最简单的定投,网格背后都有它的逻辑。

无论主动还是背后,投资都是一个概率的逻辑。概率就有有可能发生,有可能不发生。具体结果如何,事后才知道。

那从交易体系而言,就是迎着更大的概率事情而布局,但对可能发生的小概率甚至黑天鹅事件做好底线预案。

即便你有一个超级AI模型,告诉你某支股票会猛涨,这时候,我会怎么办?拿更大的桶去接?当然没错,但这是索罗斯的能力圈,普通人,至少不要加杠杆,你永远问一句,如果方向不及预期的发展呢?比如何时止损,还是死扛——至少你需要想过这个问题。——之前看过一本写得不错的二级市场的小说,结果发现没有续集了——一查发现作者在2015年的牛市见顶之后,加杠杆死杠,然后就没有然后了。

一个成熟的交易体系就是“先胜而后求战”。

大类资产轮动,逻辑比较简单,就是选股,仓位分配。

但到的择时策略,精细化反而更加复杂。

比如说网格,可以是价值与阈值进行判断,来计算signal,根据signal来计算仓位

 

发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103847
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!

(0)
股市刺客的头像股市刺客
上一篇 2024 年 7 月 29 日
下一篇 2024 年 7 月 29 日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注