커뮤니티

예스스팟 Q&A

밀집모자 님에 의해서 삭제되었습니다.

프로필 이미지
밀집모자
0
글번호 225548
답변완료

참조데이터객체

안녕하세요 스팟 참조데이터객체에 외인 소진율 항목이 없는 데, 스팟에서 달리 참조해 볼 수 있는 방법이 있나요? 최근에 참조데이터에 기관계가 포함 되어진 것 같은데요, 외인소진율, 기관계, 이 두가지 항목 업데이트 의향이 없을까요? 감사합니다.
프로필 이미지
somun
2578
글번호 225547
답변완료

문의드립니다

예를 들어 1. 기존에 선물 롱포지션 10계약이 있는 상태 2. 차트 연계로 장중 매도 포지션 5계약 진입 3. 장중 매도 포지션 종가 단일가 청산. 이렇게 하려고 하면 매도 진입을 했을때 잔고는 여전히 롱포지션 5계약으로 되기때문에 메뉴얼에 당일청산 수식이 작동하지 않는 상황이 되어서 이런 상황을 감안하여 연계된 차트에 진입 수량만큼만 종가 단일가에 청산시키는 수식을 만들어주시면 감사히 쓰겠습니다.
프로필 이미지
시고르시고르
1950
글번호 225545
답변완료

수식문의 드립니다.

