커뮤니티

예스스팟 Q&A

답변완료

하나의 예스스팟 코드로 2개 이상의 예스랭귀지-파워종목검색을 돌릴수 있나요?

아직 초보라 질문이 매끄럽지 못한 점 양해부탁드립니다. 제가 하이투자증권에서 예스스팟을 이용해 매매하는 방식은 다음과 같습니다. 1. 예스랭귀지에서 수식작성해서 파워종목검색으로 불러와 해당종목을 특정시간에 검색하고 2. 그 종목들을 예스스팟 매매기로 매매실행 제가 구현하고 싶은 것은 예스랭귀지에서 작성한 2개 이상의 수식(수식1,수식2)을 각각 개별의 파워종목검색에서 검색되고 그 각각의 종목들이 "하나의" 예스스팟 매매기로로 불려와서 각각 매매 (수식1에 현금50%배분/수식2에 현금50%배분) 요렇게 만들고싶은데 일단 Q&A검색을 통해서 파워종목검색창이 2개이상 열리지 않는다는건 확인했습니다. 질문1) 파워종목검색창은 자동매매가 진행될동안 예스트레이더에서 꼭 켜져있어야하는지 궁금합니다. 질문2) 위에서 말씀드린 "예스랭귀지-파워종목검색을 사용하는 2가지 이상의 로직"을 하나의 예스스팟매매기로 구현가능한지 문의드립니다. 매매기에서는 아래 함수를 사용하고 있는데 요걸로 방법이 있을지요 Main.ReqPowerSearch(); OnRcvItemList(aItemList, nCount)
프로필 이미지
밥뚝딱
2020-10-28
2939
글번호 225344
답변완료

종목검색한 결과에서..

안녕하세요, 1분에 한번씩 종목검색한 결과를 엑셀로 업데이트 할수 있을까요? 1분에 한번씩 자동으로 종목검색을 하고 그 결과를 엑셀로 업데이트 하도록 구현할 수 있을까요? 표시하는것 뿐 아니라 그전 결과와 비교하여 색강조 까지 생각하고 있습니다. 예스스팟으로 구현가능한지, 간단한 예시를 주시면 도움이 많이 될것 같습니다. 감사합니다.
프로필 이미지
edan
2020-10-19
2726
글번호 225341
답변완료

피라미딩 진입 수정 부탁드립니다.

첫 진입이후 3% 하락시 추가 피라미딩 진입하는 식인데, 작동을 안하네요. 수정 부탁드립니다. var BL = [],req=0,step; var CT = []; function Main_OnStart() { //처음 시작시 step은 0 step = 0; //시작시점의 보유종목수 var num1 = Account1.GetTheNumberOfBalances(); //보유종목이 1개 이상이면 보유종목의 종목코드를 BL변수에 순차적으로 저장 if (num1 > 0) { step = 1; for(var i = 0 ; i < num1 ; i++) { Account1.SetBalance(i); BL[i] = Account1.Balance.code; } if (BL.length >= 1) { req = 0; var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1, // 거래수량 123456789, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 2); // 최대진입횟수 var ChartSet = new ReqChartItem(BL[req],15,CHART_PERIOD_MINUTE,500,CHART_REQCOUNT_BAR,false,false); var SymSet = new SystemInfo("Signal전략"); Main.ReqChartEx(ChartSet, SymSet); } } else //보유종목이 없으면 바로 1분 타이머 시작 { step = 2; Main.MessageList("보유종목없음"); Main.SetTimer(1, 100000);//1번 타이머, 60초 } } function Main_OnRcvChartEx(ChartEx) { if (step == 1 && ChartEx.GetCode(1) == BL[req]) { step = 1; CT[req] = ChartEx; req = req+1; if (req < BL.length) { var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1, // 거래수량 123456789, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 2); var ChartSet = new ReqChartItem(BL[req],15,CHART_PERIOD_MINUTE,500,CHART_REQCOUNT_BAR,false,false); var SymSet = new SystemInfo("Signal전략"); Main.ReqChartEx(ChartSet, SymSet); } else { step = 2; Main.SetTimer(1, 100000);//1번 타이머, 60초 Main.MessageList("보유종목차트생성완료"); } } if (step == 2 && ChartEx.GetCode(1) == BL[req]) { CT[req] = ChartEx; req = req+1; if (req < BL.length) { var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1, // 거래수량 123456789, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 2); var ChartSet = new ReqChartItem(BL[req],15,CHART_PERIOD_MINUTE,500,CHART_REQCOUNT_BAR,false,false); var SymSet = new SystemInfo("Signal전략"); Main.ReqChartEx(ChartSet, SymSet); } else { Main.MessageList("종목검색후차트생성완료"); //차트생성 완료하면 타이머 다시 셋팅 Main.SetTimer(1, 100000);//1번 타이머, 60초 } } } function Main_OnTimer(nEventID) { if (nEventID == 1) { //타이머 종료 Main.KillTimer(1); Main.ReqPowerSearch("종목검색") } } function Main_OnRcvItemList(aItemList, nCount) { //검색된 종목이 없으면 if (nCount == 0) { //타이머 다시 셋팅 Main.SetTimer(1, 100000);//1번 타이머, 60초 } //검색된 종목이 있으면 if (nCount >= 1) { //검색된 종목과 기존 만든 차트들의 종목코드를 비교해 //차트가 만들어 지지 않은 종목이면 BL변수에 종목코드 추가 var cnt = 0; for(var i = 0 ; i < aItemList.length ; i++) { var add = true; for(var z = 0 ; z < CT.length ; z++) { if (aItemList[i] == CT[z].GetCode(1)) { add = false; break; } } if (add == true) { cnt = cnt+1; BL.push(aItemList[i]); } } Main.MessageList("BL : ",req,BL); //차트 생성해야할 종목이 있으면 차트요청 if (cnt >= 1) { //차트 요청 var TradeSet = new SystemTradeInfo(TRADE_FIXCOUNT, 1, // 거래수량 123456789, // 자산 1, // 단위수량 0, 0, CALCMETHOD_PERCENT, // 진입/청산 수수료 0, 0, CALCMETHOD_POINT, // 진입/청산 슬리피지 PYRAMIDING_ENTRY, // 피라미딩 설정여부 1000, // 최대진입수량 2); var ChartSet = new ReqChartItem(BL[req],15,CHART_PERIOD_MINUTE,500,CHART_REQCOUNT_BAR,false,false); var SymSet = new SystemInfo("Signal전략"); Main.ReqChartEx(ChartSet, SymSet); } else //없으면 타이머 다시 셋팅 { Main.SetTimer(1, 100000);//1번 타이머, 60초 } } } //생성된 차트들에서 신호가 발생하면 function Main_OnRiseSignal(ChartEx, Signal) { //매수신호 발생 if (Signal.signalKind == 1) { //잔고셋팅 Account1.SetBalance(Signal.code,0); //보유수량이 없으면 if (Account1.Balance.count == 0) { //EntryVol주 시장가 매수 Account1.OrderBuy(Signal.code, EntryVol,Signal.price,1); } } //매수청산신호 발생 if (Signal.signalKind == 2) { //잔고셋팅 Account1.SetBalance(Signal.code,0); //보유수량이 있으면 if (Account1.Balance.count > 0) { //전량 시장가 매도 Account1.OrderSell(Signal.code, Account1.Balance.count,Signal.price,1); } } } function Main_OnUp*dateMarket(sItemCode, lUp*dateID) { //체결데이터 수신 업데이트 if (lUp*dateID == 20001) { //루프를 돌아 생성된 종목중 어떤 종목인지 파악 for (i = 0; i < Math.min(itemcnt,100); i++) { //어떤 배열방의 종목인지 찾았으면 if (sItemCode == BL[i]) { //해당 종목 잔고셋팅 Account1.SetBalance(BL[i].code, 0); //잔고 수량이 있을때만 if (Account1.Balance.count > 0) { //하락시 매수할 가격이하 3% 하락이면 추가매수 if (BL[i].current <= Signal.Price[i]*0.97) { Account1.OrderBuy(BL[i].code,EntryVol,Signal.Price[i]*0.97, 0); } } } } } }
프로필 이미지
몬스터
2020-10-17
2790
글번호 225340
답변완료

유진예스스탁 옵션 가격 조회

해외옵션에서 가격 조회시 정상적으로 조회되지 않아 질문드립니다.
프로필 이미지
조띠의하루
2020-10-17
2708
글번호 225339
답변완료

유진예스스탁 Option 시세 관련

국내 옵션과 해외 옵션의 함수 파라미터가 다르네요. 그에 따른 Option 시세표를 한번 만들어보는 중에 오류가 있어 질문 드립니다.
프로필 이미지
조띠의하루
2020-10-17
2722
글번호 225338
답변완료

유진예스스탁 잔고 내역 관련 문의.

구동프로그램 : 유진 예스트레이더 해외선물 전략 실행과 동시에 for문을 돌면서 주문을 넣었는데,, 잔고 수량이 이상하게 잡히네요.
프로필 이미지
조띠의하루
2020-10-17
2687
글번호 225337

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

프로필 이미지
상상소망믿음실천
2020-10-13
11
글번호 225336
0
답변완료

Option 월물 기초자산 설정관련 질문드립니다.

수고가 많으십니다. 첨부파일의 캡처화면 이미지의 Option의 속성창에서 월물에 대한 기초자산을 만기일에 맞추어 매번 재설정을 해야 하는지요 만기일이 지나면 자동으로 다음 월물로 설정을 변경할 수 있는 방법은 없는 걸까요?
프로필 이미지
바람의나라
2020-10-04
2729
글번호 225324
답변완료

주문 취소시 미체결 내역이 제대로 처리되지 않는 문제

안녕하세요. 예스스팟을 이용하여 전략을 구성하던 도중 주문 취소가 필요하여 사용중입니다. 취소는 아래와 같이 진행합니다. var num = Account.GetTheNumberOfUnfills(); for(var i = 0; i < num; i++) { Account.SetUnfillIndex(i); if(Account.Unfill.count > 0 ) { Account.OrderCancel(Account.Unfill.orderNum) } } 그냥 미체결된 내용을 조회하여 전체를 취소하는 것이고 취소자체는 잘 됩니다. 하지만 취소 후 미체결이 1에서 0으로 되었음에도 첨부파일과 같이 미체결내역이 계속 남아있습니다. Account.Refresh() 를 통해서 동기화를 해보아도 이 문제는 그대로더라구요. 또한 이렇게 미체결 내역이 많이 쌓이게 되면 어느순간 전략이 강제로 중지 상태가 됩니다. 수동으로 미체결 내역 재조회를 하면 전체가 갱신되면서 정상 동작으로 돌아옵니다. 이러한 문제를 해결할 수 있는 방법이 있을까요?
프로필 이미지
zwan
2020-10-02
2688
글번호 225323

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

프로필 이미지
ypoetry
2020-10-15
95
글번호 225322