develop custom_top_html:no
default debug random = 0 / type = READ / detected = READ
개발
2018-03-12 11:38:25

Python을 사용하여 Web Scraping하기

 

1. 크롤링 예제 대상

1.1. 상장사 리스트

1.2. 네이버 증권 종목분석

  • 네이버 금융에서 제공되는 코스피, 코스닥 상장사들의 재무재표, 주식 메타데이터(Financial Summary) 데이터
  • ex) SK하이닉스
  • 비동기 데이터 (ajax)
  • source : data_crawler/naver_stock_meta_info/crawler.py
  • 저장 : mysql

1.3. 네이버 증권 종목토론

  • 네이버 금융의 각 종목별 종목 토론실 게시판의 날짜, 제목, 투자의견, 글쓴이, 조회, 공감, 비공감, 내용 등 수집
  • 투자의견( 의견없음 매수, 강력매수, 매도, 강력매도, 중립 ) 을 라벨로서 기반하여 제목, 내용에 나타나는 단어를 분석하여 긍, 부정 단어를 확보하기 위한 학습용 데이터로 활용 가능
  • source : data_crawler/naver_stock_discussion/crawler.py
  • 저장 : mongodb

1.4. 네이버 증권 실시간 데이터

  • 장 마감 이후에도 실시간 데이터가 온다면 라이브 코딩

2. 오늘 예제에서 사용되는 Tool, Library

2.1. 상장사 리스트

import urllib2
import bs4
html = urllib2.urlopen(url).read()
len(html)
384272
print html[:1000]
<!doctype html public "-//w3c//dtd html 4.01 transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
 
 
 
 
 
 
   
                <html lang="ko">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=10" />
<title>전종목 시세 - Daum 금융</title>
<meta name="verify-v1" content="iXgHW7UooMcyeiV/Zb0Tk/yK2yB+IuA5/5GgIzGBEns=" >
<meta property="og:image" content="http://i1.daumcdn.net/img-media/mobile/meta/finance.png"/>
<link rel="stylesheet" href="http://s1.daumcdn.net/stock/css/common.css?ver=20160220214249" type="text/css">
<link rel="stylesheet" href="http://s1.daumcdn.net/stock/css/newHeader.css?ver=20160220214249" type="text/css">
<link rel="stylesheet" href="http://s1.daumcdn.net/stock/css/column.css?ver=20160220214249" type="text/css">
<link rel="stylesheet" href="http://s1.daumcdn.net/stock/css/trade.css?ver=20160220214249" type="text/css">
<script type="text/javascript" src="http://s1.daumcdn.net/stock/js/common.js?ve
soup = bs4.BeautifulSoup(html)
title = soup.find('title')
print title
print title.text
<title>전종목 시세 - Daum 금융</title>
전종목 시세 - Daum 금융
 
print len(soup.find_all('td'))
print len(soup.find_all('td','txt'))
1724
571

2.1.1. 기업 개수 미달, HTML파일을 끝까지 파싱하지 못한 상황

  • BeautfulSoup 함수호출시 파서를 ‘html.parser’ 로 지정해줌으로서 해결가능
soup = bs4.BeautifulSoup(html, 'html.parser')
print len(soup.find_all('td'))
print len(soup.find_all('td','txt'))
3580
1189
for i in soup.find_all('td','txt')[:20]:
    print i.text
able KQ Monthly Best 11 ETN
able Monthly Best 11 ETN
able Quant비중조절 ETN
able 우량주 Monthly Best 11 ETN
able 코스피200선물플러스 ETN
AJ네트웍스
AJ렌터카
AK홀딩스
ARIRANG 200
ARIRANG AC 월드(합성 H)
ARIRANG K100EW
ARIRANG KOSPI50
ARIRANG S&P; 배당성장
ARIRANG 고배당주
ARIRANG 단기유동성
ARIRANG 미국고배당주(합성 H)
ARIRANG 바벨 채권
ARIRANG 방어주
ARIRANG 선진국(합성 H)
ARIRANG 스마트베타 LowVOL

2.1.2. URL에서 code 추출

for i in soup.find_all('td','txt')[:20]:
    print i.text, i.a['href']
able KQ Monthly Best 11 ETN /item/main.daum?code=580004
able Monthly Best 11 ETN /item/main.daum?code=580003
able Quant비중조절 ETN /item/main.daum?code=580002
able 우량주 Monthly Best 11 ETN /item/main.daum?code=580005
able 코스피200선물플러스 ETN /item/main.daum?code=580001
AJ네트웍스 /item/main.daum?code=095570
AJ렌터카 /item/main.daum?code=068400
AK홀딩스 /item/main.daum?code=006840
ARIRANG 200 /item/main.daum?code=152100
ARIRANG AC 월드(합성 H) /item/main.daum?code=189400
ARIRANG K100EW /item/main.daum?code=141240
ARIRANG KOSPI50 /item/main.daum?code=122090
ARIRANG S&P; 배당성장 /item/main.daum?code=222170
ARIRANG 고배당주 /item/main.daum?code=161510
ARIRANG 단기유동성 /item/main.daum?code=190160
ARIRANG 미국고배당주(합성 H) /item/main.daum?code=213630
ARIRANG 바벨 채권 /item/main.daum?code=190150
ARIRANG 방어주 /item/main.daum?code=161490
ARIRANG 선진국(합성 H) /item/main.daum?code=195970
ARIRANG 스마트베타 LowVOL /item/main.daum?code=236460
company_dic = {}
for i in soup.find_all('td','txt'):
    company_dic[i.text] = i.a['href'].split('=')[1]
print len(company_dic)
company_dic[u'AK홀딩스']
1189
 
 
 
 
 
u'006840'

2.1.3. 위 과정 함수화시켜 kosdaq도 간편히 가져와보기

def get_company_list(url):
    soup = bs4.BeautifulSoup(urllib2.urlopen(url).read(),'html.parser')
    company_dic = {}
    for i in soup.find_all('td','txt'):
        company_dic[i.text] = i.a['href'].split('=')[1]
    return company_dic
 
kosdaq_dic = get_company_list(kosdaq_url)
for k, v in kosdaq_dic.items()[:20]:
    print k, v
이테크건설 016250
해덕파워웨이 102210
산성앨엔에스 016100
엔에이치스팩5호 215790
서부T&D; 006730
이스트아시아홀딩스 900110
웰크론 065950
아이리버 060570
대주산업 003310
우리이티아이 082850
흥국에프엔비 189980
CS 065770
시그네틱스 033170
성우전자 081580
신진에스엠 138070
바이오스마트 038460
동양이엔피 079960
심엔터테인먼트 204630
피제이메탈 128660
한창산업 079170

2.1.4. pymysql 을 이용한 mysql 세팅 및 db insert(replace)

import pymysql # pip install pymysql
mysql_host = "127.0.0.1"
mysql_user = "root"
mysql_passwd = "mysql"
mysql_db = "stock"
mysql_port = 3306
conn = pymysql.connect(host=mysql_host, user=mysql_user, passwd=mysql_passwd, db=mysql_db, port=mysql_port, charset='utf8')
conn.autocommit(True)
cur = conn.cursor()
 
'''
CREATE TABLE `COMPANY2` (
  `company_id` varchar(11) NOT NULL DEFAULT '',
  `company_name` varchar(255) DEFAULT '',
  `company_type` tinyint(10) DEFAULT NULL,
  PRIMARY KEY (`company_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
'''
 
for k,v in kosdaq_dic.items():
    cur.execute("replace into COMPANY2 (company_id, company_name, company_type ) values ('{}', '{}', '{}')".format( v.encode('utf-8'), k.encode('utf-8'), 0 ))
 
for k,v in company_dic.items():
    cur.execute("replace into COMPANY2 (company_id, company_name, company_type ) values ('{}', '{}', '{}')".format( v.encode('utf-8'), k.encode('utf-8'), 1 ))
cur.execute("""select * from COMPANY2""")
cur_tmp = cur.fetchall()
for i in cur_tmp[:10]:
    print i[0], i[1], i[2]
000020 동화약품 1
000030 우리은행 1
000040 KR모터스 1
000050 경방 1
000060 메리츠화재 1
000070 삼양홀딩스 1
000075 삼양홀딩스우 1
000080 하이트진로 1
000087 하이트진로2우B 1
000100 유한양행 1

2.2. 네이버 증권 종목분석

  • 네이버 금융에서 제공되는 코스피, 코스닥 상장사들의 재무재표, 주식 메타데이터(Financial Summary) 데이터
  • ex) SK하이닉스
  • 비동기 데이터 (ajax)
  • source : data_crawler/naver_stock_meta_info/crawler.py
  • 저장 : mysql
import requests
import urllib
import bs4
import json
import re
import crawlib
import datetime
import sys
import crawlib
import pymysql # pip install pymysql
mysql_host = "127.0.0.1"
mysql_user = "root"
mysql_passwd = "mysql"
mysql_db = "stock"
mysql_port = 3306
conn = pymysql.connect(host=mysql_host, user=mysql_user, passwd=mysql_passwd, db=mysql_db, port=mysql_port, charset='utf8')
conn.autocommit(True)
cur = conn.cursor()
def extract_table(html):
    soup = bs4.BeautifulSoup(html)
    th = soup.find_all("th","title")
    vertical_columns = [i.text.strip() for i in th]
 
    bg = soup.find_all("th",re.compile(r"^r"))[2:]
    horizon_columns = [crawlib.getOnlyDigit(i.text.strip()) for i in bg]
 
    cBk = [int(crawlib.getOnlyDigit(i.text)) for i in soup.find_all("td","num")]
 
    # colums_count_check
    if len(cBk) != (len(vertical_columns) * len(horizon_columns)):
        print(error)
        sys.exit()
       
    return vertical_columns, horizon_columns, cBk
 
 
def request_and_store(company_code, freq_typ, fin_typ=0):
    company_code = str(company_code).zfill(6)
    # zero padding 6
    print url
    headers = {
        'Accept-Language' : 'ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4',
        'Accept-Encoding' : 'gzip, deflate, sdch',
        'X-Requested-With' : 'XMLHttpRequest',
        'Connection' : 'keep-alive',
        'Accept' : 'text/html, */*; q=0.01',
        'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 Safari/537.36',
        'Host' : 'companyinfo.stock.naver.com',
    }
    cookies = {
    }
    data_dic = {
    #     'freq_typ' : '''Y''',
    #     'fin_typ' : '''0''',
    #     'cmp_cd' : '''051910''',
    }
    data = ""
    for k, v in data_dic.items():
        data += urllib.quote_plus(k)+"="+urllib.quote_plus(v)+"&"
    res = requests.post(url, headers=headers, cookies=cookies, data=data)
    vertical_columns, horizon_columns, cBk = extract_table(res.content)
 
    cnt = 0
    print len(cBk)
    for value in cBk:
        vertical_i = cnt / len(horizon_columns)
        horizon_i = cnt % len(horizon_columns)
#         print vertical_columns[vertical_i], horizon_columns[horizon_i]
#         print value
        try:
            cur.execute("""replace into META (company_id, meta_type, meta_freq_type, meta_value, meta_date, meta_crawled_date ) values ('{}', '{}', '{}', '{}', '{}', '{}')""".format(
                    company_code, vertical_columns[vertical_i].encode("utf-8"), freq_typ , value, datetime.datetime.strptime(horizon_columns[horizon_i],"%Y%m"), datetime.datetime.now())
                        )
        except Exception as e:
            print e
        cnt += 1
    print cnt
cur.execute("""select * from COMPANY2""")
cur_tmp = cur.fetchall()
for i in cur_tmp[:3]:
    request_and_store(i[0],'Q')
    request_and_store(i[0],'Y')
256
256
256
256
256
256
256
256
256
256
256
256

2.3. 주기적 실행, 자동화

2.4. 네이버 증권 종목토론

  • 네이버 금융의 각 종목별 종목 토론실 게시판의 날짜, 제목, 투자의견, 글쓴이, 조회, 공감, 비공감, 내용 등 수집
  • 투자의견( 의견없음 매수, 강력매수, 매도, 강력매도, 중립 ) 을 라벨로서 기반하여 제목, 내용에 나타나는 단어를 분석하여 긍, 부정 단어를 확보하기 위한 학습용 데이터로 활용 가능
  • source : data_crawler/naver_stock_discussion/crawler.py
  • 저장 : mongodb
import logging
import pymongo
import crawlib
import time
from datetime import datetime
from gevent import monkey
monkey.patch_all()
from gevent.pool import Pool
 
collection = pymongo.MongoClient().stock.naver_discussion
 
class NaverCrawling(crawlib.Crawling):
    def get_item_list(self, cate, page):
        url = self.make_target_url(cate, page)
        soup = crawlib.getSoup(url)
        link_list = []
        for i in soup.find_all('tr',{'onmouseover':'mouseOver(this)'}):
            link = i.find_all('td')[1].a['href'].split('&st=&sw=&page')[0]
            link = crawlib.urljoin('http://finance.naver.com',link)
 
            # already exist this data
            if self.data_dic.has_key(link):
                print "exist", link
                continue
 
            self.data_dic[link] = {}
            self.data_dic[link]['date'] = i.find_all('td')[0].text.strip()
            self.data_dic[link]['title'] = i.find_all('td')[1].a['title'].strip()
            self.data_dic[link]['opinion'] = i.find_all('td')[2].text.strip()
            self.data_dic[link]['view'] = i.find_all('td')[4].text.strip()
            self.data_dic[link]['sympathy'] = i.find_all('td')[5].text.strip()
            self.data_dic[link]['unsympathy'] = i.find_all('td')[6].text.strip()
            self.data_dic[link]['_id'] = link
 
            link_list.append(link)
            # self.get_item(link)
 
        if len(link_list) == 0:
            return 'stop'
 
        pool = Pool(len(link_list))
        res = pool.map(self.get_item, link_list)
 
    def get_item(self, url, key=''):
        if not key:
            key = url
        soup = crawlib.getSoup(url)
        content = '\n'.join([i.text for i in soup.find_all('div','view_se')]).strip()
        user = soup.find('th','info').find('span').text.strip()
        nid = crawlib.get_param_from_url(url, 'nid')
        code = crawlib.get_param_from_url(url, 'code')
 
        self.data_dic[key]['content'] = content
        self.data_dic[key]['nid'] = nid
        self.data_dic[key]['code'] = code
        self.data_dic[key]['user'] = user
 
        print key, self.data_dic[key]['opinion']
        # runtime_check = time.time()
        collection.replace_one({"_id": key}, self.data_dic[key], upsert=True)
        # print time.time() - runtime_check
 
 
    # todo: mongo db library 화
    # todo: 최신글부터 가져오되 몇개이상(한페이지이상)  중복 감지시 stop
 
 
target_name = 'naver_stock_discussion'
naver_dicussion = NaverCrawling(target_name=target_name, base_url='http://finance.naver.com/item/board.nhn?', cate_param='code',
                                page_param='page', cate_list_path='category.txt', page_list=range(1, 1000))
 
 
naver_dicussion.crawling_cate_list(cate_delay=0, page_delay=0)
# 결과는 console 에서 확인

2.5. 네이버 증권 실시간 데이터

res = crawlib.har2requests('finance.naver.com.har') # 각자 크롬 개발자도구통해 받은 har 파일 경로 입력
# print res # 아래 코드 생성
import requests
import urllib
import json
from pprint import pprint
headers = {
    'Accept-Language' : 'ko-KR,ko;q=0.8,en-US;q=0.6,en;q=0.4',
    'Accept-Encoding' : 'gzip, deflate, sdch',
    'Connection' : 'keep-alive',
    'Accept' : '*/*',
    'User-Agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',
    'Host' : 'polling.finance.naver.com',
}
cookies = {
}
data_dic = {
}
data = ""
for k, v in data_dic.items():
    data += urllib.quote_plus(k)+"="+urllib.quote_plus(v)+"&"
res = requests.post(url, headers=headers, cookies=cookies, data=data)
res_str = res.content.decode('euc-kr').encode('utf-8')
res_json = json.loads(res_str)
pprint(res_json)
{u'result': {u'areas': [{u'datas': [{u'aa': 37807000000,
 
                                    
u'aq': 59460,
 
                                    
u'cd': u'035420',
 
                                    
u'cnsPer': 31.27,
 
                                    
u'cr': 0.47,
 
                                    
u'cv': 3000,
 
                                    
u'hv': 642000,
 
                                    
u'll': 446000,
 
                                    
u'lv': 630000,
 
                                    
u'ms': u'CLOSE',
 
                                    
u'mt': u'1',
 
                                    
u'nav': None,
 
                                    
u'nm': u'NAVER',
 
                                    
u'nv': 639000,
 
                                    
u'ov': 633000,
 
                                    
u'pbr': 8.78,
 
                                    
u'pcv': 636000,
 
                                    
u'per': 40.6,
 
                                    
u'rf': u'2',
 
                                    
u'sv': 636000,
 
                                    
u'tyn': u'N',
 
                                    
u'ul': 826000}],
 
                        
u'name': u'SERVICE_RECENT_ITEM'},
 
                       
{u'datas': [{u'aa': 37807000000,
 
                                    
u'aq': 59460,
 
                                    
u'cd': u'035420',
 
                                    
u'cnsPer': 31.27,
 
                                    
u'cr': 0.47,
 
                                    
u'cv': 3000,
 
                                    
u'hv': 642000,
 
                                    
u'll': 446000,
 
                                    
u'lv': 630000,
 
                                    
u'ms': u'CLOSE',
 
                                    
u'mt': u'1',
 
                                    
u'nav': None,
 
                                    
u'nm': u'NAVER',
 
                                    
u'nv': 639000,
 
                                    
u'ov': 633000,
 
                                    
u'pbr': 8.78,
 
                                    
u'pcv': 636000,
 
                                    
u'per': 40.6,
 
                                    
u'rf': u'2',
 
                                    
u'sv': 636000,
 
                                    
u'tyn': u'N',
 
                                    
u'ul': 826000}],
 
                        
u'name': u'SERVICE_ITEM'}],
 
            
u'pollingInterval': 60000,
 
            
u'time': 1458441607440},
 

u'resultCode': u'success'} 

 

 

 

 

 

 

 

 

 

-------------------------------------

꼬리말

* 게시글 내용 삭제레벨 강등

* 질문은 각 주제별 게시판에.

 

비트코인 암호화화폐 커뮤니티 땡글~ 땡글~

-------------------------------------

191
댓글 0
default debug random = 0 / type = READ / detected = READ

List of Articles
번호 분류 제목 추천 수 조회 수 글쓴이 날짜
1000 개발 화웨이, 블록체인 서비스 성능 테스트 툴 공개   http://news.naver.com/main/read.nhn?mode=LSD&amp;mid=shm&amp;sid1=105&amp;oid=092&amp;aid=0002133284     화웨이에서 블록체인의 성능을 테스트 할 수 있는 툴을 공개했다고 하네요.. 블... 0 1288
바보쿠우
2018.03.16
999 개발 geth 1.8.3 버전에서 mist(wallet) 실행 ㅠ_ㅠ       이더리움 깃허브에 있는대로 따라하는데도 꽤 시간이 걸리네요ㅠㅠ 우분투(리눅스)도 낯설고..이더리움은 어떻게 구성(?) 되어 있는지도 모르고,, 그저 따라만 하는데도 에러도 나고,,제대... file 0 725
바보쿠우
2018.03.14
998 질문 요즘 빗썸 API로 balance 정보 가져오는 거 괜찮나요? (JsonDecoderError 발생)     예전에 All을 하는 경우만 JsonDecoderError가 자주 발생했는데..    며칠전부터는 개별 coin도 계속 자주 발생을 하네요.  (3/12일부터 발생하고 있음)    다른 분들은 어떠신가요?        ... 2 0 780
hbled
2018.03.14
997 질문 이더리움 mist 브라우저 실행 질문 드려요 안녕하세요..초보 코린이 입니다. 이더리움 미스트 브라우저 실행시 질문이 있어 글을 남깁니다.   우선 테스트 환경은 아래와 같습니다. os : 우분투 16.04 버전 geth : 1.8.2 버전 mist : 최신... 5 file 0 1112
바보쿠우
2018.03.14
996 개발 1라운드 오픈!   최근에 이더리움 로또 사이트를 만들었습니다. 0.001 ETH 당 순번이 적힌 복권 1장을 지급합니다. 추첨 시간이 되면 즉시 1등을 뽑고 상금을 지급하는 복권 서비스입니다.                   39 file 8 4097
초밥매니아
2018.03.14
995 개발 "TESTNET" - 암호화폐의 또 다른 공간   안녕하세요. DunkPay.com입니다. 몇몇 분들이 암호화폐 테스트 관련해서 질문을 주셔서 시간을 내서 정리해 봅니다. &quot;암호화폐 전송테스트를 맘편히 하고 싶은데 수수료가 부담되시나요?&quot; 그렇... 3 file 2 2441
비트코인요
2018.03.14
994 개발 삭제한 글입니다 삭제한 글입니다 file 1 2112
엑차
2018.03.14
993 질문 혹시 stocks.exchange 사이트 api 가져올수 있을까요~!? 해외 사이트 보기도 어렵고 필요한것만 몇개 시세 좀 볼까하는데용   바이낸스랑 비트렉스는 되는 거같은데   스톡스 익스체인지는 아무리해도 안되는거 같아서용&gt;.&lt;   API 가져올수있는 방법 아... 4 0 784
놀고싶어요
2018.03.14
992 개발 자작 펌핑감지/오토트레이딩 프로그램  직접 만들었습니다.    급상승구간 캐치시 구매하고 하락할때 팔게만 만들려다가 좀 복잡하게 만들었네요 ㅎㅎ    제작기간은 2주가량 걸렸구요    빗썸 API 이용해서 만들었습니다    유튜브 ... 4 file 2 3311
빗썸쟁이
2018.03.13
991 개발 마이닝풀허브 난이도 가져오려는데     json 형태로 값 주는 api는 없을까요? 찾아봤는데 못찾겠어요 ㅠㅠ           ------------------------------------- 꼬리말 * 게시글 내용 삭제시 레벨 강등 * 질문은 각 주제별 게시판에.... 2 0 643
호야핑
2018.03.13
990 질문 빗썸 api 접수 실패   현재 빗썸 api 이용해서 주문 내보고 있습니다. 그런데 주문을 내면 절반이상은 에러코드 5100이나 5600이 나옵니다. 원래 이렇게 주문접수시 실패 확률이 높은가요?                       --... 3 0 853
다른동네
2018.03.13
989 개발 코인개발 강의 합니다. 저 강의를 해볼까 합니다. 제가 하나 만들어서 런칭한 겁니다.   bitcoinessence.org    bitcoinessence.info   라이트코인 0.8 버전 기반으로 클론한 겁니다.    강의내용은 자기만의 코인을 만... 1 0 1472
creator
2018.03.13
988 개발 완전 자동화된 트레이딩 시스템 아키텍쳐   For the last 6 months I have been focused on the process of building the full technology stack of an automated trading system. I have come across many challenges and learnt a grea... 1 0 1515
maru16
2018.03.12
987 개발 Quandl에서 가상화폐 가격 데이터 가져오기 참조   DATA ORGANIZATION Quandl's data products come in many forms and contain various objects, including time-series and tables. Through our APIs and various tools (R, Python, Excel, et... 0 776
maru16
2018.03.12
개발 Python을 사용하여 Web Scraping하기   1. 크롤링 예제 대상 1.1. 상장사 리스트 http://finance.daum.net/quote/all.daum?type=S&amp;stype=P bs4 사용 방법 소개 HTML 1.2. 네이버 증권 종목분석 네이버 금융에서 제공되는 코스피,... 2 5043
maru16
2018.03.12
985 개발 pandas으로 주식 시세 확인 및 이동평균선 구하기   판다곰(pandas)으로 주식 시세 확인 및 이동평균선 구하기 Posted on 7/21/2015 07:42:00 오후 by 김주훈 with No comments 분석 라이브러리인 판다스(Pandas)를 통해서 주식 시세를 확인 하고... 0 2320
maru16
2018.03.12
984 개발 python 백테스팅 환경인 backtrader에 대한 소개 입니다   python 백테스팅 환경인 backtrader에 대한 소개 입니다.     https://www.backtrader.com/docu/introduction.html Introduction Backtrader is Python based backtesting/trading platform fo... 1 0 2120
maru16
2018.03.12
983 질문 빗썸 API로 자동매매 - json 에러 문제         안녕하세요?   파이썬으로 빗썸 자동매매 프로그래밍을 시도해 보고 있는 초보 개발자 입니다. 빗썸 api를 사용하다가 발생하는 json 에러 관련해서 여쭤보려고 합니다.   일단 프로그램... 6 0 1841
맑은칡즙
2018.03.11
982 개발 코인원 트레이딩 도우미 (베타버전)   안녕하세요 트레이딩봇이 아닌 트레이딩도우미 라고 이름 지은 이유는 자동 매수기능이 빠져 있기 때문 입니다. 사실 처음에는 자동 매수 기능까지 있었는데 사용해본 대부분의 로직이 마음에 ... 3 file 1 1803
이사이사
2018.03.11
981 개발 김치프리미엄 사이트를 오픈하였습니다 [엑스차트 v.beta 2.0] 땡글러 여러분 안녕하세요, 엑차입니다.   이번 x-chart 사이트 개편과 함께 김치프리미엄 차트를 오픈하였습니다.   세계시세(코인마켓캡)를 기준으로로, 국내 주요 5개 거래소-코인별 가격과 (... 7 file 7 4785
엑차
2018.03.11
Board Pagination Prev 1 ... 38 39 40 41 42 43 44 45 46 47 ... 92 Next
/ 92
default debug random = 0 / type = READ / detected = READ