안녕하세요! 아래 수식은 수정해주신것인데 작동시키면 매도는 잘되나 청산이 안되고, 매도한 상태에서 다시 부팅을 하면 청산이 될때도 있고 안될때도 있습니다. var EntryTime = 101700; var ExitTime = 102000; var MaxEnryVol = 10; var Entry,Exit,CurrentVol; var CSV,PSV,CSX,PSX; var CallOrderCode,PutOrderCode; function Main_OnStart() { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); Main.MessageList(HHMMSS,"Start"); Entry = true; if (HHMMSS >= EntryTime) { Entry = false; } Exit = true; if (HHMMSS >= ExitTime) { Exit = false; } if (Entry == true || Exit == true) { Main.MessageList(HHMMSS,"1번 타이머동작"); Main.SetTimer(1, 5000); } } function Main_OnTimer(nEventID) { var d = new Date(); var YYYYMMDD = d.getFullYear()*10000+(d.getMonth()+1)*100+d.getDate(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (Entry == true && HHMMSS >= EntryTime) { Main.MessageList(HHMMSS,"진입시작"); //양매도종목 CallOrderCode = Option.GetATMCallRecent(0); PutOrderCode = Option.GetATMPutRecent(0); Main.SetUserValue("SellDate",YYYYMMDD); Main.SetUserValue("CallOrderCode",CallOrderCode); Main.SetUserValue("PutOrderCode",PutOrderCode); Entry = false; if (ExitTime > EntryTime) Main.KillTimer(1); Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0); CurrentVol = 1; Main.SetTimer(2, 5000); } if (Exit == true && HHMMSS >= ExitTime) { Exit = false; if (ExitTime > EntryTime) Main.KillTimer(1); var SellDate = Main.GetUserValue("SellDate") Main.MessageList(HHMMSS,"청산시작",YYYYMMDD,SellDate); if (YYYYMMDD == SellDate) { CallOrderCode = Main.GetUserValue("CallOrderCode"); PutOrderCode = Main.GetUserValue("PutOrderCode"); if (CallOrderCode != "") { Account1.SetBalance(CallOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) CSV = Account1.Balance.count; else CSV = 0; if (CSV > 0) { Main.SetTimer(3, 5000); CSX = 1; Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } } if (PutOrderCode != "") { Account1.SetBalance(PutOrderCode, 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) PSV = Account1.Balance.count; else PSV = 0; if (PSV > 0) { Main.SetTimer(4, 5000); PSX = 1; Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } } } } } if (nEventID == 2) { CurrentVol = CurrentVol+1; if (CurrentVol <= MaxEnryVol) { Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 2),0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 2), 0); } else { Main.KillTimer(2); } } if (nEventID == 3) { CSX = CSX+1; if (CSX <= CSV) { Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 2),0); } else { Main.KillTimer(3); } } if (nEventID == 4) { PSX = PSX+1; if (PSX <= PSV) { Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 2),0); } else { Main.KillTimer(4); } } }
프로필 이미지
팡팡
2099
글번호 225544
답변완료

검색시 부탁합니다

300틱봉에서 21지수이평선과 55지수이평선을 기준으로 만약에 지수 이평선이 골든크로스시이고 MACD가 GC하면 매수, DC시에 매수청산 지수 이평선이 데드크로스이고, MACD가 DC시에 매도, GC시에 매도청산하는 식 부탁드립니다
프로필 이미지
라이블루
2076
글번호 225534
답변완료

스팟 간단한 내용 검토요청

안녕하세요? 스팟수식 여쭤볼 곳이 없어서, 부득이 부탁드리고합니다. 아래 수식 목표는 단순 진입입니다. 차트에서 1계약 매수 / 매도 시그널 나오면 그대로 적용, 청산 신호 나오면 청산... 그런데 단순한 건데 이상하게 성능보고서와 다르게 청산이 되어도 잔고가 남아 있고... 오류가 있습니다. 검토요청드립니다. 청산시 잔고 없고, 신규 진입시 이전 물량 청산만 하면 됩니다. 다시 한 번 감사드립니다. ----------------------------------------------------------------- //진입청산주문을 모두 스팟에서 내게 하셔야 합니다. //차트에 시스템은 시험적용으로 적용하고 //신호가 발생하면 스팟에서 주문을 내고 추적해야 합니다. //차트객체추가 --> 속성에서 객체명은 Chart1, 아이디 부여해 차트와 연결 //종목객체추가 --> 속성에서 객체명은 MarketData1, 차트와 동일종목으로 지정 //계좌객체추가 --> 속성에서 객체명은 Account1, 계좌번호 지정 // 시장가 주문으로 변경(1)) var BID,Bnum,BIDx,Bnumx; var SID,Snum,SIDx,Snumx; function Main_OnStart() { Main.MessageLog("시작"); T = 0; } function Chart1_OnRiseSignal(Signal) { //매수신호 발생하면 신호수량으로 현재가 매수주문 if (Signal.signalKind == 1) { T = 1; //주문후 주문아이디 //주문번호로 미체결객체 셋팅 Account1.SetUnfillOrderNumber(Bnum); //미체결 잔량이 있으면 if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(MarketData1.code)) { //취소 Account1.OrderCancel(Bnum); } //잔고셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //매도수량이 있으면 매도수량만큼 매수로 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { BIDx = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Account1.Balance.count,MarketData1.current, 1); } // 매수진입 BID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.current, 1); } if (Signal.signalKind == 2) { T = 0; //주문번호로 미체결객체 셋팅 Account1.SetUnfillOrderNumber(Bnum); //미체결 잔량이 있으면 if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(MarketData1.code)) { //취소 Account1.OrderCancel(Bnum); } //잔고셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //매수수량이 있으면 매도로 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { SIDx = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Bid(3), 1) } //매도 신호 수량만큼 진입 SID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count, MarketData1.Bid(3), 1) } //매도신호 발생하면 신호수량으로 현재가 매도주문 if (Signal.signalKind == 3) { T = -1; //잔고셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //매수수량이 있으면 잔고만큼 매도로 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { BIDx = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Account1.Balance.count,MarketData1.current, 1); } } if (Signal.signalKind == 4) { T = 0; //Snum에 저장된 주문번호로 미체결객체 셋팅 Account1.SetUnfillOrderNumber(Snum); //미체결 잔량이 있으면 if (Account1.Unfill.count > 0 && Account1.Unfill.code == Main.GetOrderCode(MarketData1.code)) { //취소 Account1.OrderCancel(Snum); } //잔고셋팅 Account1.SetBalanceItem(Main.GetOrderCode(MarketData1.code), 0); //매도수량이 있으면 잔고만큼 매수로 청산 if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { SIDx = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Account1.Balance.count, MarketData1.Ask(3), 1) } } } //주문응답수신 function Main_OnOrderResponse(OrderResponse) { //BID와 아이디가 같은 주문응답이면 if (OrderResponse.orderID == BID) { //매수주문번호를 Bnum에 저장 Bnum = OrderResponse.orderNum; } //SID와 아이디가 같은 주문응답이면 if (OrderResponse.orderID == SID) { //매도주문번호를 Snum에 저장 Snum = OrderResponse.orderNum; } //BIDx와 아이디가 같은 주문응답이면 if (OrderResponse.orderID == BIDx) { //매수주문번호를 Bnum에 저장 Bnumx = OrderResponse.orderNum; } //SID와 아이디가 같은 주문응답이면 if (OrderResponse.orderID == SIDx) { //매도주문번호를 Snum에 저장 Snumx = OrderResponse.orderNum; } }
프로필 이미지
심심00
2293
글번호 225532

잼스딘 님에 의해서 삭제되었습니다.

프로필 이미지
잼스딘
23
글번호 225525
답변완료

매수매도 수량 확인후 청산

매수매도가 체결되었는지 확인후 매수매도 청산하기 위해서 아래 프로그램을 사용하고자 합니다. 해외선물에서 지정가,+/_2호가로 매수매도를 위해서 BID = Account1.OrderBuy(Main.GetOrderCode(Signal.code),2,MarketData1.Bid(2),2); SID = Account1.OrderSell(Main.GetOrderCode(Signal.code),2,MarketData1.Ask(2),2); 로 하였는데 맞게 된 건가요? ====================== 예제 =================== var BID,SID,BNum,SNum; function Main_OnStart() { Main.MessageList("Start") } function Chart1_OnRiseSignal(Signal) { if (Signal.signalKind == 1) { BID = Account1.OrderBuy(Main.GetOrderCode(Signal.code),2,MarketData1.Bid(1),2); Main.SetTimer(1,60000); } if (Signal.signalKind == 2) { Account1.SetUnfill(BNum); if ( Account1.Unfill.count > 0 ) { Account1.OrderCancel(Bnum); } Account1.SetBalance(Main.GetOrderCode(Signal.code), 2); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Ask(1),0) } } if (Signal.signalKind == 3) { SID = Account1.OrderSell(Main.GetOrderCode(Signal.code),2,MarketData1.Ask(2),2); Main.SetTimer(2,60000); } if (Signal.signalKind == 4) { Account1.SetUnfill(SNum); if ( Account1.Unfill.count > 0) { Account1.OrderCancel(Snum); } Account1.SetBalance(Main.GetOrderCode(Signal.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Account1.Balance.count,MarketData1.Bid(1),2) } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BID) { BNum = OrderResponse.orderNum; } if (OrderResponse.orderID == SID) { SNum = OrderResponse.orderNum; } } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.KillTimer(1); Account1.SetUnfill(BNum); if (Account1.Unfill.count > 0) { BID = Account1.OrderReplacePrice(Bnum,MarketData1.Ask(4); } } if (nEventID == 2) { Main.KillTimer(2); Account1.SetUnfill(SNum); if (Account1.Unfill.count > 0) { SID = Account1.OrderReplacePrice(Snum,MarketData1.Bid(4)); } } }
프로필 이미지
후따오
2146
글번호 225524
답변완료

문의 드립니다.

틱차트에 연동된 지표의 데이타를 실시간으로 엑셀로 받아 엑셀로 다루고 싶은데요. 프로그램에 대해 전혀 몰라서... 설정하는 방법을 알 수 있을까요? 단지 실시간으로 엑셀에서 연동만 되면 됩니다.
프로필 이미지
종호
2147
글번호 225523
답변완료

문의드립니다

아래와 같이 진입신호 청산신호 목표수익신호 3가지 신호로 된 예스스팟 가이드 시스템을 만들고 싶습니다 매수진입신호 신호가격 10틱 위로 매수주문 신호가격 15틱 위로 매도주문(목표수익신호미리주문) 매수목표수익신호 (매수진입신호시 미리 주문했기때문에 아무일없음) 매수청산신호 신호가격 10틱 아래로 매수청산주문 미체결 된 매수목표수익 주문취소 매도진입신호 신호가격 10틱 아래로 매도주문 신호가격 15틱 아래로 매수주문(목표수익신호미리주문) 매도목표수익신호 (매도진입신호시 미리 주문했기때문에 아무일없음) 매도청산신호 신호가격 10틱 위로 매도청산주문 미체결 된 매도목표수익 주문취소 감사합니다
프로필 이미지
파인애플
2397
글번호 225522