溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

用代碼實(shí)例解析python瀑布線(xiàn)指標(biāo)

發(fā)布時(shí)間:2020-07-18 17:21:52 來(lái)源:億速云 閱讀:189 作者:小豬 欄目:開(kāi)發(fā)技術(shù)

小編這次要給大家分享的是用代碼實(shí)例解析python瀑布線(xiàn)指標(biāo),文章內(nèi)容豐富,感興趣的小伙伴可以來(lái)了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

我就廢話(huà)不多說(shuō)了,大家還是直接看代碼吧!

# -*- 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
#獲取數(shù)據(jù)
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() 
 
'''
瀑布線(xiàn)
原理:均線(xiàn)類(lèi)指標(biāo)
用法:
  瀑布線(xiàn)是趨勢(shì)性指標(biāo),因其在運(yùn)行的過(guò)程中,形態(tài)與瀑布極其相似,故得名為瀑布線(xiàn)。
 瀑布線(xiàn)在低位粘合,短線(xiàn)瀑布線(xiàn)向上穿越長(zhǎng)線(xiàn)瀑布線(xiàn)并向上發(fā)散,買(mǎi)入。
 瀑布線(xiàn)在高位粘合,短線(xiàn)瀑布線(xiàn)向下穿越長(zhǎng)線(xiàn)瀑布線(xiàn)并向下發(fā)散,賣(mài)出。
 當(dāng)長(zhǎng)中短期瀑布線(xiàn)依次由下向上排列形成多頭排列時(shí),可持股。
 當(dāng)長(zhǎng)中短期瀑布線(xiàn)依次由上向下排列形成空頭排列時(shí),應(yīng)空倉(cāng)。 
'''

補(bǔ)充知識(shí):Python使用邏輯運(yùn)算符and、or、nor判斷整數(shù)正負(fù)

今天刷Leetcode的時(shí)候,對(duì)整數(shù)進(jìn)行翻轉(zhuǎn),由于Python的除法是向下取整,因此要對(duì)輸入整數(shù)進(jìn)行正負(fù)的判斷,當(dāng)時(shí)想到的是使用三目運(yùn)算,但是看參考答案的時(shí)候,發(fā)現(xiàn)使用的是邏輯運(yùn)算符進(jìn)行正負(fù)數(shù)的判斷,當(dāng)時(shí)一臉懵逼,經(jīng)過(guò)查找相關(guān)資料理解了原理,故此做個(gè)記錄。

答案代碼如圖所示:

sign = x<0 and -1 or 1

其中x為輸入整數(shù),如果x為正數(shù)返回1,如果為負(fù)數(shù)返回-1。

由于最開(kāi)始接觸的C語(yǔ)言,學(xué)習(xí)Python的時(shí)候就沒(méi)有太在意邏輯運(yùn)算符,以為跟C語(yǔ)言一樣返回的是一個(gè)布爾值,不知道為何會(huì)返回1和-1,查了相關(guān)資料發(fā)現(xiàn)Python中邏輯運(yùn)算原理如下:

x and y布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的計(jì)算值。
x or y布爾"或" - 如果 x 是 True,它返回 x 的值,否則它返回 y 的計(jì)算值。
not x布爾"非" - 如果 x 為 True,返回 False 。如果 x 為 False,它返回 True。

當(dāng)輸入為一個(gè)負(fù)數(shù)時(shí),運(yùn)算過(guò)程如下所示:

 >>> -123<0
 True
 >>> True and -1
 -1
 >>> -1 or 1
 -1

首先判斷-123<0,返回True,此時(shí)True與-1進(jìn)行與運(yùn)算,x為真,返回y的值為-1;然后-1與1進(jìn)行或運(yùn)算,由于非零整數(shù)都是為False,此時(shí)返回x的值-1。

當(dāng)輸入為一個(gè)正數(shù)時(shí),運(yùn)算過(guò)程如下所示:

>>> 123<0
False
>>> False and -1
False
>>> False or 1
1

首先判斷123<0,返回False,此時(shí)False與-1進(jìn)行與運(yùn)算,x為假,返回False,然后False與1進(jìn)行或運(yùn)算,由于x為假,此時(shí)返回y的值1。

總而言之,使用Python中的邏輯運(yùn)算符返回的并不是非False即True,而與輸入x,y相關(guān)。

另外判斷輸入整數(shù)的正負(fù)還可以使用三目運(yùn)算,如下所示:

sign = 1 if x>0 else -1

另附對(duì)整數(shù)實(shí)現(xiàn)翻轉(zhuǎn)完整代碼:

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 

看完這篇關(guān)于用代碼實(shí)例解析python瀑布線(xiàn)指標(biāo)的文章,如果覺(jué)得文章內(nèi)容寫(xiě)得不錯(cuò)的話(huà),可以把它分享出去給更多人看到。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI