커뮤니티

예스스팟 Q&A

답변완료

시스템 수식 수정 문의

0915시에 "분봉장중단타1.5" 파워검색 실시 후 나온 종목들에 대해 시스템을 실행하려고 합니다. 아래와 같이 코딩했는데... 어디가 문제인지 모르겠습니다. ㅜㅡ var List; var ListCnt; var ReqCount; var HHMMSS,HHMMSS1; //스팟 첫 실행시 function Main_OnStart() { Main.MessageLog("시작"); //시작 메세지 출력 Main.SetTimer(1,60000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { var d = new Date(); HHMMSS1 = HHMMSS; HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (HHMMSS >= 093000 && HHMMSS1 < 0930) // 0930시 파워검색 실시 { Main.ReqPowerSearch("분봉장중단타1.5"); Main.MessageLog("파워검색시작"); Main.KillTimer(1); } } } function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신 { List = aItemList; //검색된 종목코드를 저장 ListCnt = nCount; //검색된 종목수 저장 Main.SetTimer(2,2000);//2초 타이머 ReqCount = 0; } function Main_OnTimer(nEventID) { if (nEventID == 2) //2초 단위로 한종목씩 차트 생성 { if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료 Main.KillTimer(2); //ReqCount번째 종목요청 //종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청 //차트설정 :종목, 주기 분봉, 조회건수 1500 var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false); //시스템 설정 var S1 = new SystemInfo("feel29na_ver_1.0"); //C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성 Main.ReqChartEx(C1,S1); ReqCount = ReqCount+1;//요청횟수 1증가 } } //생성된 차트에서 신호가 발생하면 function Main_OnRiseSignal(ChartEx, Signal) { //신호완성 출력 Main.MessageLog("신호발생"); //매수신호 발생하면 매수주문 if (Signal.signalKind == 1) { Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1); Main.MessageLog("매수"); } //청산신호 발생하면 매도주문 if (Signal.signalKind == 2) { Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1); Main.MessageLog("매수청산"); } }
프로필 이미지
feel29na
2020-08-17
2314
글번호 225298

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

프로필 이미지
훈sys
2020-08-10
1
글번호 225297

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

프로필 이미지
edan
2020-08-02
4
글번호 225293
답변완료

실시간 가격비교 중 GetHigh 관련문의

안녕하세요. 예스스팟을 이용해서 전략들을 만들고있는데 궁금한 부분이 생겨서 문의드립니다. 매수 이후에 타이머를 500ms 간격으로 돌면서 현재 가격과 비교하여 어느정도 이상이면 청산을 하도록하는 내용입니다. 처음에는 Account 객체안의 balance에서 제공하는 보유종목의 현재가격과 비교하였으나 급격한 변화가 잇을경우 뫀표가에 도달했음을 놓치고 지나갈수노 있다는 생각이 들더라구요. 그래서 차트객체에서 GetHigh를 통해 현재 진행중인 봉의 최고가와 비교를 하도록 하고있습니다. 그런데 종종 GetHigh에서 제대로된 값을 얻을수 없다는 참조오류가 발생하더라구요. 틱봉일때 주로 발생하는것 같긴한데 왜 이런문제가 발생하는걸까요? 해결방법이나 다른 접근방싴이 있을까요?
프로필 이미지
zwan
2020-07-30
2350
글번호 225292
답변완료

예스스팟 신용주문

하이투자 예스트레이더로 시스템구현하여 시험주문으로 테스트돌리고있는데 유통융자주문으로 신용주문을 넣으니 오류가뜨네요 자기융자만 지원이라고 뜨는데 유통융자로 신용주문 불가능한건가요? 그리고 자기융자로 주문을 설정하면 어떻게되나요? 손매매로 신용주문해보면 항상 유통융자로만뜨던데 가능여부도 알려주시면 감사하겟습니다
프로필 이미지
하얀머리
2020-07-30
2139
글번호 225291
답변완료

종목 검색 및 검색된 종목에 대한 시스템 자동 적용

안녕하세요... 예스스팟은 잘 몰라서.. 기초적인 질문일 수 있으나.. 여쭙습니다. 예스랭귀지로 작성한 검색식 A를 0915시에 실시하고 기다렸다가 0930시에 다시 실시하고 그렇게 모아진 종목들에 대해서 예스랭귀지로 작성한 B라는 시스템식을 적용하고 싶은데.. 기본 틀이라도 부탁드립니다.
프로필 이미지
feel29na
2020-07-28
2099
글번호 225290
답변완료

수식 점검 좀 해 주세요^^;;

3.0 근접 옵션 매수식인데.. 예스스팟에서 실행하면 12번째 줄이 ubexpected token;; 이라고 나오네요.. 12번째줄이 요놈... function Main::OnStart() 혹시 수식연습할 수 있는데 예제들이 있나요? ---------------------------------------------------------- var CPrice = new Array(101); var CCode = new Array(101); var PPrice = new Array(101); var PCode = new Array(101); var MaxCall; var MaxCallCode; var MaxPut; var MaxPutCode; function Main::OnStart() { //ATM-50~+50까지 종목중 0~3사이 종목을 제외하고 모두 -1처리 for(var i = -50; i <= 50; i++) { if (Option.GetCurrent(0,i) < 3 && Option.GetCurrent(0,i) > 0) { CPrice[50+i] = Option.GetCurrent(0,i); CCode[50+i] = Option.GetATMCallRecent(i); } else { CPrice[50+i] = -1; CCode[50+i] = -1; } if (Option.GetCurrent(1,i) < 3 && Option.GetCurrent(1,i) > 0) { PPrice[50+i] = Option.GetCurrent(1,i); PCode[50+i] = Option.GetATMPutRecent(i); } else { PPrice[50+i] = -1; PCode[50+i] = -1; } } //저장된 CPrice, PPrice값중 최고값 계산 MaxCall = -1; MaxCallcode = -1; MaxPut = -1; MaxPutcode = -1; for(var A = 0; A <= 100; A++) { if (CPrice[A] > MaxCall) { MaxCall = CPrice[A]; MaxCallcode = CCode[A]; } if (PPrice[A] > MaxPut) { MaxPut = PPrice[A]; MaxPutcode = PCode[A]; } } Main.MessageLog("가격:"+MaxCall+"종목코드:"+MaxCallcode); Main.MessageLog("가격:"+MaxPut+"종목코드:"+MaxPutcode); }
프로필 이미지
비오80
2020-07-27
1976
글번호 225289

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

프로필 이미지
tktmsl
2020-07-23
113
글번호 225288
답변완료

가격 호가 데이터를 엑셀로 내려받고 싶습니다

엑셀로 틱 데이터를 보내는 방법이 궁금합니다. 삼성전자선물 매수 1호가, 매수1호가의 거래량, 매도 1호가, 매도1호가의 거래량, 현재가, 삼성전자주식 매수 1호가, 매수1호가의 거래량, 매도 1호가, 매도 1호가의 거래량, 현재가, 이렇게 a2셀~j2셀 부터 아래로 쭉 엑셀로 다운받는 코딩을 부탁드립니다. 첫번째 틱 발생 시(틱으로 구현이 안되면 분으로 구현해도 됩니다) A2 셀 : 삼성전자선물 매수1호가의 가격 B2 셀 : 삼성전자선물 매수1호가의 거래량 C2 셀 : 삼성전자선물 매도1호가의 가격 D2 셀 : 삼성전자선물 매도1호가의 거래량 E2 셀 : 삼성전자선물 현재가 (이게 없다면 E2셀은 그냥 넘어가셔도 됩니다) F2 셀 : 삼성전자주식 매수1호가의 가격 G2 셀 : 삼성전자주식 매수1호가의 거래량 H2 셀 : 삼성전자주식 매도1호가의 가격 I2 셀 : 삼성전자주식 매도1호가의 거래량 J2 셀 : 삼성전자주식 현재가 (이게 없다면 J2셀은 그냥 넘어가셔도 됩니다) 두번째 틱 발생 시 A3 B3 C3 D3 E3 ... 세번째 틱 발생 시 A4 B4 C4 D4 E4 ...
프로필 이미지
퀀트드래곤
2020-07-23
2639
글번호 225287
답변완료

문의 드립니다.

항상 노고의 감사드립니다. 랭귀지 가이드로 스팟구현을 하려고하는데 너무 초보라 많이 부족합니다. [밑에 랭귀지식을 스팟으로 가이드 부탁드립니다.]챠트객체없이 잔고객체만 추가해서 구현하려합니다. 종목수는 10-15개 종목정도.... 매수/매도의 (%수치만) 외부객체로 가능하면 부탁드립니다. 또한 매수 총금액의 범위는 "전날종가기준평가금액"의 50%이하입니다. input : ndate(),전날종가기준평가금액();//<==CurrentContracts*C(1)?? if sdate >= ndate Then { if MarketPosition == 0 Then buy();//<==(매수는 수동매수입니다.) if MarketPosition == 1 Then { if CurrentContracts*C > (전날종가기준평가금액*1.05) Then//<==1.05는 외부객체로 부탁드립니다. { ExitLong("매도종목코드",OnClose,def,"",int(abs(전날종가기준평가금액-(CurrentContracts*C))/C),시장가); } if CurrentContracts*C < (전날종가기준평가금액*0.95) Then//<==0.95는 외부객체로 부탁드립니다. { Buy("매수종목코드",OnClose,def,int(abs(전날종가기준평가금액-(CurrentContracts*C))/C),시장가); } } }
프로필 이미지
초보로직
2020-07-31
2738
글번호 225284