第四章,孕线
孕线中实体的颜色不重要
绘图公式 在下降趋势中,为看涨孕线
在上升趋势中,为看跌孕线
CONDITON1:= REF(H,1) > H AND L > REF(L,1); {昨日最高价 > 今日最高价 且今最低价 > 昨日最低价}
CONDITON1:= H / L > 1.015; {今日振幅>1.5%,确保了股票活性也保证了实体长度}
OUT:DRAWICON(CONDITON1 AND CONDITION2,L,1);
选股公式
CONDITON1:= REF(H,1) > H AND L > REF(L,1); {昨日最高价 > 今日最高价 且今最低价 > 昨日最低价}
CONDITON1:= H / L > 1.015; {今日振幅>1.5%,确保了股票活性也保证了实体长度}
OUT:CONDITON1 AND CONDITION2;
第二根线为十字形态而不是纺锤形态的话,它就是一根十字孕线
CONDITON1:= REF(H,1) > H AND L > REF(L,1); {昨日最高价 > 今日最高价 且今最低价 > 昨日最低价}
CONDITON1:= H / L > 1.015 AND O=C; {今日振幅>1.5%,确保了股票活性也保证了实体长度,开盘价=收盘价形成十字星}
OUT:DRAWICON(CONDITON1 AND CONDITION2,L,1);
python实现
import pandas as pd
import numpy as np
import datetime
# 给代码运行加个速
from numba import jit
@jit(nopython=True)
def pregnant(data):
""""
孕线
:param data: 用于传入股票代码格式为 SH#602688.txt or SZ#300237.txt
:return: 返回符合条件的股票代码,如果不符合返回None
"""
sd = pd.read_table("/Volumes/data/Stock_data/d_K/{}".format(data),
encoding='gbk', header=1, parse_dates=True)[:-1]
sd.rename(columns=lambda x: x.strip(), inplace=True) #读取数据
sd = np.array(sd) #这里只用于编写策略,不做统计分析,我选numpy
now = datetime.date.today().strftime("%Y/%m/%d")
if now is sd[-1][0]: #进行日期对比,只选择今天有交易的股票
#std[][1]开盘价 std[][2]最高价 std[][3]最低价 std[][4]收盘价
if sd[-2][2] > sd[-1][2] and sd[-1][3] > sd[-2][3] :#CONDITION1代码实现
if sd[-1][2] / sd[-1][3] > 1.015: #CONDITION2代码实现
return data
else:
return None
else:
return None
else:
return None
第五章,星线
(一),启明星
绘图函数
CONDITION1:=REF(O,2)>REF(C,2) AND REF(C,2)/REF(O,2)<0.98;{第一根蜡烛线为长阴线且收盘价<2%}
CONDITION2:=IF(REF(C,1)>REF(O,1),1-REF(C,1)/REF(O,1),REF(O,1)/REF(C,1)-1)<0.01;{第二根蜡烛线收盘涨跌幅<1%}
CONDITION3:=REF(C,2)>REF(O,1) AND REF(H,1)>REF(C,2);{第二根蜡烛线跳空开盘,且阴线插入其实体部分}
CONDITION4:=MAX(REF(C,1),REF(O,1)) < O ADN C/O > 1.02;{今日跳高开盘,且收盘>2%}
OUT:DRAWICON(CONDITON1 AND CONDITION2 AND CONDITION3 AND CONDITION4,L,1);
选股函数
CONDITION1:=REF(O,2)>REF(C,2) AND REF(C,2)/REF(O,2)<0.98;{第一根蜡烛线为长阴线且收盘价<2%}
CONDITION2:=IF(REF(C,1)>REF(O,1),1-REF(C,1)/REF(O,1),REF(O,1)/REF(C,1)-1)<0.01;{第二根蜡烛线收盘涨跌幅<1%}
CONDITION3:=REF(C,2)>REF(O,1) AND REF(H,1)>REF(C,2);{第二根蜡烛线跳空开盘,且阴线插入其实体部分}
CONDITION4:=MAX(REF(C,1),REF(O,1)) < O ADN C/O > 1.02;{今日跳高开盘,且收盘>2%}
OUT:CONDITON1 AND CONDITION2 AND CONDITION3 AND CONDITION4;
@jit(nopython=True)
def u_start(data):
""""
启明星
:param data: 用于传入股票代码格式为 SH#602688.txt or SZ#300237.txt
:return: 返回符合条件的股票代码,如果不符合返回None
"""
sd = pd.read_table("/Volumes/data/Stock_data/d_K/{}".format(data),
encoding='gbk', header=1, parse_dates=True)[:-1]
sd.rename(columns=lambda x: x.strip(), inplace=True) #读取数据
sd = np.array(sd) #这里只用于编写策略,不做统计分析,我选numpy
now = datetime.date.today().strftime("%Y/%m/%d")
if now is sd[-1][0]: #进行日期对比,只选择今天有交易的股票
#std[][1]开盘价 std[][2]最高价 std[][3]最低价 std[][4]收盘价
if sd[-3][1] > sd[-2][4] and sd[-3][4]/sd[-3][1] < 0.98 :#CONDITION1代码实现
if sd[-2][4] > sd[-2][1]: #CONDITION2代码实现
if sd[-2][4]/sd[-2][1] > 1.01:
pass
else:
return None
else:
if sd[-2][1]/sd[-2][4] >0.99:
pass
else:
return None
if sd[-3][4] > sd[-2][1] and sd[-2][2]>sd[-3][1]:#CONDITION3
if max(sd[-2][1],sd[-2][4]) < sd[-1][1] and sd[-1][4]/sd[-1][1] > 1.02:#CONDITION4
return data
else:
return None
else:
return None
else:
return None
else:
return None
(一), 黄昏星
绘图函数
CONDITION1:=REF(C,2)>REF(O,2) AND REF(C,2)/REF(O,2)>1.02;{第一根蜡烛线为长阳线且收盘价>2%}
CONDITION2:=IF(REF(C,1)>REF(O,1),1-REF(C,1)/REF(O,1),REF(O,1)/REF(C,1)-1)<0.01;{第二根蜡烛线收盘涨跌幅<1%}
CONDITION3:=REF(O,1)>REF(C,2) AND REF(C,2)>REF(L,1);{第二根蜡烛线跳高开盘,且阴线插入其实体部分}
CONDITION4:=MIN(REF(C,1),REF(O,1)) > O ADN C/O < 0.98;{今日跳空开盘,且收盘<2%}
OUT:DRAWICON(CONDITON1 AND CONDITION2 AND CONDITION3 AND CONDITION4,L,1);
选股函数
CONDITION1:=REF(C,2)>REF(O,2) AND REF(C,2)/REF(O,2)>1.02;{第一根蜡烛线为长阳线且收盘价>2%}
CONDITION2:=IF(REF(C,1)>REF(O,1),1-REF(C,1)/REF(O,1),REF(O,1)/REF(C,1)-1)<0.01;{第二根蜡烛线收盘涨跌幅<1%}
CONDITION3:=REF(O,1)>REF(C,2) AND REF(C,2)>REF(L,1);{第二根蜡烛线调高开盘,且阴线插入其实体部分}
CONDITION4:=MIN(REF(C,1),REF(O,1)) > O ADN C/O < 0.98;{今日跳空开盘,且收盘<2%}
OUT:CONDITON1 AND CONDITION2 AND CONDITION3 AND CONDITION4;
@jit(nopython=True)
def d_start(data):
""""
黄昏星
:param data: 用于传入股票代码格式为 SH#602688.txt or SZ#300237.txt
:return: 返回符合条件的股票代码,如果不符合返回None
"""
sd = pd.read_table("/Volumes/data/Stock_data/d_K/{}".format(data),
encoding='gbk', header=1, parse_dates=True)[:-1]
sd.rename(columns=lambda x: x.strip(), inplace=True) #读取数据
sd = np.array(sd) #这里只用于编写策略,不做统计分析,我选numpy
now = datetime.date.today().strftime("%Y/%m/%d")
if now is sd[-1][0]: #进行日期对比,只选择今天有交易的股票
#std[][1]开盘价 std[][2]最高价 std[][3]最低价 std[][4]收盘价
if sd[-3][4] > sd[-2][1] and sd[-3][4]/sd[-3][1] > 1.02 :#CONDITION1代码实现
if sd[-2][4] > sd[-2][1]: #CONDITION2代码实现
if sd[-2][4]/sd[-2][1] > 1.01:
pass
else:
return None
else:
if sd[-2][1]/sd[-2][4] >0.99:
pass
else:
return None
if sd[-2][1] > sd[-3][4] > sd[-2][3]:
if min(sd[-2][1],sd[-2][4]) > sd[-1][1] and sd[-1][4]/sd[-1][1] > 1.02:
return data
else:
return None
else:
return None
else:
return None
else:
return None