커뮤니티

예스스팟 Q&A

답변완료

문의드립니다.(12.01)

수식 문의드립니다. 도움부탁드립니다. 주식현물(예:삼성전자)에서, 1. 스팟시작 1초 후 0.2초간격으로 10주씩 10회, 시장가로 매수주문 (매수/매수/매수...10회) 2. 스팟시작 1초 후 0.2초간격으로 10주씩 10회, 시장가로 매도주문 (매도/매도/매도...10회) 3. 스팟시작 1초 후, [0.2초뒤 10주(1회)를 시장가로 매수주문 후 0.2초뒤 10주(1회)를 시장가로 매도주문]을 10회 반복 (매수/매도 1쌍(0.4초간격)으로 "매수/매도","매수/매도".....10회반복) 1,2,3. 각각 수식부탁드립니다. (혹시 시장가가 안되면 "상한가 하한가" 혹은 "현재가 +-10호가" 주문등을 사용) 감사합니다.
프로필 이미지
체로키
2016-12-10
2287
글번호 224048
답변완료

예스트레이더 진입및 청산에 대해서

제가 수식을 만들었는데 이게 진입청산해서 수익률이 나오긴하는데 이 진입청산이 뭐 대기없이 그 신호오면 바로 사진다는걸 전제로 하는거겠죠?
프로필 이미지
쩜상쩜하
2016-12-01
2236
글번호 224047
답변완료

질문드립니다.

예스트레이더에서 스팟으로 신호가 넘어올때 즉, 차트객체를 이용할시에 차트설정에서 상대1호가, 우선1호가 등을 설정하면, signal.price로 넘어올때 그 설정상태의 시그널 가격으로 넘어오는 것인지? 아니면 그냥 차트의 돌파가격을 기준으로 신호가 들어와서 스팟에서 상대1호가, 우선1호가 등을 설정을 해야 하는 것인지 궁금합니다.
프로필 이미지
절제9단
2016-11-28
2155
글번호 224046
답변완료

수식 문의 드립니다.

안녕하세요 당일청산 선물신호 시스템 을 이용한, 아래 스팟수식으로 당일손실제한(1.0 PT) 전량 청산할경우, 당일 추가 선물신호가 발생해도 추가 진입이 안되도록 수정 요청 드립니다. (스팟수식으로 당일손실제한정산 될 경우, PT 청산 메시지 출력 요청 드림니다) 감사합니다. 스팟수식요류 if (Signal.signalKind == 3 sumPL > 당일손실제한) => ReferenceError 오류 => if (Signal.signalKind == 3, sumPL > -1.0) 수정 확인 점검 요청드림니다. 스크립트 객체설정 차트객체 추가 --> 속성에서 객체명은 Chart1, 아이디 연결 계좌객체 추가 --> 속성에서 객체명은 Account1, 계좌번호 지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 주문낼 종목으로 지정 입력변수 추가 --> 속성에서 변수명은 당일손실제한, 초기값 음수로 지정, 데이터형 숫자 var sumPL; -1.0 //당일손실제한 1.0 PT 설정 var BuyID, BxID, SellID,SxID; var BuyNum, BxNum, SellNum,SxNum; var BuyAvg,SellAvg; var EntryStart,Dayloss,sumPL,T; function Main_OnStart() { sumPL = 0; T = 0; EntryStart = false; Dayloss = false; Main.SetTimer(1, 5000); } //차트에서 신호나오면 MarketData1 종목에 대해 주문 function Chart1_OnRiseSignal(Signal) { //매수진입신호 발생 if (Signal.signalKind == 1 && Dayloss == false) { BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.Ask(3), 0); EntryStart = true; } //매수청산신호 발생 if (EntryStart == true && Signal.signalKind == 2) { //매수진입 미체결 있으면 취소 Account1.SetUnfill(BuyNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyNum); } //잔고셋팅해 매수포지션 있으면 잔고수량만큼만 청산 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { //매수포지션 잔고 평단가 저장 BuyAvg = Account1.Balance.avgUnitCost; BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MarketData1.Bid(3), 0); T = 1; } } //매도진입신호 발생 if (Signal.signalKind == 3 sumPL > 당일손실제한) <============= 수식요류메세지 { SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.Bid(3), 0); EntryStart = true; } //매도청산신호 발생 if (EntryStart == true && Signal.signalKind == 4) { //매수진입 미체결 있으면 취소 Account1.SetUnfill(SellNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellNum); } //잔고셋팅해 매도포지션 있으면 잔고수량만큼만 청산 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { //매도포지션 잔고 평단가 저장 SellAvg = Account1.Balance.avgUnitCost; SxID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.Ask(3), 0); T = -1; } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) BuyNum = OrderResponse.orderNum; if (OrderResponse.orderID == BxID) BxNum = OrderResponse.orderNum; if (OrderResponse.orderID == SellID) SellNum = OrderResponse.orderNum; if (OrderResponse.orderID == SxID) SxNum = OrderResponse.orderNum; } function Main_OnNotifyFill(NotifyFill) { //매수청산신호의 체결이 수신되면 if (NotifyFill.orderNum == BxNum) { sumPL = sumPL +(NotifyFill.fillPrice-BuyAvg)*NotifyFill.fillCount; } //매도청산신호의 체결이 수신되면 if (NotifyFill.orderNum == SxNum) { sumPL = sumPL +(SellAvg-NotifyFill.fillPrice)*NotifyFill.fillCount; } } function Main_OnTimer(nEventID) { if (EntryStart == true && T == 1) { Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { tempPL = sumPL+(Account1.Balance.current-Account1.Balance.avgUnitCost)*Account1.Balance.count; if (tempPL <= 당일손실제한) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MarketData1.Bid(3), 0); Dayloss = true; } } } if (EntryStart == true && T == -1) { Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { tempPL = sumPL+(Account1.Balance.avgUnitCost-Account1.Balance.current)*Account1.Balance.count; if (tempPL <= 당일손실제한) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,MarketData1.Ask(3), 0); Dayloss = true; } } } }
프로필 이미지
dandy
2016-11-25
2279
글번호 224044

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
huma80
2016-11-24
7
글번호 224043
0

