커뮤니티

예스스팟 Q&A

답변완료

주식 당일 종가 가져오는법

3시 30분이후인 주식장종료 이후 시점에 당일 종가를 가져오는 법이 없을까요? 이때 가져온 주식종가로, 3시 30분이후 3시45분까지 15분사이에 주식선물을 사는 프로그램을 최종적으로는 짜고싶은데요. GetprevClose의 경우 1~100일 사이값만 가져올수 있고, prevClose의 경우 3시 30분이후에 주식의 prevClose값을 불러와도,당일 종가가 아닌 하루전 종가값이 들어오네요. 주식 일봉차트를 넣고 완성시점값을 가져오면 구현은 가능하겠지만, 너무 지저분하고, 예스스팟을 쓰는만큼 왠만하면 차트는 안쓰고 싶습니다. 방법이 있을까요?
프로필 이미지
dol
2017-08-22
2546
글번호 224206
답변완료

프로그래머 소개좀 시켜주세요

스팟으로 간단한 전략을 짜려합니다 스팟 프로그램 잘 아시는분 소개좀 시켜주세요~~ 010 8497 5528 입니다
프로필 이미지
이공주7
2017-08-21
2618
글번호 224205

녹색전사 님에 의해서 삭제되었습니다.

프로필 이미지
녹색전사
2017-07-31
0
글번호 224203
답변완료

수식좀 봐주세요

