파이썬 키움증권 open api 분할매매 주문하기
import os import json import time import sys from PyQt5.QtWidgets import * from PyQt5.QAxContainer import * from PyQt5.QtCore import * sys.path.insert(0, '"H:/python/kiwoomapi/anaconda3/PACKAGE_DIR') from 키움증권.config.errCode import * from pykiwoom.kiwoom import * kiwoom = Kiwoom() kiwoom.CommConnect(block=True) TR_REQ_TIME_INTERVAL = 0.2 # 주식계좌 accounts = kiwoom.GetLoginInfo("ACCNO") stock_account = accounts[0] # 피라미드 주문 account_num = "계좌번호" item_num = "128540" # 종목명 order_money=5250 #현재가를 변수에 담기 max_order_money=1500000 mom_ea=int(max_order_money/order_money) # 총매매금액 나누기 현재가 = 총매매 수량 rate=0.01 합계=0 sellbuy_ea=[] print("총매매 주식수 : ", mom_ea) print("총매매금액 : ", max_order_money) print("총매매금액 : %s, 현재가 : %s, 총수량 %s" %(max_order_money,order_money,mom_ea)) for i in range(0,10): sellbuy_ea.append(int(mom_ea * rate)) rate = rate + 0.02 합계 = int(int(mom_ea * rate) + 합계) print("총매매 주식수 : ", mom_ea) print("총매매금액 : ", max_order_money) print(order_money*합계,sellbuy_ea) # 0.5% ~ 10%까지의 매수호가/매도호가 생성 sell_m = [] buy_m = [] rate_v = 0.005 for i in range(0, 40): ## 20 = 10%에 대한 매도호가 생성 / 40 = 20%에 대한 매도호가 생성 sell_m.append(order_money + (order_money * rate_v)) buy_m.append(order_money - (order_money * rate_v)) rate_v = rate_v + 0.005 # print("매도호가",sell_m) # 0.5% ~ 10%까지의 폭 ## 호가를 자리수에따라 반올림하면서 정수화 함. buyQ = [] sellQ = [] for i in range(0, len(buy_m)): if buy_m[i] < 1000: buyQ.append(int(round(buy_m[i], 0))) elif buy_m[i] < 5000: buyQ.append(int(round(buy_m[i], -1))) elif buy_m[i] < 10000: buyQ.append(int(round(buy_m[i], -1))) elif buy_m[i] < 50000: buyQ.append(int(round(buy_m[i], -2))) elif buy_m[i] < 100000: buyQ.append(int(round(buy_m[i], -2))) elif buy_m[i] < 500000: buyQ.append(int(round(buy_m[i], -3))) elif buy_m[i] < 1000000: buyQ.append(int(round(buy_m[i], -3))) for i in range(0, len(sell_m)): if sell_m[i] < 1000: sellQ.append(int(round(sell_m[i], 0))) elif sell_m[i] < 5000: sellQ.append(int(round(sell_m[i], -1))) elif sell_m[i] < 10000: sellQ.append(int(round(sell_m[i], -1))) elif sell_m[i] < 50000: sellQ.append(int(round(sell_m[i], -2))) elif sell_m[i] < 100000: sellQ.append(int(round(sell_m[i], -2))) elif sell_m[i] < 500000: sellQ.append(int(round(sell_m[i], -3))) elif sell_m[i] < 1000000: sellQ.append(int(round(sell_m[i], -3))) #print("매도호가:", sellQ, "\n매수호가:", buyQ) print("계좌번호 : %s / 종목번호 : %s\n 주문개수 : %s\n 매수가격 : %s" % (account_num, item_num, sellbuy_ea, buyQ)) #buyQ는 40호가 까지 / sellbuy_ea는 10개까지) kiwoom.SendOrder("피라미드매수", "0101", account_num, 1, item_num, sellbuy_ea[0], buyQ[0], "00", "") kiwoom.SendOrder("피라미드매수", "0101", account_num, 1, item_num, sellbuy_ea[1], buyQ[2], "00", "") kiwoom.SendOrder("피라미드매수", "0101", account_num, 1, item_num, sellbuy_ea[2], buyQ[4], "00", "") kiwoom.SendOrder("피라미드매수", "0101", account_num, 1, item_num, sellbuy_ea[3], buyQ[7], "00", "") kiwoom.SendOrder("피라미드매수", "0101", account_num, 1, item_num, sellbuy_ea[4], buyQ[9], "00", "") kiwoom.SendOrder("피라미드매수", "0101", account_num, 1, item_num, sellbuy_ea[5], buyQ[12], "00", "") print("지정가 매수완료")