本周星球大致的计划如下:
1、quantlab策略上平台可配。
2、前端传参数可回测策略。
3、策略结果呈现。
4、Django-allauth邮件登录,原有用户导入。
5、deep alpha stock data代码解读。
django后台通过model直接生成管理代码,还是非常强大的:
具体实现代码如下:
class StrategyInfo(models.Model): def __str__(self): return self.name class Meta: verbose_name = '策略' verbose_name_plural = verbose_name name = models.CharField(max_length=50, verbose_name='策略名称') desc = models.TextField(verbose_name='策略描述', null=True, blank=True) PERIOD_CHOICES = ( ('RunDaily', '每天'), ('RunWeekly', '每周'), ('RunMonthly', '每月'), ('RunQuarterly', '每季'), ('RunYearly', '每年'), ) run_period = models.CharField(max_length=20, choices=PERIOD_CHOICES, verbose_name='调仓周期') WEIGHT_CHOICES = ( ('WeightEqually', '等权分配'), ('WeightFixed', '固定权重'), ('WeightERC', '分险平价'), ) weight_algo = models.CharField(max_length=20, choices=WEIGHT_CHOICES, verbose_name='仓位权重') benchmark = models.ForeignKey(FundInfo, on_delete=models.CASCADE, related_name='benchmark', verbose_name='基准', null=True) funds = models.ManyToManyField(FundInfo, verbose_name='候选池列表', null=True)
一个基本的策略就配置起来了,当然复杂的策略,比如涉及的“买入”,“卖出”信号的,需要扩展字段,比如在json里实现,然后在后台可以直接编辑。
通过api上传配置信息,使用django-ninjia,与fastap类似:
这里使用django,mysql存储基础信息,然后mongo存储json配置文件:
@api.post('/strategy/add') def insert_or_update(request, payload: StrategyIn): print(payload) s = StrategyInfo.objects.filter(pk=payload.id).first() if not s: s = StrategyInfo(name=payload.name, desc=payload.desc) s.save() else: s.name = payload.name s.save() doc = payload.dict() doc['_id'] = s.pk mongo_utils.get_db()['strategies'].update_one({'_id': s.pk}, {'$set': doc}, upsert=True) return {"message": "OK"}
api接口基本写好,而且可以通过api直接调取数据进行回测。
明天构建前端页面,对策略进行配置,并保存到后台,同时可以查看回测结果。
发布者:股市刺客,转载请注明出处:https://www.95sca.cn/archives/103511
站内所有文章皆来自网络转载或读者投稿,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。敬请谅解!