Files
jens 8e8b9c2d95 - buy_BTFD: added params
- stock::fetch: support slice by date if loaded from file

git-svn-id: http://moon:8086/svn/projects/Stock@334 fda53097-d464-4ada-af97-ba876c37ca34
2019-12-27 14:13:48 +00:00

44 lines
1.2 KiB
Python

import numpy as np
def buy_BTFD(name, data, range_days, params, marker_key='close_n', thresh_max=-5, thresh_min=1, buy_callback=None):
N = len(data['index'])
key = 'BTFD'
buy_list = {'index' : np.array([None]*N), key : np.array([None]*N)}
cand = None
do_buy = False
for n in range(N-range_days, N):
vmax = data['Qmax'][n]
vmin = data['Qmin'][n]
trend = data['macd_fd'][n]
trend2 = data['macd_fdd'][n]
index = data['index'][n]
value = data[marker_key][n]
if vmin <= params['thresh_min']:
if vmax <= params['thresh_max']:
cand = n
if trend2 >= 0:
do_buy = True
print ("{}: Buy on {} at {:0.2f}".format(name, index, value))
cand = None
if cand is not None:
if n - cand <= params['cand_window']:
if trend2 >= 0:
do_buy = True
former = data[marker_key][cand]
print("{}: Delayed buy on {} at {:0.2f} ({:0.2f})".format(name, index, value, former-value))
cand = None
else:
cand = None
if do_buy:
do_buy = False
buy_list['index'][n] = index
buy_list[key][n] = value
if buy_callback is not None:
buy_callback({'name': name, 'item': {'value': value, 'date': index}})
return buy_list