自己做量化交易软件(28)小白量化实战2–变红买入变绿卖出
在股市的投资者分为三类:先知先觉者, 后知后觉者,不知不觉者。
先知先觉者一般是市场主力,后知后觉者一般是高明的技术分析者,不知不觉者是为前两者提供赢利的亏损者。
很多人称自己的分析技术或工具能够预知市场涨跌,这不跟摇钱树一样了,世界上有卖摇钱树的吗?摇钱树需要去卖换钱吗?
荷蒲始终说自己只是后知后觉者,荷蒲指标不能决定明天市场主力怎么操作股票,但是能够分析主力现在想做什么事情。
荷蒲的貔貅指标简化了证券操作,“变红持股,变绿持币”傻瓜都能学会。再复杂的指标,也不会比貔貅指标的成功率和准确率提高多少。因为指标来自行情数据,只能分析现在时刻及过去,主力想做什么,不能指挥主力明天怎么操作,因此指标不可能100%准确,也不会成为摇钱树。指标就是分析工具,是比较不同股票好坏的尺子。
技术指标分析的依据是历史回重复,因此分析过去,预测未来,仅供参考。
例如貔貅主力进出指标能够分析现在时刻以及历史,市场主力(大多数投资者的合集),主要买进或者卖出这只股票的统计。
长期被市场投资者抛弃的股票,即便1,2天的大量买入,也不能改变短期下跌的命运。
上图是2003的股票分析图.下面看看2020年的分析.
上图的均线系统是多么完美,然而这完美的陷阱,逃脱不过貔貅主力进出指标的分析,主力一直以抛出筹码为主.
从图形上看,似乎调整后的平台向上突破,OBV等多数指标向好,中线指标上呈现空中加油走势准备向上飚升,实际上主力精心设计的一个陷阱。但是它却逃不出貔貅主力进出指标的分析。指标明显提示有主力出逃的迹象。此后接连10个跌停板。
貔貅主力进出指标是貔貅指标集(https://mp.weixin.qq.com/s/c9J-d30haP5nonU3bjiwSg)的一个指标。买《看盘秘籍》书,问作者要用c++开发貔貅指标集,这套指标支持分析家,大智慧,飞狐交易师等软件。
随着荷蒲新指标的创造,荷蒲的旧指标也会逐步解密给大家。本篇文章介绍貔貅操盘王指标的核心指标“貔貅操盘线”的实现源代码。这个代码原先用C++做的,现在已经还原为大智慧的代码,我们在移植到通达信软件,以及最后用Python来实现这个代码。
“貔貅操盘线”属中线趋势指标,趋势不明显或窄幅震荡行情,会造成频繁买卖亏掉手续费。这个指标操作很简单,“变红买入,变绿卖出”或者“红线持股,绿线持币”。
从大智慧软件图形上看,“貔貅操盘线”红线远远小于绿线时间段,因此只有股票上涨变红,不涨或下跌就变绿了。因此中线操作能使资金合理运用,股票下跌变绿空仓,还能得点利息。
“貔貅操盘线”指标的大智慧源代码如下:
S0:=(CLOSE+OPEN+LOW+HIGH)/4;
S1:=EMA(SLOPE(S0,5),60);
S2:=EMA(S1,10);
红线持股:s1,COLORRED;
绿线持币:s1,COLORGREEN;
PARTLINE(s1,s1>=s2 and s1>0 ,RGB(255,0,0),s1<s2,RGB(0,255,0),1,RGB(0,255,0)),linethick2;
0,COLORYELLOW;
“貔貅操盘线”指标的通达信源代码如下:
S0:=(CLOSE+OPEN+LOW+HIGH)/4;
S1:=EMA(SLOPE(S0,5),60);
S2:=EMA(S1,10);
S3:=IF(S1>=0,S1,DRAWNULL);
S4:=IF(S1>S2 ,S3,DRAWNULL);
趋势:=S2,COLORYELLOW;
绿线持币:S1,COLORGREEN,LINETHICK3;
红线持股:S4,COLORRED,LINETHICK3;
0,COLORYELLOW;
上图为通达信软件指标公式编辑器。在通达信软件中“貔貅操盘线”指标显示图形如下。
最后我们给出Python中显示源代码。前提同样是你要拥有小白量化第二代模块。
# -*- coding: utf-8 -*-
# 小白量化显示自编指标
'''
独狼荷蒲qq:2886002
通通小白python量化群:524949939
tkinter,pyqt,gui,Python交流2群:517029284
微信公众号:独狼股票分析
'''
import
import tkinter as tk #导入Tkinter
import tkinter.ttk as ttk #导入Tkinter.ttk
import tkinter.tix as tix #导入Tkinter.tix
import HP_tk as htk #导入htk
from PIL import Image, ImageTk, ImageDraw, ImageFont
from matplotlib import ticker as mticker
import matplotlib.ticker as ticker# 先设定一个日期转换方法
import time
import HP_tdx as htdx
import HP_view as hpv
import matplotlib.pyplot as plt
from HP_formula import * #使用HP_formula公式基本函数库
#建立主窗口
root=htk.MainWindow(title='自定义公式演示',x=100,y=200,w=800, h=600)
#root.iconbitmap('ico/py.ico') #设置应用程序图标
root.SetCenter() #移动到屏幕中央
#把window划分为左右2个子容器,左为v1,右为v2
v1=tk.Frame(root,width = 200,bg='blue')
v1.pack(side=tk.LEFT,fill=tk.Y)
v2=tk.Frame(root,bg='yellow')
v2.pack(side=tk.RIGHT, fill=tk.BOTH, expand=1)
#《零基础搭建量化投资系统—以Python为基础》树中示例 8-23
tree=ttk.Treeview(v1)
myid=tree.insert("",0,"指标",text="指标",values=("1"),open=True)
myidx1=tree.insert(myid,0,"技术指标",text="技术指标",values=("2"))
myidx2=tree.insert(myid,1,"交易系统",text="交易系统",values=("3"))
myidx3=tree.insert(myid,2,"条件选股",text="条件选股",values=("4"))
myidx4=tree.insert(myid,3,"五彩 K 线",text="五彩 K 线",values=("5"))
myidy=tree.insert("",1,"工具",text="工具",values=("6"),open=True)
myidy1=tree.insert(myidy,0,"系统设置",text="系统设置",values=("7"))
myidy1=tree.insert(myidy,0,"指标排序",text="指标排序",values=("8"))
tree.pack(side=tk.TOP,fill=tk.BOTH, expand=1)
tree.selection_set("指标")
ds='2020-01-16' #行情开始日期
de=time.strftime('%Y-%m-%d',time.localtime(time.time())) #行情结束日期
###---------------------------------------------------------------------------
#首先要对数据预处理
#获取数据
htdx.TdxInit(ip='183.60.224.178',port=7709)
code='603222'
df2a = htdx. get_security_bars(nCategory=4,nMarket = 0,code=code)
#六均线3指标图,K线算一个指标
ax,ax2=hpv.axview3x2(v2,df2a,code+' 六均线K线演示',6)
#在ax区绘制荷蒲操盘线HPCPX
def ax_HPCPX(ax1,mydf):
mydf['date']=[x[0:10] for x in mydf.date.astype(str)]
date_tickers=mydf.date.values
CLOSE=mydf['close']
LOW=mydf['low']
HIGH=mydf['high']
OPEN=mydf['open']
VOL=mydf['volume']
df=mydf.copy()
def HPCPX():
S0=(CLOSE+OPEN+LOW+HIGH)/4
S1=EMA(SLOPE(S0,5),60)
S2=EMA(S1,20)
S3=IF(S1>=0,S1,DRAWNULL())
S4=IF(S1>S2 ,S3,DRAWNULL())
return S1,S2,S4
#使用HPCPX指标,返回x,y,x序列。
x,y,z=HPCPX()
df = df.join(pd.Series( x,name='CPX'))
df = df.join(pd.Series( y,name='Y'))
df = df.join(pd.Series( z,name='Z'))
df['Y0']=0
#开始绘图
def format_date(x,pos=None):
if x<0 or x>len(date_tickers)-1:
return ''
return date_tickers[int(x)]
ax1.plot(df.date.values,df.CPX.values, color= 'green', lw=2)
ax1.plot(df.date.values, df.Z.values, color= 'red', lw=2)
ax1.plot(df.date.values, df.Y0.values, color= 'yellow', lw=2)
text = ax1.text(0.05, 0.05, '红线持股!绿线持币!', fontdict={
'size': 20},color='yellow')
plt.ylabel('HPCPX', color='white')
plt.legend() # 显示图中右上角的提示信息。
ax1.xaxis.set_major_locator(mticker.MaxNLocator(8)) #x轴分成几等分
ax1.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
ax1.yaxis.set_major_locator(mticker.MaxNLocator(nbins=3, prune='upper'))
ax1.grid(True, color='r')
ax1.tick_params(axis='x', colors='white')
ax1.tick_params(axis='y', colors='white')
plt.subplots_adjust(left=.075, bottom=.08, right=.96, top=.96, wspace=.15, hspace=0.1)
return ax1
#调用自定义公式
ax3=ax_HPCPX(ax2,df2a)
plt.close() # 关窗口
root.mainloop() #进入Tkinter消息循环
程序运行结果如下:
这篇文章介绍了技术指标的设计技术,包括指标线的变色和加宽,以及在窗口中显示的程序。
通过阅读我的博客,你同时学会了通达信指标编写和Python仿通达信指标编写量化程序,是不是很容易做一个Python版的通达信软件呢?
你说不像通达信软件,因为没有标记箭头和买卖点文字提示。不过别急,这是我下一篇文章要教大家如何在通达信软件上的指标公式实现标记箭头和买卖文字的实现,以及在Python上实现同样的功能。
如果你想预先知道实现的技术,请买作者的书<零基础搭建量化投资系统――以Python为工具>购买网址
https://item.jd.com/61567375505.html。
请持续关注我的博客,我的进步,就是你的进步!