850 likes | 983 Views
12-1 개 선물사 = 32-2 개 서버. Main+sub 는 한 서버에서 Savejnl , rth , iqr , app_d , prp_d , vcs 가 모두 작동함. 금사닥. 궐련 – chamtime 1, 2, 3( 백업 : main+sub ) 관통 – 신 1, 신 2, 구 1( 관통 - Main) ( 백업 : main + sub) 초상 – 1, 2 중융 – 1, 2 중강 – 1, 2. Main Savejnl , rth , iqr , app_d , prp_d.
E N D
12-1개 선물사= 32-2개 서버 Main+sub는 한 서버에서 Savejnl, rth, iqr, app_d, prp_d, vcs 가 모두 작동함 금사닥 궐련 – chamtime 1, 2, 3(백업 : main+sub) 관통 – 신1, 신2, 구1(관통-Main) (백업: main + sub) 초상 – 1, 2 중융– 1, 2 중강– 1, 2 Main Savejnl, rth, iqr, app_d, prp_d 12-2개 Sub Savejnl, rth, vcs 항생 중신 – 1, 2 중항– 1, 2 32-2개 4개 Real 1 Real 2 CTP Test 서버 있는 곳 중신 화태 중항 흥업 – 1, 2 국제(화원) – 1, 2, 3, 4 화태– 1, 2 창원 – 1, 2, 3, 4 동증(장강)– 1, 2, 3, 4 16개
서버초기화 시간 금사닥 궐련 – chamtime 1(8:42, 20:42), 2(8:40, 20:40), 3(8:42, 20:42)(백업 : main+sub) 관통 – 신1(8:42, 20:42), 신2(8:40, 20:40), 구1(8:42, 20:42)(관통-Main) (백업: main + sub) 초상 – 1, 2 중융– 1(8:42, 20:42), 2(8:40, 20:40) 중강– 1(8:42, 20:42), 2(8:40, 20:40) 항생 중신 – 1(8:42, 20:42), 2(8:40, 20:40) 중항– 1(8:42, 20:42), 2(8:40, 20:40) CTP Test 서버 있는 곳 중신 화태 중항 흥업 – 1(8:25, 20:32), 2(8:20, 20:30) 26분, 36분 국제(화원) – 1(8:25, 20:32), 2(8:20, 20:30), 3(8:35, 20:42), 4(8:30, 20:40) 화태– 1(8:25, 20:32), 2(8:20, 20:30) 창원 – 1(8:35, 20:32), 2(8:30, 20:30), 3(8:35, 20:42), 4(8:30, 20:40) 43분 동증(장강)– 1(8:25, 20:32), 2(8:20, 20:30), 3(8:25, 20:32), 4(8:20, 20:30)
8월 14일 1. 시세 2. 거래주문 응답 투자자들 선물거래소 선물사 (회원사) 요청 선물 거래소(sever)에서 api, tr을 결정 선물사(회원사) 선물거래소 Tr api 투자자들 Api벤더 회사 서버
선물사의 수익 = 고객의 구매결제 수수료 선물사의 종류 1. 특정지역을 거점으로 하는 작은 선물사 2. 광범위한 지역을 총체적으로 서비스하는 거대 선물사 선물사는 Api에 관심없음, 돈만 벌으면 됨 특정지역을 거점으로 하는 선물사는api를 생각할 여력이 없음 선물사(회원사) CTP 금사닥 항생 선물사는 여러 벤더를 선택하여 사용할 수도 있음 tick : quote서버에서 받은 시세정보
tick Tick(quote 서버에서 온 시세정보)을 시세로 볼 수도 있고 전체 그래프를 시세로 볼 수 있음
선물사 투자자 선물 거래소 벤더 프로그램 회사 서버 클라이언트 프로그램 파싱, 해석 외부 ip 내부 ip
벤더에 따라 우리 서버와 연결 구조가 다름 B2B(business to business) 회사 <-> 한 회사가 대표 <-> 여러 개인 B2C(business to custom) 회사 <-> 여러 개인 고객들 b2b 인증절차 거침 인증절차 없음 벤더 회사 서버 고객들 b2c 인증절차 거침 벤더
회사 서버의 주요기능 1. Tick정보를 저장 2. 예전 정보를 고객들에게 보여주도록 함 3. 고객과 선물사 사이에서 주문과 체결의 정보 통로의 역할을 함 서버나 고수는 처음 시작시 아무런 정보가 가지고 있지 않아서 맨 처음 초기화 작업은 기본이 되는 선물사별 종목의 월물을 가져오는 것부터 시작함 그리고 그 가져온 정보를 토대로 저장할 공간을 미리 예측하여 잡아 놓음
<금사닥 구조>B2B 벤더가 order/push서버, quote서버를 한 개씩 가지고 있음 Order와 push는 한 서버 안의 각각의 프로세스로 볼 수 있음 각각의 포트번호는 다름 (정확한 것은 아님, 추측임) 벤더 30개의 쓰레드로 연결 Order/ push 서버 고수 프로그램 order 서버 App_d Quote Delta server gaoshou Order 서버 Order / push push 서버 모든 연결은 항상 연결되어 있음 (쓰레드로 연결) Order 서버 역할 1. 주문된 정보를 delta 서버에서 order로 보냄 2. 처리상태(api)를 delta 서버에 알려줌 Push 서버 역할(delta 서버로 보내는 역할만 함) 처리상태(api)를 delta서버에 알려줌 Quote 서버 역할 주문 시세에 대한 요청을 delta 서버에서 받음 주문 시세에 대한 정보를 delta 서버로 보냄 quote 서버
<금사닥 구조>B2B 벤더 Order/ push 서버 고수 프로그램 Quote Delta server gaoshou Order 서버 Order / push push 서버 계좌 로그인 과정 있음 계좌로그인 과정 없음 quote 서버
Order 서버, push 서버, quote서버 역할은 금사닥 구조와 같음 Centos 6.x버전 이상에서 가동가능 고수 프로그램 <CTP 구조>B2C 벤더 금사닥용gaoshou Order/ push 서버 Quote Order/push Order 서버 CTP GCE Dll파일 금사닥<-> CTP변환모듈 push 서버 Delta server Quote 모든 연결은 항상 연결되어 있음 (쓰레드로 연결) 하지만 빨간색으로 연결된 연결은 필요할 때만 연결 빨간색 연결은 서버간 부수적 기능을 위해 연결 quote 서버
Order 서버, push 서버, quote서버 역할은 금사닥 구조와 같음 <항생 구조>B2B 벤더 Delta server 고수 프로그램 Order/ push 서버 프로세스 Order 서버 금사닥용gaoshou App_d Quote Order push Order push 서로 다른 내부 포트끼리 네트워크로 연결됨 push 서버 프로세스 HS GCE App_d와 gce간의 30개의 쓰레드 연결 변환기 App_d <-> HS GCE quote 서버 모든 연결은 항상 연결되어 있음 (쓰레드로 연결)
회사 내부에서 사용하는 프로세스 간에는 거의 공유메모리로 연결됨 ----------------------------------------------------------------------------------- 8월 15일 1. quote서버와 order서버로 부터 tick(시세 + 종목)의 정보를 받아 파싱하여우리 서버 내에서 사용 가능한 형태로 변환하여 공유메모리에 저장, 마스터 정보를 만듬 2. 시스템 내부에서 사용 가능한 형태로 변환하여 내부로 전달 3. 시스템 내부로 전달시db를 참조하여 선물사의종목마다 전날에 가장 거래량이 많았던 월물을 연결선물로 표시하고 이 정보를 전달 rth 공유메모리 (구조체) 시세서버로부터 받은 시세정보와 Order서버로부터 받은 마스터정보(종목정보)를 저장하고 있음 *.mst 종목 마스터 파일 고수 프로그램(사용자 프로그램)에서 마스터정보(종목정보)를 요청하므로 이 정보가 만들어지게 됨
공유메모리 (구조체) sup 종목 마스터 파일 1. 마스터 정보(종목 정보)파일을 요청 고수 프로그램 VCS 2. SUP의 마스터 정보(종목 정보)파일을 가지고 와서 고수프로그램으로반환
연결선물(가상종목)– 1. 월물8888 – 어제 전일 미결제 약정 개수가 가장 큰 것 2. 월물9999 - 어제(과거) 거래되었던 정보, 사용자들은 이 정보를 통해 종목의 흐름과 예측을 하는데 사용함 예) 금1308 (2013년 8월 금 월물) 금9999 <- 어제 금에 대한 거래가 가장 활발한 했던 때의 정보를 나타냄 9999(월물의 연결선물에 해당하는 번호) Order서버에서는 현재의 상황만 보내줌 rth는 모든 선물사의 종목에 대한 tick정보를 받음 Tick = order서버에서 종목 정보 + quote서버에서 시세정보 지금까지 받은 데이터를 db에서 분석하여 (db에 지금까지 모든 시스템 내부 형식으로 변환된 tick 정보가 저장되어 있음) 선물사의 종목별로 어제 가장 거래량이 활발한 월물을 알아냄 찾아낸 월물= 연결선물
Crontab의 마지막 작업(db프로시저) 월물8888을 만듬 월물8888 (전일 미결제 약정 개수가 가장 큰 것) 월물8888의 특징 1. 역전을 허용x 어제 월물8888 = ag1308 오늘 월물8888 = ag1309 내일 월물8888 = ag1308(x) 2. 갭차이를 없애줌(끊어지지 않고 이어져 보이게 함) 이전의 db내용을 갭차이만큼+거나 –를 해서 정보가 이어져 보이게 함 갭차이 갭차이를 없애 이어보이도록 함
rth가 종목 마스터 파일은 공유메모리를 참조하여 만듬 1. 마스터 정보 (종목정보) Order /push server rth 공유메모리 (구조체) 시세(호가포함) (종목 마스터 파일에 연결선물과 관련된 정보 없음) Quote server *.mst 종목 마스터 파일
마스터 정보 (종목정보) Order /push server rth 공유메모리 (구조체) 시세(호가포함) (구조체 안에 연결선물이라는 변수가 존재하지는 않음) Quote server *.mst 종목 마스터 파일 rth실행순서 ① 종목 마스터 정보 받음(필요한 때만 연결) 1) 마스터 정보 요청(인증 절차 거침) 1. 6018 모든 선물사에 대한 종목을 요청 2. 6017 모든 선물사의 종목에 대한 상세정보 요청 2) 마스터 정보 받음(인증을 통과했을 때) ② 시세를 요청 1) 종목 시세 정보 요청(인증 절차 거침) 2) 종목이 없어질 때까지 order서버는 시세를 계속 보냄(인증을 통과했을 때)
마스터 정보 (종목정보) Order /push server rth 공유메모리 (구조체) 시세(호가포함) (구조체 안에 연결선물이라는 변수가 존재하지는 않음) Quote server *.mst 종목 마스터 파일 3. 받은 마스터 정보를 내부적으로 사용할 수 있는 형태로 변환 4. 연결선물 9999, 8888에 대한 정보를 생성해냄 5. 멀티캐스트로 정보를 보냄 (시세정보는 계속 멀티캐스트를 보내지만 마스터정보와 연결선물 정보는 시작 시 한번만 보냄)
선물 시장 개인은 예탁금과 선물을 buy하거나 sell한 종목에 대한 위치를 가지고 있음 선물은 원래 어떤 상품(쌀, 곡식 등)의 값이 변동폭이 클 때 그 위험을 줄이기 위해서 미리 날짜와 가격을 정해놓는데서시작을 했습니다. 예를 들면, 올해는 쌀값이 폭등할 것 같아서 미리 얼마에 사겠다고 값을 정해놓는 것이죠. 이 가격은 쌀을 미래 시점에 판매할 사람과 미래 시점에 팔사람이 정합니다. 현재 증권시장에서의 선물은 쉽게 생각해서 쌀대신코스피200이라고 보시면 됩니다. 다만, 실제로 거래되는 물건은 없고 코스피200 지수가 더 오를 것 같다, 내릴것같다라고 생각해서 미리 사놓는 식으로 이해하시면 좋을 겁니다. 다만 여기서 매수계약자는 코스피200이 오를것을, 매도계약자는 코스피200이 미래에 하락할 것을 예측하는 것이죠. 즉, 매수계약자와 매도계약자간에 돈을 걸고 코스피지수맞추기 게임을 하는 것입니다. 그렇기 때문에 형식만 있을뿐 실제로 거래되는 물건이나 주식은 없습니다. 계약만 있죠. 그리고 선물은 매일 정산됩니다. 따라서 예로 오늘 매수한 선물이 10포인트가 올랐다고 한다면, 그만큼의 차익이 제 계좌로 당일날 들어옵니다. 반대로 오늘 매도한 사람의 계좌에서는 그만큼 돈이 나가죠. 그 다음날도 오르거나 떨어진 포인트만큼 계산이 되어서 매수자와 매도자간 현금이 정산됩니다. 그리고 자신이 원할때 파실 수 있습니다. 계속 안파시면3개월에 한번씩 돌아오는 만기일에 만기가 됩니다. 결론적으로, 선물은 주가가 떨어질거 같다고 생각하는 사람과 오를거 같다고 생각하는 사람이 계약을 맺는 것입니다. 이때 오르는 쪽에 건사람들롱 포지션(매수포지션), 떨어지는 쪽에 건사람을 숏포지션(매도포지션)이라고 합니다.
시세 정보의 분류 tick – 실제 종목 정보 (order서버에서 옴)+ 시세의 정보(quote 서버에서 옴) 분 – tick의 정보를 1분 동안 모으고 그 정보들을 분석해서 만들어진 정보 일 주 월 월물(만기일이 있음) 금의 1월달 시세 금의 2월달 시세 금의 3월달 시세 … 만기일 이전에는 sell, buy를 한 것을 close를 하여서 종목의 위치를 개인의 예탁금(개인마다 선물 시장에참여하기 위해 가지게 되는 선물 시장 내의 화폐)으로 바꿀 수 있음 만기일을 넘어가면 Close하여 종목의 위치를 개인의 예탁금으로 바꿈 Buy한 것을 실제로 선물 거래소에서 예전에 체결한 물품을 받음 sell한 것을 실제로 선물 거래소로 물건을 가지고 오면 체결금액을 받음
Sup의 역할 모든 선물사의 종목별 월물들에 대한 최신 정보를 shared memory에 저장 및 유지 sup rth의 공유메모리, 마스터 정보에 연결선물을 포함하여 자신만의 공유메모리에 tick(시세+마스터 정보)+연결 선물을 저장, 자신만의 마스터 정보파일을 만들어 마스터 정보+연결 선물을 저장 고수(여러 고객)프로그램이 tick의 정보 요청 고객이 요청한 정보들을 저장하고 있음(배열이용) rth에서 받은 정보(tik)를 고객이 요청한 정보와 비교 고객이 요청한 정보에 해당되면 정보를 요청한 고수프로그램으로정보(tick)를 보냄 iqr tick 정보를 1분 기준으로 만듬 그 정보를 공유메모리에 저장 고가(1분 동안 가장 높은 시세), 저가(1분 동안 가장 낮은 시세), 종가(1분이 끝났을 때의 시세), 시가(1분이 시작했을 때의 시세) 가 만들어짐 dmw dwt rth에서 받은 tick정보(실시간 정보)를 db에 저장
멀티캐스팅으로 여러 프로세스에 Tick정보(시세)+ 마스터 정보 + 연결선물정보를 보냄 마스터 정보와 연결 선물정보는 프로세스 시작시 한번만 보냄 시세는 계속 받는 대로 바로 보냄 iqr rth dmw dwt sup
고수 프로그램 전체 구조 공유메모리 (구조체) iqr *.mst rth 종목 마스터 파일 dmw 공유메모리 (구조체) dwt *.mst 종목 마스터 파일 sup DB
공유메모리 (구조체) rth에서 나온 공유메모리(구조체)와 종목 마스터 파일 안에 연결선물이라는 변수가 존재하지는 않음 Sup등 내부 시스템 프로세스로 정보를 전달할 때 DB의 예전 정보를 참고하여 선물사의 종목별로 어제거래량이 가장 많았던월물을 찾아내어 연결선물이라고 표시하고 내부 시스템에 전달 *.mst rth 종목 마스터 파일 공유메모리 (구조체) sup에서 나온 공유메모리(구조체)와 종목 마스터 파일 안에 연결선물이라는 변수가 존재 *.mst 종목 마스터 파일 sup
선물 : 미래의 것 이익 이익 = 미래의 가격– 현재의 가격 buy : 위로 가야 이익 sell : 아래로 가야 이익 손해 손해 이익 = 현재의 가격 – 미래의 가격 이익 판매자 : 3000원 구입자 : 4000원 위와 같이 된다면 3000원이 판매가 되는 체결이 이루어짐
행위 투기 : 가격차이로 돈 벌음 해징: 현물 가격의 손실을 선물 시장의 선물로 메워 손실이 없도록 함 예) 개당 가격 6 5 5 4 년도 2012 2011 2013 2013년의 물건의 가격에 구애 받지 않기 위해 현재의 가격으로 물건을 팔고 5 * 100개 = 500원 그 돈에 해당하는 500원어치를 지금 선물시장에서 선물을 buy로 100개를 체결 만약 2013년가격이 6원이 되었다면 현물로는 500(현재 2012년 가격) – 600(2013년 가격) = -100 선물로는 600(2013년 가격) – 500(현재 2012년 가격) = +100 총 순이익 = +100 + -100 = 0 선물을 buy로 100개를 체결하고 2013년 가격이 4원이 되었다면 현물로는 500(현재 2012년 가격) – 400(2013년 가격) = +100 선물로는 400(2013년 가격) – 500(현재 2012년 가격) = -100 총 순이익 = +100 + -100 = 0
물건을 사기 위해 선물증거금대금(원금의 몇 퍼센트)를 주면 실제 산 것처럼 됨 나머지 돈은 나중에 주면 됨 강제 청산 : 기본자금이 음수가 되지 않도록 함
시스템이 시작하면 rth가 종목에 대한 정보를 요청 받은 종목에 대한 정보를 토대로 shared memory의 공간을 할당준비 받은 종목과 시세 정보를 shared memory와 db에 저장 주의점 : 초기화를 위한 종목정보는 처음 한번만 받게 되고 그 다음 부터는 시세정보만 받음 rth sup 시스템 내부에서 사용 가능한 형태로 변환된 연결선물과 tick정보를 전달 받은 tick정보를 tick정보에 해당되는 곳에 덮어써서 최신의 정보가 저장되어 있도록 함 FUT_REAL (tick) shared memory FUT_QUOTE FUT_MST 연결선물(금9999) = 금1308
고수 시세 그래프 과거 (iqs) 현재 미래 (iqr) 스냅샷 사용자가 요청한 시간 이후의 rth에서 받은 tick정보 (sup의 shared memory에 저장된 tick내용) 사용자가 요청한 시간에 rth에서 받은 tick정보 (iqr이 rth에서 받은 tick정보를 고수 프로그램에 보내줌)
고수 프로그램의 주요기능 Tick정보를 보여줌(과거 및 현재와 계속 받고 있는 tick정보) 주문요청과 주문의 체결여부의 확인 Tick 관련 스냅샷(계속 업데이트된 최신정보) 요청 siq iqr Shared memory 고수 과거의 데이터 요청 db iqs diq oms 주문관련 Order서버는 보내고 받기 둘다 함 1. 주문 2. 주문 응답 1) 주문이 선물사의 서버에 도착했음을 알림 ip는 같으나 서로 포트 다름 App_d Prp_d Order push Push서버는 보내기만 함 체결에 대한 결과를 응답 연결은 계속 유지됨
vcs 고수의 버전 체크 종목 마스터 정보 가져오기 1. 고수의 버전 체크 최신 정보로 업데이트 고수 vcs 종목 마스터 Sup의 종목 마스터 파일 최신버전 프로그램정보
2. 종목 마스터 정보 가져오기 고수 프로그램의 기본 정보(선물사의 종목의 월물)을 가져와 그래프를 그릴 준비를 함 고수 vcs 종목 마스터 Sup의 종목 마스터 파일 최신버전 프로그램정보
Order push savejnl_d *.jnl파일 rth처럼 가공x 그대로 저장 quote rth_replay 예전 정보를 다시 찾거나 보고 싶을 때 jnl파일을 참조하여예전 정보를 알아봄
smp : 모든 프로세스가 죽었는지 살았는지 확인함 모니터 클라이언트 sms smp Mon_srv프로세스(모니터 클라이언트) <-> sms <-> smpLog : 모든 프로세스의 로그파일 저장됨 프로세스명과 프로세스의 상태(<i>, <w>, <e>)를 저장함 예) rth <i> db 클라이언트 oms ECS ECD iqr 클라이언트의 접속과 로그아웃의 정보를 DB에 저장
Shared memory 하루의 장이 끝나고 이 프로세스가 동작함 Shared 메모리의 선물사– 종목 – 월물별1분 데이터(dmw에 의해 생성)를 이용하여 분, 일, 주, 월 데이터 생성하여 db에 저장 ddp DB
고수 1. 버전체크 2. 로그인 3. 그래프의 기본 정보(선물사의 종목의 월물) 받기 – 서버에 정보가 저장되어 있어야 함 4. 주문, 체결 서버 1. 정보 저장 공간 준비(정보 저장표의 속성이 결정됨) – 선물사의 종목의 월물 정보 받음 order서버에서 종목마스터 정보를 받음 2. 서버로부터 받은 정보(tick)를 저장 3. 장 끝날 때 db에 월, 주, 일, 분의 정보를 저장 4. 종목, Tick 정보 저장 5. Replay 6. 모니터링 서버에서 받은 실제 정보를 내부에 맞게 변환된 정보 서버에서 받은 실제 정보
선물사 서버 – 회사 서버 – 고수 프로그램 연결 서버 종류 1) real, 2) backup(sub), 3) test 몇몇 서버는 1, 2번 real, 3, 4번 백업(1, 2번과 같은 실제 사용되는 선물사 서버와 연결됨) – 백업서버도 초기화 확인해야 함 보통 서버는 1, 2번 real, 3, 4번 test – test는 굳이 안해도 됨 선물사 서버 메인과sub는 디렉토리 구조 같음 임의의 다른 곳과 연결됨 test real 메인 sub 메인 sub 내부 네트워크로 연결 고수 프로그램
Main서버과sub서버의 관계 Order/ push 서버 ip : 10.0.0.41 ip : 10.0.0.42 Order 서버 rth rth app_d app_d push 서버 prp_d 종목 마스터 파일 prp_d oms oms vcs vcs quote 서버 sub main 고수 프로그램
Main서버 run.sh smp, sms, ecd, siq, sup, diq, dwt, dmw, app_d, prp_d, ecs, rth_d, savejnl, mts실행 $HOME/tools/checkMstFile.sh Main서버의 mst파일 확인, oms, iqr, iqs Sub서버/home/delta/tools/checkMstFile_vcs.sh sub서버의 mst파일 확인, sub서버의 vcs실행 Sub서버 run.sh Smp, ecd, siq, sup, diq, dwt, dmw, ecs, rth_d, savejnl_d, iqr, iqs oms, app_d, prp_d를 뺀 나머지 프로세스가 실행 Main서버 run_restart_rth.sh rth_d, savejnl_d실행 $HOME/tools/checkMstFileForIQR.sh Main서버의 mst파일 확인, App_d, prp_d, iqr를 실행 Sub서버/home/delta/tools/checkMstFile_vcs.sh Sub서버의 mst파일 확인, sub서버의 vcs실행 Sub서버 run_restart_rth.sh Rth_d, Savejnl_d실행
main 서버 vcs가동x iqr, iqs – main서버 프로세스를 기반 나머지는 기본적으로 동작하고 있음 sub 서버 app_d, prp_d, oms가동x iqr, iqs – sub서버 프로세스도 돌아가고 있음 (고수 프로그램과 선물사 서버에는 연결되진 않음) 나머지는 기본적으로 동작하고 있음 rth는 멀티캐스팅을 하지 않음
후속 세팅 useradd delta /home/delta Folder 구조 1. bin – lib안의 내부 파일= 외부 라이브러리(선물사에 접속하기 위한 api들(library)) 2. Data – Backup_dump - db_dump - Shm_dump - Ver – o – stage - comm - sys 3. ini 4. jnl 5. log 6. mon__sh 7. mst 8. tools
Bin 폴더 서버 프로세스 실행 파일들, lib파일 안의 라이브러리들 라이브러리가 이상하면 선물사로 접속이 되지 않음 Data 폴더 1. Backup_dump폴더 : 공유메모리의 내용을 나중을 위해 주기적으로 시간이름으로 압축하여 기록해 놓음 백업 스케쥴러로 백그라운드로 처리하여 저장 2. db_dump 폴더 : db백업, 복구 관련파일 3. Shm_dump폴더 : 공유 메모리(sup에 붙은)수동 백업 or 복구 공유 메모리 dump, 복구의 기본 설정 폴더 = shm_dump 4. Ver폴더 - 0(숫자) 폴더 - stage폴더(시스템 전략과 관련된 폴더) - comm폴더(고수 실행파일) : vcs에서 필요한 고수 최신 버전 파일 - sys : sup가 만든 종목마스터 파일저장 ini폴더 서브 프로세스가 참조할 설정파일(초기화 작업) jnl폴더 Zip 파일 <– savejnl프로세스의 작업결과물 Zip 파일 안의 구성 요소 1. Batch.jnl <- 종목마스터 정보 2. Futures.jnl <- 시세 정보
log 폴더 프로세스에 대한 상태를 log파일로 저장 저녁장초기화때 압축되지 않은 log파일을 날짜이름으로 압축하여 저장 mon_sh폴더 (공부해 볼 것) 서버에서 사용하는 자동 유틸리티 파일들 mst폴더 /home/mst/ 안의 마스터파일들 (rth가 만든 파일) /data/ver/comm/sys/ 안의 마스터 파일들(sup가 만든 파일) tools 폴더 (공부해 볼 것) 서버 manage할 때 스크립트 파일이 모여 있음
Crontab = 장 초기화 작업(아침, 저녁) Crontab –l, -e System.ini -> 공용설정파일(여러 프로세스가 참조하는 파일) 연결할 ip, 포트설정 %참조 금사닥quote 서버는 ip가 필요없음, 포트번호만 써도 됨 내부적으로 api가 ip를 잡아서 처리해 줌
/home/delta/ini/system.ini 내부 ip와 포트로 연결 1 [GLOBAL] 2 COMM VERSION = 29 3 LOG MESSAGE QUEUE = 5901 4 5 LISTEN IF = 116.228.33.236 //외부주소 6 7 LOG MULTICAST IP = 229.5.0.1 10 11 APP IP = 10.0.0.41 # oms <-> app 12 APP PORT = 10111 15 PRP PORT = 10112 16 17 ECS TO SRV QUEUE = 5022 # ECS -> SRV 18 SVR TO ECS QUEUE = 5021 # SRV -> ECS 19 20 TOTAL ECD = 2 21 ECD_IP_000 = 10.0.0.41 22 ECD_PORT_000 = 29110 23 ECD_IP_001 = 10.0.0.42 24 ECD_PORT_001 = 29110 25 26 # 테스트 환경 //real, test를 구분하여 다르게 쓸 것 27 SECURITIES D IP = 61.144.235.5 # prp_d <-> order request server of D sec. 28 SECURITIES D PORT = 6620 # 17990 29 SECURITIES D IP PUSH = 61.144.235.5 # prp_d <-> contract server of D sec. 30 SECURITIES D PORT PUSH = 6622 # 17992 31 SECURITIES D IP QUOTE = 61.144.235.5 # rth_d <-> realtime data server of D sec. 32 SECURITIES D PORT QUOTE = 20618 33 34 # 야간장 테스트용 실서버 환경 36 # SECURITIES D PORT = 7922 # 17990 37 # SECURITIES D IP PUSH = 172.19.2.4 # prp_d <-> contract server of D sec. 38 # SECURITIES D PORT PUSH = 7924 # 17992 main sub 한 서버 안에서 프로세스끼리 같은 ip의 포트로 연결 process process
39 # SECURITIES D IP QUOTE = 10.19.2.107 # rth_d <-> realtime data server of D sec. 40 # SECURITIES D PORT QUOTE = 20518 41 42 D_FUNCLIST = d_funclist.ini 43 44 ID = 19000143 //연결할 때 필요한 암호와 패스워드 45 PASS = 293261 46 47 # 야간장 테스트용 실계좌 48 # ID = 0190000231 49 # PASS = 261515 50 51 MYSQL IP = 10.0.0.41 52 MYSQL DATABASE = deltaworld # Database Name 53 MYSQL USER ID = delta # TODO : Fill Encrypted Text : user id 54 MYSQL PASSWORD = delta_db # TODO : Fill Encrypted Text : user Password 55 56 [DIRECTORY] 57 INI FILE DIR = ini 58 LOG FILE DIR = log 59 TRC FILE DIR = log 60 JNL FILE DIR = jnl 61 DATA FILE DIR = data 62 EXEC FILE DIR = bin 63 VER FILE DIR = data/ver 64 COMM DIR = comm 65 MASTER FILE DIR = mst 66 CLIENT SYS DIR = sys 67 SHM DUMP FILE DIR = data/shm_dump 68 MIN DIR = min # 분데이터 저장 경로 /ho me/delta/min 69 MIN INDEX DIR = index # 분데이터 인덱스 /ho me/delta/min/db1/index 70 MIN DATA DIR = data # 분데이터 내용 /ho me/delta/min/db1/data 71 MIN SAVE DIR INDEX = db3 # INDEX 분데이터 저장될 파티션 /ho me/delta/min/db3 72 MIN SAVE DIR KOSPI = db2 # KOSPI 분데이터 저장될 파티션 /ho me/delta/min/db2 73 MIN SAVE DIR KOSDAQ = db1 # KOSDAQ 분데이터 저장될 파티션 /ho me/delta/min/db1 74 MIN SAVE DIR FUTURES = db3 # FUTURES 분데이터 저장될 파티션 /ho me/delta/min/db3 75 MIN SAVE DIR OPTIONS = db3 # OPTIONS 분데이터 저장될 파티션 /ho me/delta/min/db3 76 MIN SAVE DIR SOPTIONS = db3 # SOPTIONS 분데이터 저장될 파티션 /ho me/delta/min/db3
77 MIN SAVE DIR STAR = db3 # STAR 분데이터 저장될 파티션 /ho me/delta/min/db3 78 MIN SAVE DIR SYN = db3 # SYN 분데이터 저장될 파티션 /ho me/delta/min/db3 79 MIN SAVE DIR INF = db3 # INF 분데이터 저장될 파티션 /ho me/delta/min/db3 80 MIN SAVE DIR VOL = db3 # VOL 분데이터 저장될 파티션 /ho me/delta/min/db3 81 MIN SAVE DIR MV = db3 # MV 분데이터 저장될 파티션 /ho me/delta/min/db3 82 83 [INI FILE] 84 ASPINIT = aspinit.ini 85 SERVERSELF = serverself.ini 86 SERVERLIST = serverlist.ini 87 MARKETINFO = marketinfo.ini 88 HOLIDAY = holiday.ini 89 MEMBER = sec_codes.ini 90 KOSPI200 = kospi200.ini 91 MIN = mininfo.ini 92 APP_D = app_d.ini 93 BAT_D = bat_d.ini 94 DDP = ddp.ini 95 DIQ = diq.ini 96 DMW = dmw.ini 97 DWT = dwt.ini 98 ECD = ecd.ini 99 ECS = ecs.ini 100 FDS = fds.ini 101 IQR = iqr.ini 102 MSS = mss.ini 103 MTS = mts.ini 104 OMS = oms.ini 105 PRP_D = prp_d.ini 106 RTH_D = rth_d.ini 107 SIQ = siq.ini 108 SUP = sup.ini 109 VCS = vcs.ini 110 IQR_DIQLIST = iqr_diqlist.ini 111 EXCHANGE_CODE_INFO = exchange_code_info.ini 112 113 #*- EOF ----------------------------------------------------------------------*
전일 pm 9:00 ~ am 2:30 전일 야간장에 대해 서버에 기록되는 날짜 : 23일 전일의 실제 날짜 : 22일 오늘 am 9:00 ~ pm 3:00 오늘의 실제 날짜 : 23일 전일 pm 9:00 ~ am 2:30 + 오늘 am 9:00 ~ pm 3:00 = 하루로 봄 월물은 만기일이 되면 없어짐 야간장 쉬는 날 1. 공휴일 전 야간장 2. 만기일 저녁 야간장(만기일은 선물사마다 다르게 됨) 22 2324 25 26 23일 – 토요일, 24일 – 일요일 25일의 장시작은22일의 야간장부터 시작임 22 23 24 25 26 23, 24, 25일이 추석 휴일이라면 22일의 야간장은 쉬게 됨 26일은 26일 am 9:00부터 장이 시작하게 됨 22 23 24 25 26 22일이 만기일이라면 22일의 야간장은 쉬게 됨 23일은 23일 am 9:00부터 장이 시작하게 됨
주식 거래소 선물사 주가지수 A B C G 정주 가 나 상해 대련 금융지수선물(상해) 대표 150 대표 150 ag au 잘 나가는 종목 대표지수 300 각각의 특별한 상품으로 서로 각각 다름 각각 장시간 A, B, C am 9:00 ~ pm 3:00 휴식 am 10:15 ~ am 10:30 am 11:30 ~ pm 1:30 G am 9:15 ~ pm 3:15 휴식 am 11:30 ~ pm 1:00