python编写选股公式_python 瀑布线指标编写实例

我就废话不多说了,大家还是直接看代码吧!

# -*- coding: utf-8 -*-

"""

Created on Tue May 23 08:57:02 2017

@author: yunjinqi

E-mail:yunjinqi@qq.com

Differentiate yourself in the world from anyone else.

"""

import pandas as pd

import numpy as np

import datetime

import time

#获取数据

df=pd.read_csv('C:/Users/HXWD/Desktop/000001.csv',encoding='gbk')

df.columns=['date','code','name','close','high','low','open','preclose',

'change','change_per','volume','amt']

df=df[['date','open','high','low','close','volume','amt']]

df.head()

def get_EMA(df,N):

for i in range(len(df)):

if i==0:

df.ix[i,'ema']=df.ix[i,'close']

if i>0:

df.ix[i,'ema']=(2*df.ix[i-1,'close']+(N-1)*df.ix[i,'close'])/(N+1)

return df['ema']

def get_PBX(df):

df['a1']=(get_EMA(df,4)+df['close'].rolling(8).mean()+

df['close'].rolling(16).mean())/3

df['a2']=(get_EMA(df,6)+df['close'].rolling(12).mean()+

df['close'].rolling(24).mean())/3

df['a3']=(get_EMA(df,9)+df['close'].rolling(18).mean()+

df['close'].rolling(36).mean())/3

df['a4']=(get_EMA(df,13)+df['close'].rolling(26).mean()+

df['close'].rolling(52).mean())/3

df['a5']=(get_EMA(df,18)+df['close'].rolling(36).mean()+

df['close'].rolling(72).mean())/3

df['a6']=(get_EMA(df,24)+df['close'].rolling(48).mean()+

df['close'].rolling(96).mean())/3

return df

get_PBX(df)

df.tail()

'''

瀑布线

原理:均线类指标

用法:

瀑布线是趋势性指标,因其在运行的过程中,形态与瀑布极其相似,故得名为瀑布线。

瀑布线在低位粘合,短线瀑布线向上穿越长线瀑布线并向上发散,买入。

瀑布线在高位粘合,短线瀑布线向下穿越长线瀑布线并向下发散,卖出。

当长中短期瀑布线依次由下向上排列形成多头排列时,可持股。

当长中短期瀑布线依次由上向下排列形成空头排列时,应空仓。

'''

补充知识:Python使用逻辑运算符and、or、nor判断整数正负

今天刷Leetcode的时候,对整数进行翻转,由于Python的除法是向下取整,因此要对输入整数进行正负的判断,当时想到的是使用三目运算,但是看参考答案的时候,发现使用的是逻辑运算符进行正负数的判断,当时一脸懵逼,经过查找相关资料理解了原理,故此做个记录。

答案代码如图所示:

sign = x<0 and -1 or 1

其中x为输入整数,如果x为正数返回1,如果为负数返回-1。

由于最开始接触的C语言,学习Python的时候就没有太在意逻辑运算符,以为跟C语言一样返回的是一个布尔值,不知道为何会返回1和-1,查了相关资料发现Python中逻辑运算原理如下:

x and y

布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。

x or y

布尔"或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。

not x

布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

当输入为一个负数时,运算过程如下所示:

>>> -123<0

True

>>> True and -1

-1

>>> -1 or 1

-1

首先判断-123<0,返回True,此时True与-1进行与运算,x为真,返回y的值为-1;然后-1与1进行或运算,由于非零整数都是为False,此时返回x的值-1。

当输入为一个正数时,运算过程如下所示:

>>> 123<0

False

>>> False and -1

False

>>> False or 1

1

首先判断123<0,返回False,此时False与-1进行与运算,x为假,返回False,然后False与1进行或运算,由于x为假,此时返回y的值1。

总而言之,使用Python中的逻辑运算符返回的并不是非False即True,而与输入x,y相关。

另外判断输入整数的正负还可以使用三目运算,如下所示:

sign = 1 if x>0 else -1

另附对整数实现翻转完整代码:

class Solution(object):

def reverse(self, x):

"""

:type x: int

:rtype: int

"""

a = 0

sign = x<0 and -1 or 1

x = abs(x)

while(x != 0):

a = a*10 + x%10

x //=10

return a*sign if a<2**31 else 0

以上这篇python 瀑布线指标编写实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值