아마존 테블릿이 이번 블랙 프라이 데이에 엄청 싸게 풀려서 사봤습니다.

49.99$ 에다가 배송 대행지 보내는 비용까지 하면 60여 달러 정도 됩니다.

환율이 그때그때 다르긴 하지만, 제 통장에서 나간 돈을 보니 7만 2천원 정도네요

 

구입하면 위의 빨간 종이 봉투 패키지로 옵니다.

내부적으로 안드로이드 커스터마이징 되어있는 아마존 UI를 사용하므로, 구글 플레이어를 설치를 따로 해줘야 합니다.

 

먼저 설정에 들어가서 Settings > Security & Privacy > Apps from Unknow sources 를 켜서 외부 app 를 설치하게 해준다음 아래의 순서대로 인터넷에 접속해서 설치 하면 됩니다.

 

  1. Google Account Manager
    https://www.apkmirror.com/apk/google-inc/google-account-manager/google-account-manager-5-1-1743759-release/google-account-manager-5-1-1743759-android-apk-download/
  2. Google Services Framework
    https://www.apkmirror.com/apk/google-inc/google-services-framework/google-services-framework-5-1-1743759-release/google-services-framework-5-1-1743759-android-apk-download/
  3. Google Play Service APK
    https://www.apkmirror.com/apk/google-inc/google-play-services/google-play-services-11-5-09-release/google-play-services-11-5-09-240-164803921-android-apk-download/
  4. Google Play Store
    https://www.apkmirror.com/apk/google-inc/google-play-store/google-play-store-7-0-25-h-all-0-release/google-play-store-7-0-25-h-0-android-apk-download/

이거 깔고 기본적인 크롬 / 유튜브 / 네이버 키보드 정도 설치해 줍시다.

저는 키움증권 영웅문 s 를 설치해 봤습니다.

 

진짜 가격대비 막 굴리는 용도로는 최고인거 같습니다.

'소소한 리뷰 > 테블릿' 카테고리의 다른 글

가성비 갑! 아마존 킨들 Fire HD 8  (0) 2019.12.18

키보드질로 먹고 사는 직업이다 보니, 손목이 많이 아퍼왔고,

이걸 어떻게 하다 보니 기계식 키보드를 많이 사봤었습니다.

 

지금은 한성 무접점 키보드에 정착해서 쓰고 있는데, (해피해킹 type s랑 비슷한 키감 + 사무실에서 사용가능한 소음)

그냥 있는 키캡도 좋지만, 약간 커스터마이징을 하면, 좀더 멋진 키보드가 되기도 합니다.

 

제가 사무실에서 사용하는 조합 입니다.

왼쪽에 한손 키보드를 쓰게 되면 자세가 어께가 말리는 자세에서 펴지는 자세가 되기때문에 자세 교정에 도움이 됩니다.

 

기분이 꿀꿀하거나 뭔가 변화를 주고 싶을때, 저처럼 키보드 키캡을 새로 바꿔보는건 어떠하실까요

 

앱코 해커 무접점 ... 리안리게이밍 mSt... 큐센 ARES Q3...

작년과 올해, 개인적으로 상당히 피곤한 해였습니다.

그러다 보니 괜시리 행운을 부른다는 아이템에 흥미가 가더군요.

 

그리고 지난 11월달 알리 익스프레스에서 추천 아이템으로 행운의 나무 장식품이 뜨더군요

그래서 질러 봤습니다.

https://ko.aliexpress.com/item/33016126640.html?spm=a2g0s.9042311.0.0.39914c4dc2DNrZ

 

US $35.69 15% OFF|풍수 포춘 트리 골드 호일 머니 트리 분재 사무실 탁상 럭키 웰스 장식품 선물 홈 인테리어 선물 상자-에서피규어 & 미니어처부터 홈 & 가든 의 AliExpress

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

대충 4만원 정도 들었습니다.

배송은 아래 사진과 같이 왔습니다.

포장이 생각보다 신경을 많이써서 보냈더군요.

 

사이즈는 보조배터리 정도?

아담하면서 그래도 운치가 있어 보입니다.

포장도 그렇고 이건 누군가에게 선물로 줘도 괜찮을 것 같습니다.

 

 

자동차 운전하다 보면 속도계를 볼때 잠시 전방 주시를 못할때가 있습니다.

보통 과속 카메라 근처에서 속도계를 잠깐 체크해야 하는데, 고속도로에선 위험하기도 하죠

그래서 최근 고급 자동차들은 HUD라고 유리창 앞에 속도 같은 간단한 정보를 비쳐 주기도 합니다.

 

이걸 따로 달면 일반 자동차들도 구현이 되서 구입 했습니다.

https://ko.aliexpress.com/item/33050148654.html?spm=a2g0s.9042311.0.0.39914c4dc2DNrZ

 

US $25.19 37% OFF|Eanop 스마트 미러 hud 헤드 디스플레이 obd2 속도계 자동차 속도 프로젝터 자동 전압 모니터링 kmh/kpm-에서헤드업 디스플레이부터 자동차 및 오토바이 의 AliExpress

Smarter Shopping, Better Living! Aliexpress.com

ko.aliexpress.com

그런데 이것도 오는데 1달이나 걸리고 저번에는 운이 나빠서 불량이 온적도 있어서 처음 사시는 분이라면 국내 쇼핑몰에서 구입하시는걸 추천 드립니다.

https://coupa.ng/bkVWxC

 

소소일상 차량용 H...

 

간혹 km / rpm / 연비 등등 여러 정보를 띄우는것이 많은데,

몇개 사본결과, 속도만 있으면 됩니다.

다른건 운전하다가 시야 가리기도 하고, 화려하다 보니 또 금방 질립니다.

 

어쨋든 온거 차에 설치하고 출근길에 찍어 보았습니다.

쨍한 날이었음에도 시안성이 괜찮습니다.

내차에 약간이나마 고급스러움을 줄 수 있는 아이템이라 생각합니다.

우선 주식을 컴퓨터에게 분석 하기 위해서는 데이터가 필요하죠.

키움증권의 OpenAPI등을 사용해서 데이터를 실시간으로 가져 올 수 있으나,

그건 실제 매매 전략등을 구현해서 성공한다는 확신이 들때 해도 됩니다.

 

시스템 자동매매 만드는 방법은 아래와 같은 순서로 만드는게 보편적입니다.

  1. 주식 데이터 모으기 (tick 데이터 자체도 매매 됩니다. 해외 선물 같은 경우 거래소당 월 180달러 내야 합니다.)
  2. 주식 데이터를 기술 분석 하기 (이동평균선, 볼린저 벤드, RSI 등...)
  3. 기술 데이터를 기반으로 매매 규칙 세우기
  4. 벡테스팅 하기.
       즉 1의 주식 데이터를 기반으로 3에서 새운 매매 규칙을 적용해서 실제 이익나는 전략인지 검증
        (사실 여기서 다들 좌절 합니다....ㅠㅠ)
  5. 실제 모의 투자 계좌에서 위의 통과된 매매법을 적용하기 (최소 1개월 ~ 3개월)
  6. 실제 계좌에 돈을 넣고 보기...

 

상기의 주제들은 구글이나 네이버 등에서도 검색하면 나오는 소스들이 많습니다

여기서는 제 나름대로 주석을 붙여가서 해석을 하는거니, 참고 바랍니다.

 

우선 1번 데이터 모으기 부터 해봅시다.

 

main.py

import pandas as pd 
import dataframe
import sqlite3
import datetime
import WebStockDataGetter
import SqliteStockDB

# 메인 함수 시작
if __name__ == '__main__':
    # 설정파일. 웹페이지의 1페이지당 10일치 데이터가 있는데, 몇개 웹페이지를 긁을지 설정
    f = open("./config.txt", 'r')
    if f.readable == False:
        print("! have not config file.")
        exit
     
    maxGetPage = f.readline().strip()
    f.close()

    # 네이버 데이터 크롤러
    getter = WebStockDataGetter.naverGetter()
    stockDf = getter.getKoreaStocks()

    # Sqlite에 데이터 저장
    dayPriceDB = SqliteStockDB.dayPriceDB()
    conn = dayPriceDB.connectDB('KoreaStockData.db')
    totalCount = len(stockDf)

    with conn:
        # 주식의 일자데이터 url 가져오기 
        for idxi, rowCode in stockDf.iterrows():
            code = rowCode['code']
            name = rowCode['name']      

            # DB에 데이터가 없으면 테이블을 만듬
            tableName = dayPriceDB.tableName(code)
            if dayPriceDB.checkTable(conn, tableName) == False:
                dayPriceDB.createTable(conn, tableName)

            # 크롤러에게 code 넘기고 넷 데이터 긁어오기
            df = getter.getAllStockDays(code, maxGetPage)
            data = pd.DataFrame(df, columns=['날짜', '시가', '고가', '저가', '종가', '거래량'])
                                    
            # 데이터 저장
            dayPriceDB.save(conn, tableName, data)
            log = "====== 주식 일봉 데이터 [%s] 저장 완료 (%d/%d) =====" % (name, idxi, totalCount)
            print(log)

        conn.close()

 

