init
This commit is contained in:
@@ -10,26 +10,50 @@ class BuySell_Daily:
|
|||||||
count += 1
|
count += 1
|
||||||
return count
|
return count
|
||||||
|
|
||||||
def getBuyPrice(self, data, i, BS=None):
|
def getBuyPrice(self, ticker, data, i, BS=None):
|
||||||
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
||||||
|
|
||||||
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_changeLine(data, i, BS)
|
point = None
|
||||||
|
for c in range(i-1, 0, -1):
|
||||||
|
if data['close'][c] < data['changeLine'][c]:
|
||||||
|
point = c
|
||||||
|
break
|
||||||
|
if point is not None:
|
||||||
|
if 3 < sum([1 if 0 < BS['buy_price'][k] else 0 for k in range(point, i)]):
|
||||||
|
return buy_ymd, 0, 0, '', None
|
||||||
|
|
||||||
|
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_changeLine(ticker, data, i, BS)
|
||||||
if 0 < tmp_buy_count:
|
if 0 < tmp_buy_count:
|
||||||
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
||||||
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_baseLine(data, i, BS)
|
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_baseLine(ticker, data, i, BS)
|
||||||
if 0 < tmp_buy_count:
|
if 0 < tmp_buy_count:
|
||||||
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
||||||
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_laggingSpan(data, i, BS)
|
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_laggingSpan(ticker, data, i, BS)
|
||||||
if 0 < tmp_buy_count:
|
if 0 < tmp_buy_count:
|
||||||
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
||||||
|
tmp_buy_ymd, tmp_buy_price, tmp_buy_count, tmp_buy_type, tmp_buy_cut = self.getBuyPrice_ichimok_avg(ticker, data, i, BS)
|
||||||
|
if 0 < tmp_buy_count:
|
||||||
|
buy_ymd = tmp_buy_ymd; buy_price = tmp_buy_price; buy_count = tmp_buy_count; buy_type = tmp_buy_type; buy_cut = tmp_buy_cut
|
||||||
|
|
||||||
|
if 0 < len(ticker['BUY_INFO']['buy_list']):
|
||||||
|
diff = (datetime.strptime(str(data['ymd'][i]), '%Y-%m-%d %H:%M:%S') - ticker['BUY_INFO']['buy_list'][-1]['buy_ymd'])
|
||||||
|
d = diff.days
|
||||||
|
s = diff.seconds
|
||||||
|
|
||||||
|
# 해당 종목에 대해서 1분 이내 매수 금지
|
||||||
|
if s < 3 * 60:
|
||||||
|
return buy_ymd, 0, 0, '', None
|
||||||
|
|
||||||
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
||||||
|
|
||||||
def getSellPrice(self, data, i, BS=None):
|
def getSellPrice(self, ticker, data, i, BS=None):
|
||||||
sell_price, sell_count, sell_type = 0, 1, ''
|
sell_price, sell_count, sell_type = 0, 1, ''
|
||||||
sell_type_list = []
|
sell_type_list = []
|
||||||
|
|
||||||
tmp_sell_price, tmp_sell_type_list = self.getSellPrice_ichimok_baseLine(data, i, BS)
|
tmp_sell_price, tmp_sell_type_list = self.getSellPrice_ichimok_baseLine(ticker, data, i, BS)
|
||||||
|
sell_type_list += tmp_sell_type_list
|
||||||
|
|
||||||
|
tmp_sell_price, tmp_sell_type_list = self.getSellPrice_candle(ticker, data, i, BS)
|
||||||
sell_type_list += tmp_sell_type_list
|
sell_type_list += tmp_sell_type_list
|
||||||
|
|
||||||
sell_price = tmp_sell_price
|
sell_price = tmp_sell_price
|
||||||
@@ -39,7 +63,7 @@ class BuySell_Daily:
|
|||||||
|
|
||||||
return sell_price, sell_count, sell_type
|
return sell_price, sell_count, sell_type
|
||||||
|
|
||||||
def getBuyPrice_ichimok_changeLine(self, data, i, BS=None):
|
def getBuyPrice_ichimok_changeLine(self, ticker, data, i, BS=None):
|
||||||
|
|
||||||
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
||||||
|
|
||||||
@@ -81,8 +105,8 @@ class BuySell_Daily:
|
|||||||
|
|
||||||
if check:
|
if check:
|
||||||
buy_ymd = data['ymd'][i]
|
buy_ymd = data['ymd'][i]
|
||||||
buy_price = data['close'][i]
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
buy_count = buy_weight
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
|
|
||||||
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
||||||
|
|
||||||
@@ -90,7 +114,7 @@ class BuySell_Daily:
|
|||||||
""""""""""""""""""
|
""""""""""""""""""
|
||||||
""""""""""""""""""
|
""""""""""""""""""
|
||||||
|
|
||||||
def getBuyPrice_ichimok_baseLine(self, data, i, BS=None):
|
def getBuyPrice_ichimok_baseLine(self, ticker, data, i, BS=None):
|
||||||
|
|
||||||
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
||||||
|
|
||||||
@@ -120,15 +144,15 @@ class BuySell_Daily:
|
|||||||
|
|
||||||
if check:
|
if check:
|
||||||
buy_ymd = data['ymd'][i]
|
buy_ymd = data['ymd'][i]
|
||||||
buy_price = data['close'][i]
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
buy_count = buy_weight
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
|
|
||||||
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
||||||
|
|
||||||
""""""""""""""""""
|
""""""""""""""""""
|
||||||
""""""""""""""""""
|
""""""""""""""""""
|
||||||
|
|
||||||
def getBuyPrice_ichimok_laggingSpan(self, data, i, BS):
|
def getBuyPrice_ichimok_laggingSpan(self, ticker, data, i, BS):
|
||||||
|
|
||||||
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
||||||
|
|
||||||
@@ -138,28 +162,29 @@ class BuySell_Daily:
|
|||||||
|
|
||||||
if data['laggingSpan_close_diff_rate'][i-1] <= 0 and 0 < data['laggingSpan_close_diff_rate'][i]:
|
if data['laggingSpan_close_diff_rate'][i-1] <= 0 and 0 < data['laggingSpan_close_diff_rate'][i]:
|
||||||
check = True
|
check = True
|
||||||
buy_price = data['close'][i]
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
buy_count = buy_weight
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
buy_weight = 2
|
buy_weight = 2
|
||||||
buy_type = 'laggingSpan1'
|
buy_type = 'laggingSpan1'
|
||||||
|
|
||||||
if 0 <= data['laggingSpan_avg60_diff_rate'][i-1] and data['laggingSpan_avg60_diff_rate'][i] < 0:
|
if 0 <= data['laggingSpan_avg60_diff_rate'][i-1] and data['laggingSpan_avg60_diff_rate'][i] < 0:
|
||||||
check = True
|
check = True
|
||||||
buy_price = data['close'][i]
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
buy_count = buy_weight
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
buy_weight = 2
|
buy_weight = 2
|
||||||
buy_type = 'laggingSpan2'
|
buy_type = 'laggingSpan2'
|
||||||
|
|
||||||
if check:
|
if check:
|
||||||
buy_price = data['close'][i]
|
buy_ymd = data['ymd'][i]
|
||||||
buy_count = buy_weight
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
|
|
||||||
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
||||||
|
|
||||||
""""""""""""""""""
|
""""""""""""""""""
|
||||||
""""""""""""""""""
|
""""""""""""""""""
|
||||||
|
|
||||||
def getSellPrice_ichimok_baseLine(self, data, i, BS=None):
|
def getSellPrice_ichimok_baseLine(self, ticker, data, i, BS=None):
|
||||||
sell_price = 0
|
sell_price = 0
|
||||||
sell_type_list = []
|
sell_type_list = []
|
||||||
|
|
||||||
@@ -173,6 +198,61 @@ class BuySell_Daily:
|
|||||||
sell_type_list.append('ichimok_baseLine')
|
sell_type_list.append('ichimok_baseLine')
|
||||||
|
|
||||||
if check:
|
if check:
|
||||||
sell_price = data['close'][i]
|
sell_price = data['close'][i] + 2 * ticker['unit']
|
||||||
|
|
||||||
|
return sell_price, sell_type_list
|
||||||
|
|
||||||
|
""""""""""""""""""
|
||||||
|
""""""""""""""""""
|
||||||
|
|
||||||
|
def getBuyPrice_ichimok_avg(self, ticker, data, i, BS):
|
||||||
|
|
||||||
|
buy_ymd, buy_price, buy_count, buy_weight, buy_type, buy_cut = None, 0, 0, 1, '', None
|
||||||
|
|
||||||
|
check = False
|
||||||
|
|
||||||
|
if 5 < i:
|
||||||
|
|
||||||
|
if data['avg5'][i] < data['avg20'][i] < data['baseLine'][i] < data['changeLine'][i] < data['close'][i]:
|
||||||
|
if data['avg5'][i-1]<data['avg5'][i] and data['avg20'][i-1]<data['avg20'][i] and data['baseLine'][i-1]<=data['baseLine'][i] and data['changeLine'][i-1]<data['changeLine'][i]:
|
||||||
|
check = True
|
||||||
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
|
buy_weight = 2
|
||||||
|
buy_type = 'ichimok_avg1'
|
||||||
|
|
||||||
|
if data['avg20'][i] < data['baseLine'][i] < data['changeLine'][i] < data['avg5'][i] < data['close'][i]:
|
||||||
|
if data['avg20'][i-1]<data['avg20'][i] and data['baseLine'][i]<data['baseLine'][i-1] and data['changeLine'][i-1]<data['changeLine'][i] and data['avg5'][i-1]<data['avg5'][i]:
|
||||||
|
check = True
|
||||||
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
|
buy_weight = 2
|
||||||
|
buy_type = 'ichimok_avg2'
|
||||||
|
|
||||||
|
if check:
|
||||||
|
buy_ymd = data['ymd'][i]
|
||||||
|
buy_price = data['close'][i] - 2 * ticker['unit']
|
||||||
|
buy_count = (buy_weight * ticker['MAX_BUY']) / data['close'][i]
|
||||||
|
|
||||||
|
return buy_ymd, buy_price, buy_count, buy_type, buy_cut
|
||||||
|
|
||||||
|
|
||||||
|
""""""""""""""""""
|
||||||
|
""""""""""""""""""
|
||||||
|
|
||||||
|
def getSellPrice_candle(self, ticker, data, i, BS=None):
|
||||||
|
sell_price = 0
|
||||||
|
sell_type_list = []
|
||||||
|
|
||||||
|
check = False
|
||||||
|
|
||||||
|
high = max(data['close'][i], data['open'][i])
|
||||||
|
low = min(data['close'][i], data['open'][i])
|
||||||
|
if low - data['low'][i] < data['high'][i] - high:
|
||||||
|
check = True
|
||||||
|
sell_type_list.append('candle_tail')
|
||||||
|
|
||||||
|
if check:
|
||||||
|
sell_price = data['close'][i] + 2 * ticker['unit']
|
||||||
|
|
||||||
return sell_price, sell_type_list
|
return sell_price, sell_type_list
|
||||||
Reference in New Issue
Block a user