This commit is contained in:
dsyoon
2021-04-27 20:53:29 +09:00
parent 494145a58c
commit 332b20834b
5 changed files with 1086 additions and 28 deletions

View File

@@ -127,11 +127,196 @@ class Common:
def checkLongYangBongAfterUmBong(self, stock, i):
if i > 0:
if stock[i-1]['open'] > stock[i-1]['close']: # 어제가 음봉인지 체크
if stock[i-1]['close'] < stock[i-1]['open']: # 어제가 음봉인지 체크
if stock[i]['open'] < stock[i]['close'] and stock[i]['close'] == stock[i]['high']: # 오늘 장대양봉인지 체크
if stock[i-1]['volume']*2 < stock[i]['volume']: # 어제 거래량 보다 두배 이상일 때
return True
return False
return "UMYANG_"
return ""
def checkDoji(self, stock, i):
# 하락 추세이고, 그저께, 어제 음봉이고, 오늘 도지인지 체크한다
if i > 2:
# 하락 추세이고
if stock[i - 1]['close'] < stock[i - 2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i-2]['close'] < stock[i-2]['open'] and stock[i-1]['close'] < stock[i-1]['open']:
# 도지 체크
if stock[i]['open'] == stock[i]['close'] and stock[i]['low'] < stock[i]['close'] < stock[i]['high']:
return "DOJI_"
return ""
def checkGravestone(self, stock, i):
# 상승 추세이고, 어제 양봉이고, 오늘 그레이브스톤인지 체크한다
if i > 2:
# 상승 추세이고
if stock[i-2]['close'] < stock[i - 1]['close']:
# 어제 양봉인지 체크
if stock[i-1]['open'] < stock[i-1]['close']:
# 오늘 그레이브스톤인지 체크한다
if stock[i]['open'] == stock[i]['close'] == stock[i]['low'] and stock[i]['low'] < stock[i]['high']:
return "GRAVESTONE_"
return ""
def checkDragonfly(self, stock, i):
# 하락 추세이고, 그저께, 어제 음봉이고, 오늘 드레곤플라이인지 체크한다
if i > 1:
# 하락 추세이고
if stock[i - 1]['close'] < stock[i - 2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i - 2]['close'] < stock[i - 2]['open'] and stock[i - 1]['close'] < stock[i - 1]['open']:
# 오늘 드레곤플라이인지 체크한다
if stock[i]['open'] == stock[i]['close'] == stock[i]['high'] and stock[i]['low'] < stock[i]['high']:
return "DRAGONEFLY_"
return ""
def checkHammer(self, stock, i):
# 하락 추세이고, 그저께, 어제 음봉이고, 오늘 해머인지 체크한다
if i > 1:
# 하락 추세이고
if stock[i - 1]['close'] < stock[i - 2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i - 2]['close'] < stock[i - 2]['open'] and stock[i - 1]['close'] < stock[i - 1]['open']:
# 오늘 해머인지 체크한다
if stock[i]['open'] < stock[i]['close']:
if (stock[i]['close'] - stock[i]['open']) * 2 < stock[i]['open'] - stock[i]['low']:
# 윗꼬리가 몸통보다 짧아야 한다.
if stock[i]['high'] - stock[i]['close'] < stock[i]['close'] - stock[i]['open']:
return "HAMMER_"
if stock[i]['close'] < stock[i]['open']:
if (stock[i]['open'] - stock[i]['close']) * 2 < stock[i]['close'] - stock[i]['low']:
# 윗꼬리가 몸통보다 짧아야 한다.
if stock[i]['high'] - stock[i]['open'] < stock[i]['open'] - stock[i]['close']:
return "HAMMER_"
return ""
def checkHangingman(self, stock, i):
# 상승 추세이고, 어제 양봉이고, 오늘 행잉맨인지 체크한다
if i > 2:
# 상승 추세이고
if stock[i-2]['close'] < stock[i - 1]['close']:
# 어제 양봉인지 체크
if stock[i-1]['open'] < stock[i-1]['close']:
# 오늘 해머인지 체크한다
if stock[i]['open'] < stock[i]['close']:
if (stock[i]['close'] - stock[i]['open']) * 2 < stock[i]['open'] - stock[i]['low']:
# 윗꼬리가 몸통보다 짧아야 한다.
if stock[i]['high'] - stock[i]['close'] < stock[i]['close'] - stock[i]['open']:
return "HANGINGMAN_"
if stock[i]['close'] < stock[i]['open']:
if (stock[i]['open'] - stock[i]['close']) * 2 < stock[i]['close'] - stock[i]['low']:
# 윗꼬리가 몸통보다 짧아야 한다.
if stock[i]['high'] - stock[i]['open'] < stock[i]['open'] - stock[i]['close']:
return "HANGINGMAN_"
return ""
def checkEngulfingHigh(self, stock, i):
# 하락 추세에서 상승 장악형인지 체크
if i > 2:
# 하락 추세이고
if stock[i - 1]['close'] < stock[i - 2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i - 2]['close'] < stock[i - 2]['open'] and stock[i - 1]['close'] < stock[i - 1]['open']:
# 오늘 상승장악형인지 체크
if stock[i]['open'] < stock[i]['close']:
if stock[i-1]['open'] < stock[i]['close'] and stock[i]['open'] < stock[i-1]['close']:
return "ENHIGH_"
return ""
def checkEngulfingLow(self, stock, i):
# 상승 추세에서 하락 장악형인지 체크
if i > 2:
# 상승 추세이고
if stock[i - 2]['close'] < stock[i - 1]['close']:
# 어제 양봉인지 체크
if stock[i - 1]['open'] < stock[i - 1]['close']:
# 오늘 하락장악형인지 체크
if stock[i]['close'] < stock[i]['open']:
if stock[i-1]['close'] < stock[i]['open'] and stock[i]['close'] < stock[i-1]['open']:
return "ENLOW_"
return ""
def checkHaramiHigh(self, stock, i):
# # 하락 추세에서 상승포아형인지 체크
if i > 2:
# 하락 추세이고
if stock[i - 1]['close'] < stock[i - 2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i - 2]['close'] < stock[i - 2]['open'] and stock[i - 1]['close'] < stock[i - 1]['open']:
# 오늘 상승포아형인지 체크
if stock[i]['open'] < stock[i]['close']:
if stock[i-1]['close'] < stock[i]['low'] and stock[i]['high'] < stock[i-1]['open']:
return "HAHIGH_"
return ""
def checkHaramiLow(self, stock, i):
# 상승 추세에서 하락 포아형인지 체크
if i > 2:
# 상승 추세이고
if stock[i - 2]['close'] < stock[i - 1]['close']:
# 어제 양봉인지 체크
if stock[i - 1]['open'] < stock[i - 1]['close']:
# 오늘 하락포아형인지 체크
if stock[i]['close'] < stock[i]['open']:
if stock[i-1]['open'] < stock[i]['low'] and stock[i]['high'] < stock[i-1]['close']:
return "HALOW_"
return ""
def checkPiercing(self, stock, i):
# 하락 추세에서 관통형인지 체크
if i > 2:
# 하락 추세이고
if stock[i - 1]['close'] < stock[i - 2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i - 2]['close'] < stock[i - 2]['open'] and stock[i - 1]['close'] < stock[i - 1]['open']:
# 오늘 관통형인지 체크
if stock[i]['open'] < stock[i]['close']:
if stock[i]['open'] < stock[i-1]['low'] and (stock[i-1]['close'] + stock[i-1]['open'])/2 < stock[i]['close'] < stock[i-1]['close']:
return "PIERCING_"
return ""
def checkDarkCloud(self, stock, i):
# 상승 추세에서 흑운형인지 체크
if i > 2:
# 상승 추세이고
if stock[i - 2]['close'] < stock[i - 1]['close']:
# 어제 양봉인지 체크
if stock[i - 1]['open'] < stock[i - 1]['close']:
# 오늘 흑운형인지 체크
if stock[i]['close'] < stock[i]['open']:
if stock[i-1]['high'] < stock[i]['open'] and stock[i-1]['open'] < stock[i]['close'] < (stock[i-1]['open'] + stock[i-1]['close'])/2:
return "DARKCLOUD_"
return ""
def checkMorningstar(self, stock, i):
# 하락 추세에서 샛별인지 체크
if i > 3:
# 하락 추세이고
if stock[i-1]['close'] < stock[i-2]['close']:
# 그저께와 어제가 음봉인지 체크
if stock[i - 2]['close'] < stock[i - 2]['open'] and stock[i - 1]['close'] < stock[i - 1]['open']:
# 오늘 샛별인지 체크
# 어제 갭 체크
if stock[i-1]['open'] < stock[i - 2]['close'] and stock[i-1]['close'] < stock[i - 2]['close']:
# 오늘 시가가 어제 종가보다 높으며 양봉
if stock[i-1]['close'] < stock[i]['open'] < stock[i]['close']:
return "MORNINGSTAR_"
return ""
def checkEveningstar(self, stock, i):
# 상승 추세에서 저녁별형인지 체크
if i > 3:
# 상승 추세이고
if stock[i-2]['close'] < stock[i-1]['close']:
# 어제 양봉인지 체크
if stock[i-1]['open'] < stock[i-1]['close']:
# 오늘 저녁별형인지 체크
# 어제 갭 체크
if stock[i-2]['close'] < stock[i-1]['open'] and stock[i-2]['close'] < stock[i-1]['close']:
# 오늘 시가가 어제 종가보다 낮으며 음봉
if stock[i]['close'] < stock[i-1]['open'] < stock[i-1]['close']:
return "EVENINGSTAR_"
return ""
def checkAllUpperCross(self, stock, i):
if i > 10:
@@ -229,21 +414,6 @@ class Common:
return "STOCHASTIC#2_"
return ""
def check_highest_270(self, stock, i):
# 270일 기준으로 최고가를 기록하는 순간 매수를 시도한다.
# https://docs.google.com/presentation/d/1MVuaeRNljqLCdn4dPZmvVdtl2Ab09Zwg/edit#slide=id.gc7b796e645_0_27
upper_index = 0
if len(stock) > 271:
top = 0
for idx in range(2, 271):
# 최근 270일 중 최고가를 구한다.
if top < stock[-idx]['close']:
top = stock[-idx]['close']
if top < stock[i]['close']:
return "highest_"
return ""
def check_Dolpa_Jiji(self, stock, i, day='20'):
upper_index = 0
if len(stock) > 5: