Automatic trader program base on upbit openAPI wrapping by pyupbit package
Upbit Developer Center · Pyupbit Github
CLI Total price | CLI Individual price |
---|---|
GUI Main | GUI Own list |
git clone https://github.com/showmethecoin/upbit-trader
cd upbit-trader
cp config.yaml.example src/config.yaml
# config.yaml.example
# Unnecessary edit
LOG:
FORMAT: '[%(asctime)s.%(msecs)03d: %(levelname).1s %(filename)s:%(lineno)s] %(message)s'
PATH: upbit-trader.log
PRINT: BOOLEAN_PRINT_LOG # True/False
SAVE: BOOLEAN_SAVE_LOG # True/False
# Necessary edit
MONGO:
ID: MONGO_ACCOUNT_ID
IP: MONGO_IP
PASSWORD: MONGO_ACCOUNT_PASSWORD
PORT: MONGO_PORT
UPBIT:
ACCESS_KEY: INPUT_YOUR_UPBIT_ACCESS_KEY
SECRET_KEY: INPUT_YOUR_UPBIT_SECRET_KEY
STRATEGY:
TYPE: STRATEGY_TYPE # VolatilityBreakout/VariousIndicator
MAX_INDIVIDUAL_TRADE_PRICE: FIAT_WON # 5000<WON
PROGRAM:
GUI: BOOLEAN_USE_GUI # True/False
pip install -r requirements.txt
cd src
python main.py
It must build successfully
cd src
python setup.py bdist_msi
It must build successfully but it cannot run normally
cd src
python setup.py bdist_app
들여쓰기를 할 때 Tab 대신 공백(Space)을 사용한다. 특히 Python 3는 Tab과 공백을 혼용해서 사용하는 것을 허용하지 않는다. 단 VSCode에서의 Tab은 공백 4개로 대체됨
문법적으로 들여쓰기를 할 때는 4개의 공백을 사용한다
각 라인은 79자 이하로 한다. 라인이 길어서 다음 라인으로 넘어갈 때는 원래 들여쓰기 자리에서 4개 공백을 더 들여쓴다
함수나 클래스는 2개의 공백 라인을 추가하여 구분한다. 메서드는 한 개의 공백 라인으로 구분한다
import는 (여러 모듈을 콤마로 연결하지 말고) 한 라인에 하나의 모듈을 import한다
No:
import os, sys
Yes:
import os
import sys
컬렉션 인덱스나 함수 호출, 함수 파라미터 등에서 불필요한 공백을 넣지 않는다
No:
spam( ham[ 1 ], { eggs: 2 } )
bar = (0, )
spam (1)
Yes:
spam(ham[1], {eggs: 2})
bar = (0,)
spam(1)
변수 할당시 할당자 앞뒤로 하나의 공백만 넣는다
No: i=i+1
Yes: i = i + 1
예: total_numbers
예: CoreClass
예: serial_reader
예: MAX_COUNT = 100
예: name
예: _initialized
예: __private_var
예: def copy(self, other):
예: def clone(cls, other):
if, for, while 블럭 문장을 한 라인으로 작성하지 말 것
여러 라인에 걸쳐 사용하는 것이 더 명료함
No:
if a < 0: a = 0
Yes:
if a < 0:
a = 0
a는 b가 아니다를 표현할 때 a is not b 를 사용한다
not a is b 를 사용하지 말 것
No: if not a is b
Yes: if a is not b
값이 비어있는지 아닌지를 검사하기 위해 길이를 체크하는 방식을 사용하지 말 것
대신 if mylist 와 같이 표현함
No: if len(mylist) == 0
Yes: if not mylist
No: if len(mylist) > 0
Yes: if mylist
import 문은 항상 파일의 상단에 위치하며, 표준 라이브러리 모듈, 3rd Party 모듈, 그리고 자신의 모듈 순으로 import 한다
import os
import numpy
import mypkg
모듈 import시 절대 경로를 사용할 것을 권장한다
예를 들어, sibling 모듈이 현재 모듈과 같은 폴더에 있더라도 패키지명부터 절대 경로를 사용함
단, 복잡한 패키지 경로를 갖는 경우 상대경로(.)를 사용할 수 있다
No:
import sibling
Yes:
import mypkg.sibling
from mypkg import sibling
from . import sibling # 상대경로
from .sibling import example