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()
'''
瀑布線
原理:均線類指標
用法:
瀑布線是趨勢性指標,因其在運行的過程中,形態(tài)與瀑布極其相似,故得名為瀑布線。
瀑布線在低位粘合,短線瀑布線向上穿越長線瀑布線并向上發(fā)散,買入。
瀑布線在高位粘合,短線瀑布線向下穿越長線瀑布線并向下發(fā)散,賣出。
當長中短期瀑布線依次由下向上排列形成多頭排列時,可持股。
當長中短期瀑布線依次由上向下排列形成空頭排列時,應空倉。
'''
補充知識:Python使用邏輯運算符and、or、nor判斷整數正負
今天刷Leetcode的時候,對整數進行翻轉,由于Python的除法是向下取整,因此要對輸入整數進行正負的判斷,當時想到的是使用三目運算,但是看參考答案的時候,發(fā)現使用的是邏輯運算符進行正負數的判斷,當時一臉懵逼,經過查找相關資料理解了原理,故此做個記錄。
答案代碼如圖所示:
sign = x<0 and -1 or 1
其中x為輸入整數,如果x為正數返回1,如果為負數返回-1。
由于最開始接觸的C語言,學習Python的時候就沒有太在意邏輯運算符,以為跟C語言一樣返回的是一個布爾值,不知道為何會返回1和-1,查了相關資料發(fā)現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 瀑布線指標編寫實例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
python連接sql?server數據庫的方法實戰(zhàn)
當我們用Python來編寫網站,必須要能夠通過python操作數據庫,下面這篇文章主要給大家介紹了關于python連接sql?server數據庫的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-08-08
Django發(fā)送郵件和itsdangerous模塊的配合使用解析
這篇文章主要介紹了Django發(fā)送郵件和itsdangerous模塊的配合使用解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-08-08

