주식 자동매매 시스템

파이썬을 이용한 주식 자동매매 시스템

이미지
파이썬을 이용한 주식 자동매매 시스템 INDEX 환경구축 키움증권 API - 연결테스트 키움증권 API - 계좌정보 조회 키움증권 API - 주문 키움증권 API - 종목정보 가져오기 포트폴리오 - 종목, 업종별 자산 포트폴리오 한국투자증권 API API reference 키움 OpenAPI+ 개발가이드 한국투자증권 OpenAPI 다운로드 및 가이드 Design https://www.design-seeds.com/in-nature/succulents/cacti-color-2/ https://create.piktochart.com/dashboard

[R 함수] dplyr 패키지 함수 사용 방법

How to use 'dplyr' package dplyr  패키지 함수 데이터 전처리 작업에 가장 많이 사용되는 패키지다. dplyr 함수 기능 filter() 행 추출 select() 열(변수) 추출 arrange() 정렬 mutate() 변수 추가 summarise() 통계치 산출 group_by() 집단별로 나누기 left_join() 데이터 합치기(열) bind_rows() 데이터 합치기(행) filter select arrange mutate summarise group_by left_join bind_rows mpg %>%   group_by(manufacturer) %>%   summarise(mean_hwy = mean(hwy)) %>%   arrange(desc(mean_hwy)) %>%   head(3)

HIVE와 HIVE SQL

이미지
HIVE 를 사용하는 이유 맵리듀스를 직접 작성하지 않고 쿼리언어로 비정형 데이터 분석이 가능하다. 하이브는 하둡에서 맵리듀스를 직접 돌리는 대신, 사용자가 SQL(Simple Query Language)로 쿼리를 작성하면 자동으로 맵리듀스 작업으로 변경해주는 쿼리 엔진이다. HIVE 구조 Metastore 하이브에서 생성한 테이블 스키마를 저장하는 곳. 테스트용으로 더비(derby) 임베디드 데이터베이스를 사용하면 된다. 실제 서비스용으로는 MySQL과 같은 데이터베이스를 사용할 수 있다. HiveQL 사용자가 쿼리를 입력하면 쿼리를 분석해 수행 계획을 작성하고 이에 따라 맵리듀스 코드를 생성한다. MapReduce 맵리듀스 작업 HiveQL에 의해 생성된 맵리듀스로 맵리듀스 작업이 수행된다.  TS/SelOperator들을 수행할 수 있도록 코드가 생성된다.  SerDe라는 추상 계층을 통해 계산에 필요한 데이터를 맵리듀스의 인풋 아웃풋 포매터로부터 읽어 들인다. HIVE 실행 내부 절차 Hive - Hadoop Flow executeQuery 사용자가 쿼리를 실행한다. getplans 드라이버(Driver)는 컴파일러(Compiler)에 쿼리 플랜을 요청한다. getMetaData 컴파일러는 쿼리를 파싱(parsing)한 후 의미분석기와 로지컬 플랜 생성기를 거친 후 맵리듀스 코드를 생성한다. 이 과정에서 하이브 테이블의 컬럼 정보와 컬럼 매핑(metadata) 정보를 Metastore로부터 가져온다. sendMetaData 컴파일러에서 요청한 테이블의 메타정보를 전달한다. sendPlans 컴파일러의 결과물인 맵리듀스와 플랜을 실행엔진(execution engine)으로 전달한다. executePlan 컴파일러에서 생성한 플랜을 수행한다. DDL 작업을 위해서 메타데이터에 접근한다. 더불어 job.xml을 생성해 쿼리 플래너가 작성한 맵리듀스 작업을 수행한다.

원어민들이 매일 쓰는 표현 100