SqliteStockDB.py

import pandas as pd 
import dataframe
import sqlite3
import datetime

class dayPriceDB:
    # DB 폴더가 준비 되어 있어여함.	
    def __init__(self, dbName):
        self.conn_ = sqlite3.connect('./DB/' + dbName)

    def tableName(self, code):
        name = "DayPriceTable_" + code
        return name
    
    # 테이블 이름이 있는지 확인
    def checkTable(self, tableName):
        with self.conn_:
            cur = self.conn_.cursor()
            sql = "SELECT count(*) FROM sqlite_master WHERE Name = \'%s\'" % tableName
            cur.execute(sql)
            rows = cur.fetchall()
            for row in rows:          
                if str(row[0]) == "1":
                    return True
            return False
    
    # 테이블 생성
    def createTable(self, tableName):
        with self.conn_:
            cur = self.conn_.cursor()
            sql = "CREATE TABLE %s (candleTime DATETIME PRIMARY KEY, start INT, high INT, low INT, close INT, vol INT);" % tableName
            cur.execute(sql)
    
    # 데이터 저장
    def save(self, tableName, dataframe):    
        with self.conn_:
            cur = self.conn_.cursor()
            sql = "INSERT OR REPLACE INTO \'%s\'" % tableName
            sql = sql + " ('candleTime', 'start', 'high', 'low', 'close', 'vol') VALUES(?, ?, ?, ?, ?, ?)"
            cur.executemany(sql, dataframe.values)    
            self.conn_.commit()

 

WebStockDataGetter.py

import pandas as pd 
import dataframe
import sqlite3
import datetime

class naverGetter:
    def getKoreaStocks(self):
        # 한국 주식 회사 등록 정보 가지고 오기
        stocksDataFrame = pd.read_html('http://kind.krx.co.kr/corpgeneral/corpList.do?method=download&searchType=13', header=0)[0]
        stocksDataFrame.종목코드 = stocksDataFrame.종목코드.map('{:06d}'.format)
        stocksDataFrame = stocksDataFrame[['회사명', '종목코드']] 
        stocksDataFrame = stocksDataFrame.rename(columns={'회사명': 'name', '종목코드': 'code'})
        return stocksDataFrame

    def __getURLCode(self, code):    
        url = 'http://finance.naver.com/item/sise_day.nhn?code={code}'.format(code=code)
        print("요청 URL = {}".format(url))
        return url

    # 종목 이름을 입력하면 종목에 해당하는 코드를 불러와 
    def getStockURL(self, item_name, stocksDataFrame):
        code = stocksDataFrame.query("name=='{}'".format(item_name))['code'].to_string(index=False)
        url = self.__getURLCode(code)
        return url

    def getAllStockDays(self, code, maxGetPage):
        # 일자 데이터를 담을 df라는 DataFrame 정의
        df = pd.DataFrame()

        url = self.__getURLCode(code)
        # 1페이지가 10일. 60페이지 = 600일 데이터만 가져오기 
        for page in range(1, int(maxGetPage)):
            pageURL = '{url}&page={page}'.format(url=url, page=page)
            df = df.append(pd.read_html(pageURL, header=0)[0], ignore_index=True)
        
        # df.dropna()를 이용해 결측값 있는 행 제거 
        df = df.dropna()
        return df

 

이걸로 DB 폴더안에 'KoreaStockData.db' 파일이 생성될거고요.

DB Browser for SQLite 로 열어보면 네이터 주식 게시판에서 긁어온 데이터가 제대로 저장되어 있다면 성공입니다.

 

+ Recent posts