본문 바로가기

개발100

[LUA] 함수 호출 CALL BY VALUE/CALL BY REFERENCE 루아 함수 호출 시 CALL BY VALUE/REF 테스트 코드입니다 print 의 결과는 --> 뒤에 있습니다 -- 목적: 루아 함수 call by value, call by reference 확인 -- call by value : nil, booleans, numbers , strings -- call by ref : table, function, thread, userdata -- print 의 결과는 --> 로 표시 function dumpTable(o) if type(o) == 'table' then local s = '{ ' for k,v in pairs(o) do -- key 가 숫자가 아닌 경우 "key" if type(k) ~= 'number' then k = '"'..k..'"' end.. 2019. 7. 28.
[LUA] 테이블 다루기 - 배열/맵/클래스 루아는 기본 TYPE 말고는 테이블이 거의 모든 역할을 하고 있어 제대로 이해 하는게 필요 합니다 루아 테이블에 대한 간단한 샘플 코드입니다 print 결과는 소스 코드에 --> 주석으로 추가되어 있습니다 -- 목적: 루아 테이블 공부하기 -- print 의 결과는 --> 로 표시 function dumpTable(o) if type(o) == 'table' then local s = '{ ' for k,v in pairs(o) do -- key 가 숫자가 아닌 경우 "key" if type(k) ~= 'number' then k = '"'..k..'"' end s = s .. '['..k..'] = ' .. dumpTable(v) .. ',' end return s .. '} ' else return .. 2019. 7. 28.
[LUA] 문자열 다루기 간단 예제 Lua를 사용한 간단한 문자열 예제 (기존 파이썬 문자열 예제 소스를 루아에 맞도록 수정) He 로 변경: *# He said: "Of course." and you said "Thank you" #* print('--------------------------------------------------------------------') print('소문자 만들기') print('--------------------------------------------------------------------') sText2 = string.lower( sText) print('소문자 만들기:', sText2) -- [Outpt] 소문자 만들기: *# they said: "of course." and you s.. 2019. 7. 27.
파이썬의 for 루프 파이썬의 for 루프는 전통적인 C/C++/JAVA 와는 조금 사용방법이 달라서 기록 해 둡니다. 일반적인 C/C++ 은 for (초기값 ; 완료조건; step) 순으로 되어 있는데 비해 파이썬은 for 변수 in 리스트 와 같이 되어 있습니다. 0부터 99까지 더하는 간단한 for 루프는 ##### sum = 0 for i in range(0, 100): sum = sum + i print(sum) 식으로 구현 됩니다. 여기서 range는 range(stop) 또는 range(start, stop, step) 식으로 사용되고 list 와 유사한 빌트인 클래스를 리턴합니다. loop = range(10) print(type(loop)) # 결과는 99부터 0까지 더하기를 역으로 처리하면 요리 됩니다 st.. 2019. 6. 16.
[CREON PLUS API 활용] BlockRequest 와 Request 크레온 플러스 API를 이용해서 통신하는 방법은 다음 2가지가 있습니다 BlockRequest 방식 - 가장 간단한 데이터 요청Request 호출 후 Received 이벤트를 수신 받기 아래 코드는 두 가지 방식으로 현재가를 통신하는 코드 입니다.import pythoncom from PyQt5.QtWidgets import * import win32com.client import win32event g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpCodeMgr') StopEvent = win32event.CreateEvent(None, 0, 0, None) class CpEvent: def set_params(self, client, name, caller): .. 2018. 12. 11.
파이썬 윈도우 메시지 펌프 처리 예제 파이썬을 이용해서 윈도우 메시지펌프를 하는 간단한 예제 코드 입니다 우선 전체 코드를 먼저 본 다음 일부 중요 함수들 설명 이어가겠습니다. 메시지 펌프 코드는 아래 사이트를 참고 했습니다.Processing Windows Messages Using MsgWaitForMultipleObjects import sys import pythoncom from PyQt5.QtWidgets import * import win32event StopEvent = win32event.CreateEvent(None, 0, 0, None) ################################################ # 테스트를 위한 메인 화면 class MyWindow(QMainWindow): def __init.. 2018. 12. 8.
[CREON PLUS API 활용] MACD 매매 시그널 실시간 구하기(5분 차트 이용) 차트와 MACD지표를 실시간으로 계산하는 간단한 예제 코드입니다 MACD 지표는 단기 지수 이동평균과 장기 지수 이동평균의 차로 구해는 비교적 단순한 기술적 지표입니다. 참고로 MACD 지표를 구하는 계산 방법은 아래와 같습니다. MACD = 12일 지수이동평균- 26일 지수이동평균Signal = MACD 의 9일 지수이동평균Oscillator : MACD - Signal 여기서 MACD를 직접 계산하지는 않고, CREON PLUS API를 이용해 MACD 계산 값을 넘겨 받습니다 아래의 CMACD 클래스는 두가지 플러스 Object 의 도움을 받아 지표를 계산합니다.CpIndexes.CpSeries - 차트의 기본 데이터를 저장하는 PLUS 클래스(시가, 고가, 저가, 종가, 거래량)CpIndexes... 2018. 11. 23.
파이썬 리턴값 편리 기능 파이썬에는 몫과 나머지를 한번에 구하는 dibmod 함수가 있다. a, b = divmod(123, 5) 여기서 특이한 점은 함수의 리턴이 마치 2개가 되는 것처럼 표현되어 a, b 두 변수에 각각 할당 된다는 점 실제 divmod 의 리턴값은 tuple 하나이며 아래와 같이 확인 해 볼 수 있다. a = divmod(123,5) type(a) Out[6]: tuple print(a) (24, 3) 단 파이썬에서는 tuple 에 한해 패킹과 언패킹을 손쉽게 해 줘서 처음 예제처럼 a, b 변수에 튜플을 분리해서 값을 넣어주는 식이다. 함수는 실제 구현하고자 하는 목적을 달성하기 위해 대부분 어떤 값을 리턴하는 경우가 많다 대부분의 언어에서는 리턴값이 하나이기 때문에, 하나의 리턴값으로 함수의 성공을 리턴.. 2018. 11. 18.
[파이썬] 파일 다루기(유니코드, 파일 읽기 등) 기본적인 파일 읽고 쓰기 대부분의 언어와 동일하게 open/close 함수를 이용해서 파일을 읽고 닫을 수 있습니다 . f = open(path, "r") f.close() 파일 인코딩 예외처리 텍스트 파일의 인코딩은 ANSI/유니코드/UTF-8 등 다양하게 존재 합니다. (노트패드에 파일 저장을 눌러보면 인코딩 선택 기능으로 확인 가능) 파일의 인코딩을 정확히 알 경우에는 해당 인코딩으로 읽어 주면 되지만 해당 파일의 인코딩을 모를경우에는 일단 읽어보고 오류 나면 다시 읽는 식으로 처리해 줘야 합니다.(try ~ exception 활용) import codecs # file encoding def readFile(self, path): ftype = 'normal' f = open(path, "r") .. 2018. 10. 21.
[파이썬] 문자열 다루기 파이썬 문자열 관련 자주 사용하는 함수들 위주로 샘플 코드를 만들었습니다 sText = ' *# They said: "Of course." and you said "Thank you" #* ' print('원문:', sText) #결과: 원문: *# They said: "Of course." and you said "Thank you" #* # 문자열 Trim 하기 공백 등 제거 sText = sText.strip() print('공백제거:', sText) #결과: 공백제거: *# They said: "Of course." and you said "Thank you" #* # 특정 단어 가 문자열에 있는 지 찾기 if 'They' in sText: print('"They" Found') #결과: "The.. 2018. 10. 17.
[CREON PLUS API 활용] 종목별 기관/외국인/개인 매수 수량/금액 조회 크레온 플러스(CREON PLUS) 를 이용해서 종목별 기관/외국인/개인 매수 수량/금액을 조회하는 간단한 샘플입니다 import sys # from PyQt5.QtWidgets import * import win32com.client import ctypes import time ############################################### # PLUS 공통 OBJECT g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpCodeMgr') g_objCpStatus = win32com.client.Dispatch('CpUtil.CpCybos') g_objCpTrade = win32com.client.Dispatch('CpTrade.CpTdUti.. 2018. 9. 29.
[CREON PLUS API 활용] 종목검색 실시간 신호 수신 받기 CREON PLUS API 를 이용해서 종목검색 예제 조건을 조회 하고, 해당 조건의 실시간 감시(서버에서 감시)를 등록해서 실시간으로 해당 조건에 만족하는 종목을 받아 오는 코드입니다 서버에서 실시간 감시를 해 주기 때문에, 당연하게도 등록 가능한 실시간 감시 조건은 제한되어 있어 감시를 마친 후에는 반드시 감시 중단 처리가 필요 합니다. 종목검색 프로세스는 아래 글을 참조 [Tutorial] 종목검색 프로세스 이해하기 import sys from PyQt5.QtWidgets import * import win32com.client import pandas as pd import os g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpStockCode') g_ob.. 2018. 6. 6.
[CREON PLUS API 활용] 전 종목 시가총액 구하기 CREON PLUS API 를 이용해서 전종목의 시가총액을 계산한 후 시가총액 상위 순으로 소팅해 봤습니다 시가총액 계산은 상장 "주식 수 * 현재가" 로 간단히 계산했습니다 import sys from PyQt5.QtWidgets import * import win32com.client import ctypes ################################################ # PLUS 공통 OBJECT g_objCodeMgr = win32com.client.Dispatch('CpUtil.CpCodeMgr') g_objCpStatus = win32com.client.Dispatch('CpUtil.CpCybos') g_objCpTrade = win32com.client.Dispat.. 2018. 6. 6.
[CREON PLUS API 활용] 차트 지표 계산 하기 CREON PLUS 에서 제공하는 차트 지표 계산 라이브러리를 이용해서 지표계산하는 간단한 코드입니다 ■ 지표 리스트 - CREON PLUS 에서 제공하는 모든 계산 가능한 지표 나열■ 계산할 지표를 선택 - 예제에서는 이동평균, Stochastic Slow, MACD, RSI, Binary Wave MACD, TSF 지표 계산 코드가 들어 있습니다. ■ 지표 조건 변경 - 지표 조건을 변경 하는 예제 코드입니다. 지표 계산 로직은 공통으로 만들어서, 다른 지표 계산하는 데도 별 어려움없이 적용 가능합니다.코드를 쉽게 하기 위해, 하이닉스(000660) 종목의 100일치 일간 차트를 먼저 가져온 후 해당 데이터를 이용해 지표를 계산합니다. import sys from PyQt5.QtWidgets impo.. 2018. 6. 6.
[파이썬] 선물 분 차트 그리기(matplotlib) CYBOS PLUS/CREON PLUS API 를 이용하여 간단한 분차트를 그리는 예제 코드입니다 차트는 matplotlib 라이브러리를 이용했습니다 matplotlib 사용방법이 은근히 까다롭네요 화면 좌 상단에는 파생 종목 코드 리스트를 콤보에 넣어 종목을 선택할 수 있게 했습니다. [전체 코드] import datetime import sys import ctypes import time import numpy as np from PyQt5.QtWidgets import * import win32com.client import pandas as pd import os import matplotlib.pyplot as plt from matplotlib.backends.backend_qt5agg im.. 2018. 2. 18.
[파이썬] 지정한 폴더/확장자에서 텍스트 일괄 변경 이번 예제는 지정된 폴더의 특정 확장자를 가진 모든 파일을 열고 변경하고자 하는 텍스트를 모두 찾아 변경 합니다 (일반적인 Replace All 과 동일) 아래 예제는 d:\log 폴더에서 '.log' 확장자를 가진 파일을 대상으로 'text1' 이라는 단어를 찾고 'text2' 로 변경 합니다 (하위 폴더 포함) 예제를 통해 ASCII 파일과 UTF-8 파일 텍스트를 읽고 씁니다. UTF-8 의 경우 codecs의 도움을 받아야 합니다. 우선 ascii 방식으로 읽고 exception 이 나면 utf-8 방식으로 읽도록 했습니다 읽기 전용인 경우 쓰기 가능하도록 변경하고 기록 합니다. file::readlines() 를 이용하면 텍스트 파일을 한번에 list 에 넣어 주기 때문에 파일 읽는 노가다가 상.. 2018. 2. 6.
[파이썬] 파일 옮기기 이번에도 역시 개인적인 니드로 만든 간단 프로그램 다운로드 폴더에 mp3 파일이 생기면 요걸 감시하고 있다가 자동으로 다른 폴더로 옮기는 코드입니다. 네이버 뮤직을 크롬에서 이용중인데 플래시 비활성화로 인해 mp3 내려 받는 폴더를 매번 수동으로 음악 폴더 위치로 옮기기 구찮아서 만든 코드 ^^ import glob import os import time import shutil sorucepath = "d:\\dnld\\" destpath ='D:\\music\\naver\\' while True: fileList = glob.glob("d:\\dnld\\*.mp3") for mp3 in fileList: fname = os.path.basename(mp3) print(fname, mp3) dst_fi.. 2017. 12. 30.
[파이썬] 폴더 크기 구하기 파이썬으로 이것저것 만들고 공부 중입니다 ^^ 얼마 전에 C 드라이브 하드디스크 공간이 없길래, 좀 더 자세히 알고 싶기도 하고 공부 삼아 만들어 봤습니다 (이미 폴더 크기 구하는 프로그램들이 많음에도 ~) 프로그램은 간단합니다. 실행하면 폴더(하위 포함) 크기를 구하고 싶은 드라이브나 폴더를 입력하고 Run 해 주면 됩니다. 결과는 엑셀 파일로 만드는데요 그림처럼 폴더와 파일 2개의 sheet 를 만들고 각 sheet 에 폴더 크기와 파일 크기 역순으로 10,000 개씩 기록 합니다 (너무 많으면 엑셀 파일에 쓰다 죽기도 해서 만개로 제한) 프로그램 코드는 아래와 같습니다 import operator import sys import os from PyQt5.QtWidgets import * import.. 2017. 12. 30.
[AUTOHOTKEY] 특정 위치 마우스 연속 클릭 AutoHotkey 를 잘 배워두면 여러모로 유용하게 써 먹을 일이 많습니다. 특정 위치에 마우스를 연달아 클릭해야 할 경우 손가락과 마우스를 고생 시키지 말고 아래와 같이 간단한 방법으로 처리 가능합니다 ■ 목적 자동으로 마우스 연속 클릭 하기 ■ 코드의 주요 동작 ALT+숫자 6 키 : 마우스 위치를 기억하고 ALT+숫자 7 키 : 위에서 기억한 마우스 위치에 마우스 클릭을 실행(50번 반복) 마우스 연속 클릭을 중단하고 싶다면 ALT + 6 을 다시 눌러 주면 됩니다. ■ AHK 코드(아래 코드를 원하는 파일명.ahk 식으로 저장해서 실행) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 g_run = 0 g_posX = 0.. 2017. 12. 19.
[파이썬] 리스트/딕셔너리 정렬하기 파이썬 리스트와 딕셔너리 간단한 정렬 예제입니다. (나중에 찾기 위해 기록) 리스트는 기본적으로 sort 라는 함수를 가지고 있지만 딕셔너리는 sorted 의 힘을 빌려야 합니다. data2 = sorted(data.items(), key=lambda x: x[1][0], reverse=False) sorted(1st pmt, 2nd pmt, 역순 여부) 1st 인수에 있는 항목들을 하나씩 꺼내서 두 번째 lambda 함수에 파라미터 x 로 대입하고 정렬하는 방식입니다. x[1][0] --> data.items[1][0] 이 되고 아래 예제에서 data.items[1] 은 (key: value) 의 value 에 해당하고 data.items[1][0] 은 결국 value를 이루는 투플의 첫번째 항목이 되.. 2017. 12. 11.