Youtube 영상 : Michael Elliott 1-20 It's a long story. 말하자면 길어요 How did it go? 어떻게 됐어요? I heard you had a blind date yesterday, so How did it go? If everything goes according to plan.. 모든 일이 다 계획대로 된다면... How's your food? 음식이 어때요? delicious 는 매우 강한 표현이므로 it's great 을 쓰는 것이 더 좋다. What did you get? 뭐 주문했어요? / 뭐 샀어요? The service here is terrible! 여기 서비스가 진짜 최악이네요 His Korean really sucks. 그는 한국어 진짜 못해요. That movie really sucked. 그 영화 진짜 별로였어요 I come from a large family. 우리 가족은 대가족이에요. That's my dream job! 내 꿈의 직업이에요! /  내가 생각하는 이상적인 직업이에요 He's got a chip on his shoulder. 그는 억울해서 불만을 품고 있어요 Let's all chip in and buy him a nice present. 우리 돈을 모아서 그 사람한테 좋은 선물 사주자 I don't hold a grudge. 나 뒤끝 없는 사람이에요 grudge : 여한 원한 Get over it! 잊어버리고 넘어가 It's time for you to move on. 잊을 때가 됐어요 You really hurt my feelings. 나한테 큰 상처 줬어요. I'll never forget what you said. 나한테 한 말을 절대 잊지 않을 거에요 what you said 한 말 what you did 한

[Network] Server-Client Socket 통신 with Java

이미지
java Application(Eclipse) 을 이용해 Server-Client TCP/IP Socket 통신하기 Server ServerSocket을 생성한 후 Client에서 접속할 때까지 기다린다. ServerSocket을 생성할 때는 port 번호를 지정해줘야 하는데 이때 이미 사용 중인 port 번호를 사용하면 안 된다. // ServerSocket 생성 ServerSocket serverSocket = new ServerSocket(PORT_NUMBER); // Client에서 접속할 때까지 기다리며, 접속하면 클라이언트와 연결된 Socket을 return한다. Socket socket = serverSocket.accept(); Client 서버의 IP, Port번호를 통해 socket을 생성해 server와 통신할 수 있다. Socket socket = new Socket(IP_ADDRESS, PORT_NUMBER); // socket이 제대로 생성되었는지, server와 연결되었는지 확인한다 if (socket != null && socket.isConnected()) { } Server - Client 통신 Stream을 통해 data를 주고받는다. Socket이 생성되면 outputstream과 inputstream을 통해 데이터를 주고받으면 된다. InputStream in = socket.getInputStream(); InputStreamReader inr = new InputStreamReader(in); // 빠른속도를 위해 BufferedReader를 사용한다 BufferedReader br = new BufferedReader(inr); String str = br.readLine(); OutputStream out = socket.getOutputStream(); OutputStreamWriter outw = new OutputStreamWriter(out

개발할 때 유용한 사이트

이미지
flow chart 간단하게 그릴 수 있는 Site https://www.draw.io/ MarkDown 쉽게 작성하는 방법 MD 파일 작성 사이트   를 이용하면 설치 없이 간편하게 사용할 수 있다 . typora는 MD 파일 작성 프로그램이다. 컴퓨터 내에서 MD파일을 쉽게 수정하고 저장할 수 있어서 git을 사용하는 유저들에게는 더욱 유용할 것이다. https://typora.io/#windows GitIgnore 파일 생성 개발 언어, 툴에 따라 필요한 .gitignore 파일을 쉽게 만들 수 있는 사이트이다. 여러 개발언어가 섞여 있는 경우 전부 선택하면 하나의 .gitignore를 만들 수 있다. https://www.gitignore.io/ 무료 디자인 리소스 https://icons8.com/icon/set/human/color https://fontawesome.com/ .html 파일에 코드만 추가해서 사용할 수 있는 아이콘을 제공하는 사이트 <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.0.13/css/all.css" integrity="sha384-DNOHZ68U8hZfKXOrtjWvjxusGo9WQnrNx2sqG0tfsghAvtVlRW3tvkXWZh58N9jp" crossorigin="anonymous"> http://l-lin.github.io/font-awesome-animation/ 위의 주소에서 아이콘에 Animation을 추가할 수 있는 css 코드를 다운로드 받는다. 사각형 영역을 눌러 CSS 코드를 다운로드 받는다 .html 파일에 아래와 같이 코드를 추가한다 <link rel="stylesheet" href="css/font-aw

System Architecture

이미지
spring layout

[Android] AsyncTask