리버스 전략에 적용하는 스팟식입니다 1. 매수, 매도 신호발생시 기존 미체결 주문을 취소하고, 신규 신호를 1초단위로 계속 신호가로 1계약씩 주문 발생 2. 동시호가 잔고 청산 힘들게 만들었는데 계속 오류가 나네요. 수정좀 부탁드립니다. var Tcnt1,Tcnt2,BP,SP; function Main_OnStart() { //99번 타이머,10초 간격 Main.SetTimer(99,10000); } function Chart1_OnRiseSignal(Signal) { //매수진입신호 발생 if (Signal.signalKind == 1) { // 미체결 주문취소 Account1.OrderCancel(Account1.Unfill.orderNum); Main.MessageList("미체결 주문 취소"); BP = Signal.price; //매수주문 Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0); //1번 타이머 1초 셋팅 Main.SetTimer(1, 1000); //타이머 동작 카운트 값은 초기값 0 Tcnt1 = 0; } //매도진입신호 발생 if (Signal.signalKind == 3) { // 미체결 주문취소 Account1.OrderCancel(Account1.Unfill.orderNum); Main.MessageList("미체결 주문 취소"); SP = Signal.price; //매도주문 Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, Signal.price, 0); //2번 타이머 1초 셋팅 Main.SetTimer(2, 1000); //타이머 동작 카운트 값은 초기값 0 Tcnt2 = 0; } } //타이머 동작 function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //1번타이머 if (nEventID == 1) { //카운트가 1씩 증가 Tcnt1 = Tcnt1+1; //타이머 동작시마다 주문 Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 1, BP,0); // 매도신호가 뜨면 1초단위 매수 주문 발생 취소 if (Signal.signalKind == 3) { Main.KillTimer(1); } } //2번타이머 if (nEventID == 2) { //카운트가 1씩 증가 Tcnt2 = Tcnt2+1; //타이머 동작시마다 주문 Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 1, SP,0); // 매수신호가 뜨면 1초단위 매도 주문 발생 취소 if (Signal.signalKind == 1) { Main.KillTimer(2); } } } // 동시호가 청산 function Main_OnStart() { Main.MessageLog("시작") Main.SetTimer(3, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 3 && HHMMDD >= 153600) { Main.KillTimer(3); num = Account1.GetTheNumberOfBalances(); for(var i = 0; i < num; i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.position == 1) Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); if (Account1.Balance.position == 2) Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } }
프로필 이미지
궁금궁금123
2017-07-28
2755
글번호 224200
답변완료

문의

안녕하세요. 예스트레이더 로직으로 해외선물 2종목을 거래하고 2종목합산 수익이 났을때 에스트레이더에서는 동시 정확하게 청산할 방법이 없습니다. 예스트레이더에서는 매수매도가 잘 일어나고 있습니다. 에스트레이더 로직에서 매수와 매도가 들어가고 예스스팟에서 합산 순수 수익이 났을 때 스팟에서 동시청산 처리하고 싶습니다.스팟에서 청산 수식과 예스트레이더와 연계방법을 알려 주시기를 부탁드립니다. 두가지 경우로 하고 싶습니다. 1번 1계죄에서 2종목 거래시 합산 순수익 날 때 동시청산수식과 합산 순손실이 날때 스팟의 동시 청산 수식 2번 2계좌에서 1종목씩 거래시 합산 순수익 날때 동시청산수식과 합산 순손실시 스팟의 동시 청산 수식 을 부탁드립니다. 추가질문1 3번질문: 잔고를 늘 감시하다가 한종목의 잔고가 0일때 현재가에서 시장가 매수가 들어가고 그현재가 근처에서 매수단가가 형성되었다면 그단가를 기준으로 상방향으로 현재가+3틱 현재가+6틱 현재가+9틱 현재가+12틱 처럼 계속 3틱단위로 상방향으로 매수가 되게 하고 싶습니다. 스팟수식으로 부탁드립니다. 스팟이 꺼지고 다시 재접속할 때 변수가 초기화 되는 문제가 해결되도록 코딩을 요청드립니다. 추가질문2 4번질문 :위의 3번질문에서 잔고를 감시하다가 잔고가 0일때 시장가 매수가 들어가서 그 체결가로 기준가로 정하지 않고요. 스팟 가동후 잔고가 최초로 0 이었을 때의 최초현재가= 최초기준가 로 정하고요. 그 이후에는 잔고들이 있다가 청산되어서 다시 0 이 되는 순간의 현재가 = 새로운 기준가 로 하고 싶습니다. 최초기준가 는 매수 안들어가고요. 상방향으로 현재가가 흘러가면 최초기준가 지켜봄 최초기준가+3틱 매수 최초기준가+6틱 매수 최초기준가+9틱 매수 ~~~~~이하생략 청산후 잔고 0 이 되는 순간의 현재가를 새로운 기준가로 생성 기준가는 지켜보고요 지준가 지켜봄 기준가+3틱 매수 기준가+6틱 매수 기준가+9틱 매수 ~~~ 이하 생략 으로 부탁드립니다. 스팟이 꺼지고 다시 재접속할 때 변수가 초기화 되어서 문제를 일으키는데 그문제가 해결되도록 코딩을 요청드립니다. 제가 실력이 없어서 열심히 공부하고 궁리해도 코딩이 나오지를 않습니다. 시간이 흐르다 보니 3번 질문과 4번 질문이 가장 중요한 질문이 되었습니다. 자꾸 부탁이 늘게 되어서 죄송합니다.
프로필 이미지
종호
2017-08-10
2777
글번호 224199

종호 님에 의해서 삭제되었습니다.

프로필 이미지
종호
2017-07-27
13
글번호 224198

토모즈 님에 의해서 삭제되었습니다.

프로필 이미지
토모즈
2017-07-18
14
글번호 224197

녹색전사 님에 의해서 삭제되었습니다.

프로필 이미지
녹색전사
2017-07-13
8
글번호 224196
답변완료

(글수정) 스팟 오류인것 같습니다.

글 수정합니다. 다른 질문을 올립니다. 스팟 오류를 발견한것 같습니다. 제가 Win7과 WinXP에서 매매를 하고 잇는데요. 같은 스팟 수식과 변수 설정으로 해놧는데 Win7에서는 오류없이 돌아가는데 WinXP는 오류가 납니다. 수식은 선물신호를 받아서 옵션 매수를 하는 수식입니다. 아래와 같습니다. ======================================================================= //계좌객체 추가 : Account1 //챠트객체 추가 : Chart1 //예트챠트명과 일치 //옵션데이타 추가 : Option //입력변수 추가 : Near //숫자형, 진입하고자 하는 가까운 옵션값 //입력변수 추가 : Vol // 진입수량 var T; var CC, CallOrderCode; var PP, PutOrderCode; var BC, BP; function Main_OnStart() { T = 0; Main.MessageList("옵션매수 전용시작"); } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { T = 1; Main.MessageList("Buy신호 발생"); var UNum = Option.uppersATM; var LNum = Option.lowersATM; var CallCode = new Array(UNum+LNum+1); var CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-Near); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var CC = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //종목을 찾았으면 if (CC < 99999999) { BC = CallOrderCode; Account1.OrderBuy(BC, Vol, Option.GetAskByCode(BC, 5), 0); } } if (T == 1 && Signal.signalKind == 2) { T = 0; Account1.OrderSell(BC, Vol, Option.GetBidByCode(BC, 5), 0); Main.MessageList("ExitLong신호 발생"); } if (Signal.signalKind == 3) { T = -1; Main.MessageList("Sell신호 발생"); var UNum = Option.uppersATM; var LNum = Option.lowersATM; var PutCode = new Array(UNum+LNum+1); var PutPrice = new Array(UNum+LNum+1); for (var i = -UNum; i <= LNum; i++) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-Near); PutCode[i+UNum] = Option.GetATMPutRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var PP = 99999999; PutOrderCode = ""; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] < PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } //종목을 찾았으면 if (PP < 99999999) { BP = PutOrderCode; Account1.OrderBuy(BP, Vol, Option.GetAskByCode(BP, 5), 0); } } if (T == -1 && Signal.signalKind == 4) { T = 0; Account1.OrderSell(BP, Vol, Option.GetBidByCode(BP, 5), 0); Main.MessageList("ExitShort신호 발생"); } } //동시호가 청산 function Main_OnStart() { Main.MessageLog("시작") Main.SetTimer(3, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 3 && HHMMDD >= 153600) { Main.KillTimer(3); num = Account1.GetTheNumberOfBalances(); for(var i = 0; i < num; i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.position == 1) Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1); if (Account1.Balance.position == 2) Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1); } } } =============================================================== 모든 설정(차트객체, 계좌객체, 옵션객체, Near변수, Vol변수)을 양쪽 컴퓨터에 다 똑같이 했는데요 Win7에서는 정상 작동하고 WinXP에서는 Range Error: Invalid array length 에러가 납니다. 제가 XP 노트북에 자동주문을 틀어놓고 하는데요. 다른분들은 계속 수식이 정상작동 한다는데 저만 오류가 나서 Win7에 세팅을 하고 보니까 에러가 나지 않는 것입니다. 스팟 프로그램상의 오류가 아닌가 합니다. XP에서도 오류 안나게 할 수 있는 방법은 없나요? 이 컴퓨터에 여러가지 메크로 세팅등등을 해놔서 다른 컴퓨터에 또 세팅하는게 여간 힘든데....
프로필 이미지
궁금궁금123
2017-07-12
2768
글번호 224192

궁금궁금123 님에 의해서 삭제되었습니다.

프로필 이미지
궁금궁금123
2017-07-08
0
글번호 224191