BAO STOCK提取数据

1.阳线
1.1 若证券股价涨势初期出现大阳线,代表股价很可能继续上涨;
1.2 若证券股价连续上涨后出现大阳线,代表有可能因多方力量过分消耗导致股价见顶回落;
1.3 若证券股价连续下跌后出现大阳线,代表股价可能见底回升。
2.阴线
2.1 若大阴线出现在证券股价大涨之后,则后市很有可能下跌;
2.2 若大阴线出现在证券股价上升初中期,则考虑主力庄家在利用利空消息进行震仓洗盘,
只有股价不跌破重要支撑位,仍可持股;
2.3 若大阴线出现在下跌途中,则按时股价还有下跌空间;
2.4 若大阴线出现在较大跌幅之后,则暗示空头能力释放的差不多,股价可能止跌回升。

def get_kline(code, startdate= '2010-06-01', enddate='2018-12-31'):
lg = bs.login()
code="sh.000001"
rs = bs.query_history_k_data(code,    "date,code,open,high,low,close,preclose,volume,amount,adjustflag,turn,tradestatus,pctChg,peTTM,pbMRQ,psTTM,pcfNcfTTM,isST",    start_date=startdate, end_date=enddate, 
    frequency="d", adjustflag="2") #frequency="d"取日k线,adjustflag="3"默认不复权    
data_list = []
while (rs.error_code == '0') & rs.next():
        data_list.append(rs.get_row_data())# 获取一条记录,将记录合并在一起
result = pd.DataFrame(data_list, columns=rs.fields)
return result 

给定一个没有重复数字的数组,找出里面的波峰或者波谷,没有返回-1。如果有,那么波峰波谷的两侧是单调的。

思路是二分查找。返回的条件是找到的中间值比两边都大或者比两边都小。那么如果不满足就需要查找左边或者右边。在判断左右之前,我们需要先判断数组的类型,是包含波峰还是波谷,方法是检测前两个值,如果a[0]>a[1],那么是找波谷,否则找波峰。

下面只看波峰的情况,如果a[m-1] < a[m] < a[m+1],那么位于递增区间,此时应该往右,否则往左。波谷的情况类似。

这是存在波峰或者波谷的情况,假设原来的数组的是单调递增的或者单调递减的,那么就应该返回-1,如果用上面的逻辑就会越界,因为肯定每一次都是往某一个方向,最后就到了最边的那一个元素,此时用a[m-1]或者a[m+1]的时候会越界。那么一旦说m到了最边界,可以说肯定不存在了,只需要返回-1就行,如果存在肯定不会是最两边的元素,在到了最边的元素之前就已经return了,所以检测到到了最边的时候,就返回-1。

作者:绝世好阿狸
来源:CSDN
原文:https://blog.csdn.net/u010900754/article/details/78138490
版权声明:本文为博主原创文章,转载请附上博文链接!

public class Main {
public static void main(String[] args) {
	System.out.println(findPeak(new int[]{-200,-100,1,4,0}));
}

public static boolean isUp(int[] array, int m){
	return array[m - 1] < array[m] && array[m] < array[m + 1];
}

public static int findPeak(int[] array){
	if(array == null || array.length <= 2)
		return -1;
	int mark = 0;
	if(array[0] > array[1])
		mark = -1;
	else
		mark = 1;
	int start = 0, end = array.length - 1;
	while(start <= end){
		int m = (start + end) / 2;
		if(m == 0 || m == array.length - 1)
			return -1;
		if((array[m - 1] > array[m] && array[m + 1] > array[m]) || (array[m - 1] < array[m] && array[m + 1] < array[m])){
			return m;
		}
		//往左边
		if((isUp(array, m) && mark < 0) || (!isUp(array, m) && mark > 0)){
			end = m - 1;
		}else{//右边
			start = m + 1;
		}
	}
	return -1;
}

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值