AnsyncTask는 UI Thread를 조금 더 쉽게 이용할 수 있도록 해주는 Class이다. 이 클래스를 사용하면 Thread나 Handler를 사용하지 않고도 UI Thread에서 백그라운드 작업을 수행하고 UI를 변경할 수 있다. android.os.AsyncTask<params, progress, result> <params, progress, result> 3개의 Generic type으로 정의한다. params : Task를 실행시킬 때 넣어주는 parameter type progress : 진행중에 사용되는 type result : 결과로 return 되는 type AsyncTask 를 상속받아 클래스를 생성해, 백그라운드에서 할 작업을 구현한다. class MyTask extends AsyncTask< String , String, Void> { } doInBackground() <params, , > 값은 doInBackground()의 parameter type이며, 배열로 전달된다. < , , result > 값은 doInBackground()의 return type이다. class MyTask extends AsyncTask< String , String, Void> {     @Override    protected Void doInBackground( String ... strings) { return null; } } onPreExecute() doInBackground() 함수의 실행 전에 호출된다. @Override protected void onPreExecute() {     super.onPreExecute(); } onPostExecute() doInBackground() 함수가 끝나고 실행되는 함수이다. result의 type은 doInBackground() 함

[Android] Service

이미지
 서비스 (Service)  화면 없이 백그라운드에서 실행되는 프로세스를 의미한다. Service를 상속받는 Calss를 생성한다 Class 생성 후 우클릭 > Generate > Override 를 통해 필요한 함수들을 구현한다. Service 시작하기 MainActivity에서 Service로 데이터 전달하기 위해서는  putExtra()를 이용한다. // Service class의 class를 Intent로 생성한다 intent = new Intent(this, ServiceSleep.class); // key - value 로 값을 저장해 전달할 수도 있다 intent.putExtra("comman", "show"); // Service를 시작한다 startService(intent); Service Class 내에서  onStartCommand 를 통해 전달 받은 Intent를 처리한다. getStringExtra("KEY") 와 같은 함수로 값을 가져온다. @Override public int onStartCommand(Intent intent, int flags, int startId) {     if (intent == null) {         return Service.START_STICKY;     } else { // Intent 처리 MainActivity에서 "command"라는 이름으로 // 데이터를 저장했기 때문에 가져올 때도 "command"로 가져오면된다. intent.getStringExtra("command");     }     return super.onStartCommand(intent, flags, startId); } onDestroy에서 Service를 종료시켜줘야 한다. stopService(intent)

[Android] GoogleMaps API 사용방법

이미지
프로젝트 생성 Android studio에서 project를 생성한다. Activity 선택 화면에서 Google Maps Activity를 선택한다. permission설정과, 인증 Key 설정 코드를 추가해야한다. app\src\main\AndroidManifest.xml   <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>   <uses-permission android:name="android.permission.INTERNET"/> res\values\google_maps_api.xml <!-- YOUR KEY에 KEY를 추가해준다 --> <string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR KEY</string> SHA1 KEY 생성 Path 에 java path 추가  path를 추가하면 keytool 명령을 사용할 수 있다  # C:\Users\student\.android 위치에서 cmd 창을 실행한다 > keytool -list -v -keystore debug.keystore -storepass android -keypass android  # Key가 생성됌  인증서 지문:  SHA1: D8:A3:7B:10:4C:AE:13:E5:CC:A8:E6:61:5B:F7:0A:5B:4A:3B:F6:77  SHA256: D1:D1:06:36:4C:41:E7:63:E3:12:13:62:1D:53:DE:67:30:02:2E:EF:82:B1:B2:BC:11:1C:97:66:0A:DF:6C:E0 서명 알고리즘 이름: SHA1withRSA 주체 공용 키 알

[Android] Web과 App의 연동

javascript에서 App에 있는 함수를 호출하기 위해서는 함수에 아래와 같은 Annotation이 있어야한다. @android.webkit.JavascriptInterface  webView에 사용할 인터페이스를 설정해야한다. JS라는 클래스를 사용하고, HTML에서 "js"라는 이름으로 호출 하겠다는 설정을 해준다. webView.addJavascriptInterface(new JS(), "js"); final class JS { JS() { } @android.webkit.JavascriptInterface public void clickJS(String a) { textView.setText(a); Log.d("[35]", "Event process........... " + a); } } Web에서 window.js로 App 함수 호출하는 방법 <!-- HTML5 --> <button onclick = "window.js.clickJS('Web message')">Android Call</button> App에서 Web에 있는 javascript 함수를 호출하는 방법 // 오류 발생하는 경우 // webView 는 새로운 Thread에서 실행시킬 수 없다. // 아래와 같이 새로운 Thread를 생성하면 오류가 발생한다. // All WebView methods must be called on the same thread.    public void clickBt(View v) {              new Thread(                     new Runnable() {                         @Override                        publ