我试图遵循 YouTube 视频 ( https://www.youtube.com/watch?v=nPD_hZgwS00 ) 上的代码,该视频演示了如何制作股票筛选器。我观看了上面链接的视频以及之前的三个视频。在这些视频之后,我能够在单个股票(股票代码 PZZA)中检测到看涨吞没模式。然而,正如视频中的内容创建者所做的那样,将该函数插入到下面的代码块中时,它未能检测到看涨吞没模式。代码的输出是:
- AMCR = 2020-06-12 看涨吞没
- HBAN = 2020-06-12 看涨吞没
- UAA = 2020-06-12 看涨吞没
但是,如果您查看 tradingview 或其他平台上的图表或内容创建者在本系列前一部分生成的 csv 文件,这些似乎是不正确的输出。这里代码标识的三只股票的开盘价和收盘价是:
AMCR 2020-06-11 打开:9.57,关闭:9.19 AMCR 2020-06-12 打开:10,关闭:9.81
HBAN 2020-06-11 打开:9.82,关闭:9.48 HBAN 2020-06-12 打开:10.03,关闭:9.89
UAA 2020-06-11 打开:9.6,关闭:9.47 UAA 2020-06-12 打开:10.01,关闭:9.7
在这里你可以看到他们每个人的当天开盘价(2020-06-12)都高于前一天的收盘价(2020-06-11),尽管我的代码规定我希望当天的开盘价小于前一天的收盘价。
经过一整天的尝试,我无法确定我哪里出错了。任何帮助,将不胜感激。我计划使用此代码来查看它是否对我的模拟交易账户有效,作为使用代码而不是在网站上手动查找股票进行交易的有趣练习。
亲切的问候,
wdg
import csv
def is_bullish_candlestick(candle):
return candle['Close'] > candle['Open']
def is_bearish_candlestick(candle):
return candle['Close'] < candle['Open']
def is_bullish_engulfing(candles, index):
current_day = candles[index]
previous_day = candles[index-1]
if is_bearish_candlestick(previous_day)\
and current_day['Close'] > previous_day['Open']\
and current_day['Open'] < previous_day['Close']:
return True
return False
def is_bearish_engulfing(candles, index):
current_day = candles[index]
previous_day = candles[index-1]
if is_bullish_candlestick(previous_day)\
and current_day['Open'] > previous_day['Close']\
and current_day['Close'] < previous_day['Open']:
return True
return False
sp500_file = open('C:/Users/William/Desktop/Detecting Candlestick Patterns in Python/sp500_companies.csv')
sp500_companies = csv.reader(sp500_file)
for company in sp500_companies:
ticker, company_name = company
history_file = open('C:/Users/William/Desktop/Detecting Candlestick Patterns in Python/SP500_history/{}.csv'.format(ticker))
reader = csv.DictReader(history_file)
candles = list(reader)
#now to get most recent date
candles = candles[-2:]
if len(candles) > 1:
if is_bullish_engulfing(candles, 1):
print("{} = {} is bullish engulfing".format(ticker, candles[1]['Date']))