관리자에 의해 프로그램 사용법 QnA로 이동되었습니다

프로필 이미지
짙은안개
2016-11-18
26
글번호 224042
0
답변완료

당일청산

15:10:00 당일청산 예스스팟수식을 부탁드립니다.
프로필 이미지
너무조아
2016-11-23
2202
글번호 224040
답변완료

타종목2개 추가후 차트객체이용시 signalkind 에러

타종목2개 추가후 차트객체이용시 signalkind 에러 1. 타종목 차트 2개를 차트에 추가 data1 : 연결선물 data2 : 외국인선물 순매수 data3 :KP외국인 순매수 2. 예스스팟 차트객체와 차트 연결 3. 차트에서 매도 신호 발생후, 매수신호 전환 (리버스 신호) signalkind 3 => 1 으로 변경될거로 예상해으나 1 이 아닌 0 으로 나옴
프로필 이미지
경복궁
2016-11-08
2116
글번호 224033
답변완료

부탁드리겠습니다..

안녕하세요? 제가 시스템식으로 당일매매를 하고 있습니다. 종목객체에서 수신된 매수/매도신호가 당일에 발생이 되지 않는 경우, 수동으로 매도처리를 하고 있습니다. 즉, 종목객체에서 수신되는 매수/매도 신호외 과거 보유종목이 있으면 보유종목의 평단을 수신하여 평단대비 4%대면 매도를 할 수 있는 식을 추가로 부탁드리겠습니다. 아래식으로 시스템을 입혀서 종목객체를 수신하였습니다. //요청한 종목객체가 생성되면 function Main_OnRcvMarketData(MarketData) { RcvData = RcvData+1; DataReq = false; EntryItem[RcvData] = MarketData.code; EntryObject[RcvData] = MarketData; Account1.SetBalanceItem(MarketData.code,0); Main.MessageList("종목수신",EntryObject[RcvData]); Main.MessageList(RcvData,"번째 종목생성",MarketData.name); var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 기타정보들..) var C1 = new ReqChartItem(EntryObject[RcvData].code, 기타정보들..) var S1 = new SystemInfo("당일매매식",YL_TYPE_NORMAL,null,TradeSet,null); Main.ReqChartEx(C1,S1); } function Main_OnRiseSignal(ChartEx, Signal) { for (var i = 1; i <= RcvData; i++) { if (EntryObject[i].code == ChartEx.GetCode(1)) { if (Signal.signalKind == 1) { BuyVol[i] = 0; if (EntryObject[i].tradeUnit == 1) BuyVol[i] = Math.floor(EntryMoney/EntryObject[i].Ask(5) ); else BuyVol[i] = Math.floor((EntryMoney/EntryObject[i].Ask(5) )/EntryObject[i].tradeUnit); Account1.OrderBuy(Signal.code,BuyVol[i],EntryObject[i].Ask(5),0); Main.MessageList("매수주문종목 : ",Signal.code); } if (Signal.signalKind == 2) Account1.OrderSell(Signal.code,BuyVol[i],EntryObject[i].Bid(5),0); Main.MessageList("매도주문종목 : ",Signal.code); } } }
프로필 이미지
만들레영토
2016-11-05
2153
글번호 224032
답변완료

(간단한 질문)엑셀 연동 관련

질문 1. 예스스팟에서 예스트레이더를 지원하지 않는 증권사 API를 이용하여 바로 주문이 가능한가요?(예스스팟 → 타 증권사 API) 질문 2. 만약 가능하지 않다면, 예스스팟에서 엑셀이나 C++로 신호를 보내서 예스트레이더를 이용하지않는 증권사로 신호를 보내 매수 매도를 할 수 있나요? (예스스팟 → 엑셀 이나 C++ → 타 증권사 API)
프로필 이미지
절제9단
2016-11-03
2087
글번호 224031