[암호화폐] 프로젝트#1 : 업비트 지정가 자동 매수/매도하기[3]

Words
275
Reading
2 min
Listen
Play
7y

업비트 지정자 자동 매수/매도 프로그램을 개발 중입니다. 오늘은 세 번째 이야기입니다.

주문 현황 만으로 얼마에 몇 개나 매매가 되었는지 파악하기 위한 자료 구조와 알고리즘을 만들고 있습니다. 일부만 체결이 될 수도 있고, 거래가는 가격대도 다양하게 동시에 지원하려고 하다보니, 구조를 잡는데 시간이 많이 걸리고 있습니다. 기본 안은 나와있으니, 좀 더 시물레이션을 해 보면서 문제점을 찾고 있습니다.

자동 매매 프로그램이 가져야 할 중요한 기능 중의 하나는 프로그램이 죽지 않아야 합니다. 그런데 죽지 않는 프로그램을 만들기가 상당히 어렵습니다. 왜 죽는지 알면 대응을 하지만 예상하지 못한 경우가 항상 생기기 때문이죠.

이런 경우에 가장 쉽게 대응하는 방법이 프로그램이 죽으면 다시 실행시키는 겁니다. 다시 실행시키는 프로그램이 죽으면 어떻게 하냐고요? 다시 실행시키는 프로그램을 다시 실행시키면 됩니다. :)


파이썬에서 특정 프로그램이 동작하지 않으면 다시 실행시키는 방법입니다. 방법은 간단합니다. 파이썬 패키지 중 subprocess에 있는 call이라는 함수를 부르면 됩니다.

import os 
import time 
from subprocess import call

while(1) :
    call("python forever.py")

forever.py에 계속 돌리고 싶은 파일명을 적어 넣으면 됩니다. call 함수가 하는 일은 forever.py가 동작 중이면 가만히 있다가 동작하지 않으면 다시 ()안에 있는 문장을 실행시켜 forever.py를 동작시키는 일을 합니다.


다음으로 필요한 일은 프로그램이 실행되었을 때 이전 상태를 기억하는 것입니다. 이것을 위하여 json 데이터를 파일에 읽고 쓰는 방법이 필요합니다. 이것도 사용 방법은 간단합니다. 저장할 데이터가 변경되는 시점에 save_to_file_json() 함수를 부르면 됩니다. 프로그램이 처음 기동될 때는 load_from_json() 함수를 이용하여 저장되어 있는 데이터를 읽어오면 됩니다.

import json
import os

def save_to_file_json(file_name, data) :
    with open(file_name,'w',encoding="utf-8") as make_file: 
       json.dump(data, make_file, ensure_ascii=False, indent="\t") 

def load_from_json(file_name) :
    with open(file_name,'r',encoding="utf-8") as make_file: 
       data=json.load(make_file) 
    return data

json_data = {"symbol":'SCT', "price":1.0}

file_name = 'test.json'
save_to_file_json(file_name, json_data)
infos = load_from_json(file_name)
print("here")

이것으로 개발을 위한 기본 단계는 마무리가 되었습니다. 매매가 잘 동작할 수 있도록 간단하면서도 효율적으로 동작하는 알고리즘을 개발하는 일만 남았습니다.

[암호화폐] 프로젝트#1 : 업비트 지정가 자동 매수/매도하기[3] | Ecency