极值波动策略
设想得很好,在每次波动的极值点进行操作,用买入和卖出价格两个数组记录买入和卖出价格。这样可以保证每个操作都盈利。
以一次价格低点为例,从低到高,查询卖出列表,如果匹配,说明前期的某个卖出操作已经可以盈利,则买入,并删除卖出数组中的记录。从低到高搜索,可以保证把最高的卖出价格留到后面,增加操作的容量。
如果卖出列表没有对应操作,则查询买入列表,如果临近范围已经有买入记录,则不买,防止在某个价位反复买入,如果该区间没有买入记录,则买入,并记录。核心策略如下:
#分布判断,如果可行,修改g.long或g.short,返回True #使用g.orderprice和g.mm判断 def distcheck(): jl=1 #预设的盈利距离 idx=int(g.orderprice/g.step) #求出区间索引 buycnt=len([x for x in g.buy if x>0]) sellcnt=len([x for x in g.sell if x>0]) if g.mm==1: #买入 #if buycnt-sellcnt>0: #return False for i in range((idx+jl),len(g.sell)): #遍历寻找 if g.sell[i]>0: print("买入%.2f(%.2f)"%(g.orderprice,g.sell[i])) g.sell[i]=0 return True if g.buy[idx]==0: g.buy[idx]=g.orderprice print("买入%.2f"%(g.orderprice)) return True if g.mm==-1: #卖出 #if sellcnt-buycnt>0: #return False for i in range((idx-jl),0,-1): #遍历寻找 if g.buy[i]>0: print("卖出%.2f(%.2f)"%(g.orderprice,g.buy[i])) g.buy[i]=0 return True if g.sell[idx]==0: g.sell[idx]=g.orderprice print("卖出%.2f"%(g.orderprice)) return True return False
这是回测的结果:
很不理想,这种操作,可能导致分化,买入列表最后都是一些高价,卖出列表都是低价,这是最后阶段的列表
无论是调整区间,还是调整盈利预期,还是保持两个列表平衡,都不能有效改善。
分析原因:买卖的控制,尽管保证了每次买卖自己盈利了,但对于总体,或者两个列表上“挂着”的交易来说,可能是一种亏损。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
2017-08-19 Flask莫名其妙特别慢