커뮤니티

예스스팟 Q&A

답변완료

수식문의드립니다.

관심종목에 등록된 종목들의 확장차트를 만들고 시스템을 적용하여 매수매도 신호에 따라 주문하고자 합니다. -관심종목에 등록된 종목의 확장차트 생성, 시스템 적용 -보유종목은 3개로 제한 (3종목 보유중에 한종목 청산되면 이후에 나오는 신호는 정상적으로 매수) -첫번째 매수신호 발생시 100만원매수 (현재가) -두번째 매수신호 발생시 100만원매수 (현재가) -매도신호 발생시 전량매도 (현재가) -매도신호 발생시 미체결매수주문 있는경우 전량 취소. -매도신호 발생시 전량 체결되지 못하고 남은물량이 있을경우 -2%하락시 전량 시장가 매도 1거래일~3거래일 보유하는 경우도 있는데 혹시 프로그램 시작할때 보유중인 종목에 대해 따로 처리해야 할 부분이 있는지 궁금합니다. 따로 처리해야할 부분이 있다면 포함해서 수식 작성 부탁드립니다. 감사합니다.
프로필 이미지
jba
2018-06-07
2557
글번호 224445
답변완료

질문 드립니다.

예스트레이더 수식작성 부탁하던 중 1분봉 상 익일 시가 매도 전략이 있었는데, 시가에 바로 매도는 불가능하고 1분봉 하나가 완성이 되어야 매도가 가능하다고 합니다. 예스스팟이 좀 더 정교한 전략 작성이 가능하다고 들었는데 예스스팟에서는 익일 시가에 바로 매도가 가능한지요?
프로필 이미지
풍운객
2018-05-26
2560
글번호 224441
답변완료

잔고 객체 개선 건의

안녕하세요. 전략을 만들어서 실행하려다보니 부족한 부분이 있어서요. 잔고(Balance) 객체에 매수일을 좀 받아올 수 있으면 좋겠습니다. 보니까 대출일(loanDate) 정도만 있는데요. 매수일도 데이터로 제공해 주시면 감사하겠습니다.
프로필 이미지
울리카
2018-05-26
2587
글번호 224440
답변완료

문의 드립니다.

현재 예스트레이더로 전략을 작성해서 장 종료 후에 각 종목(일봉 기준)의 시고저종, 이격도(당일,전일), 주기 수정된 MACD(당일, 전일), 청산시점(진입후 50% 상승한 날짜, 금액, 손절가격)등 2~30종류의 데이터를 만들어서 수기로 엑셀다운로드 해서 스윙거래 시뮬레이션 중입니다. 그런데 종목 수가 많아지니까 이걸 매번 차트를 열어서 print를 찍는게 상당한 시간이 소요되고, 진입일자가 다르다보니 뭔가 전략식을 다시 설정해주기도 해야해서 복잡합니다. 그래서 혹시 예스스팟으로 다수 종목의 여러 데이터(가격데이터, 보조지표 데이터(MACD, 이격도, 거래량 등))을 일괄로 다운로드 받을 수 있는지 궁금합니다. 전일 데이터도 동시에 받을 수 있으면 더욱 좋구요. 다수 종목 자동거래 프로그램도 예스스팟으로 만들 수 있으면 더더욱 좋겠습니다. 답변 부탁드리겠습니다. 감사합니다.
프로필 이미지
깜피
2018-05-26
2767
글번호 224439
답변완료

미완성신호 지속

var T; function Main_OnStart() { T = 0; Main.MessageLog("시작"); OrderCode = Main.GetOrderCode(KP.code); } function C1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("미완성신호/"+IncompleteSignal.signalKind); A1.SetBalance(Main.GetOrderCode(IncompleteSignal.code)) } " 이하생략 " 위의 수식을 미완성신호가 60초 이상 계속유지 되는 경우에 한하여 시스템이 적용 되도록 수식의 변경을 부탁 합니다..
프로필 이미지
너무조아
2018-05-25
2711
글번호 224435

현윤아빠 님에 의해서 삭제되었습니다.

프로필 이미지
현윤아빠
2018-05-26
5
글번호 224434
답변완료

거래량 순위로 종목검색될 수 있도록 기능 추가/수정 요청합니다.

스팟으로 프로그램 구현하고 있는 중에 "시장검색 > 거래량/거래대금 상위종목"을 사용하려고 테스트 해본 결과 제목과 달리 하위로 보이는 종목들도 검색되고 있었습니다. 그래서 담당자분에게 문의해보니 원래 전종목이 검색되는 것이 맞고 필요시 거래량 순으로 정렬해서 사용하라고 하시더군요. 답변이 전혀 이해되지는 않지만(정렬해서 짤라써야하 한다면 "거래량/거래대금 상위종목"과 같은 조건식은 왜 제공되고 있는건지? 만약 그렇다면 조건식이라고 얘기할 수 있는지도 모르겠습니다), 혹시나 검색결과 이벤트에서 수신한 데이터가 거래량이 높은 순으로 정렬되어있진 않을까 싶어 테스트해보니 거래량 순서와는 전혀 관계없는 것 같고... 스팟, 예스랭귀지의 모든 기능을 알지는 못하지만, 지금까지 다방면으로 테스트해본 결과 거래량 상위 종목을 필터할 수 있는 방법은 없는 것으로 판단됩니다. "시장검색 > 거래량/거래대금 상위종목"을 제목대로 의미있게 사용할 수 있도록 기능 추가 또는 수정을 요청드립니다. 혹시 다른 방법이 있다면 가이드 바랍니다. [ 거래량 상위 종목 검색이 불가하다고 판단한 이유 ] 1. 키움영웅문의 "상위100종목"과 같이 특정 범위를 제한할 수 있는 옵션도 없고, 2. 스팟 이벤트에서 수신한 검색결과를 보면 소팅도 전혀 안되어 있고, ==> 일단 정렬이라도 되어있어야 관심종목이든 뭐든 연계해서 사용할 수 있을 것 같습니다. 3. 그렇다면 Market Data로 정렬하는 방법을 구현해야하는 것인데, 방금 검색된 569개 종목의 Market Data를 모두 수신하여 정렬하는 것은 현실적으로 불가 ==> 한번에 요청할 수 있는 Market Data도 한정되어 있는 것으로 보이고, 569개 Market Data를 수신하여 프로그램 코드로 정렬하더라도 장중 상황은 이미 변경되어있을 것입니다. [ 희망하는 기능 (스팟에서 구현 시) ] 1. 거래량, 거래대금 상위 X개 종목 필터 2. 1번이 안된다면 "시장검색 > 거래량/거래대금 상위종목" 검색 시 정렬된 결과로 수신 3. 1, 2번 모두 안된다면 트레이더 종목검색에서 설정한 옵션대로 정렬된 결과를 수신 설마 그러시진 않으시겠지만... 종목검색 설정에서 거래량 범위를 정하라와 같은 전혀 공감되지 않는 답변 말고, 말씀드린 사용 목적에 해당되는 적절한 가이드를 요청드립니다.
프로필 이미지
gutentak
2018-05-23
3156
글번호 224433

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

프로필 이미지
jba
2018-05-23
6
글번호 224432
답변완료

종목검색 후 자동매매(2)

안녕하세요.~ 저번에 받은 도움으로 종목검색 후 자동매매는 잘 실행되고 있습니다. 다시 한번 감사드립니다. 이번에는 다르게 생각해서 시스템을 구현해 보려고 합니다. 다름이 아니오라, 종목검색은 하지않고, 기존의 관심종목에 있는 종목들로 확장차트를 생성하고, 시스템전략식을 적용하여 매수/매도 신호를 얻어 자동매매를 해보려고 합니다. 즉, 매매할 종목들을 사전에 관심종목에 추가해 놓고, 이 종목들로만 자동매매를 하려고 합니다. 바쁘신 와중에 죄송하지만, 수식을 부탁드립니다. 감사합니다. =================================== //종목검색 후 자동매매 var ItemList; var Count; var ReqCount; function Main_OnStart() { Main.MessageLog("스팟시작"); Main.MessageLog("종목검색시작"); Main.ReqPowerSearch("#파워종목검색명"); } function Main_OnRcvItemList(aItemList, nCount) { ItemList = aItemList; Count = nCount; Main.SetTimer(1, 1000); ReqCount = 0; } function Main_OnTimer(nEventID) { if (nEventID == 1) { var StopSet = new SystemStopInfo(new StopLoss(4, CALCMETHOD_PERCENT, 0xFFDA93), new StopTrailing(2, 5, CALCMETHOD_PERCENT, 0), //new StopProfitTarget(10, CALCMETHOD_PERCENT, 0xFFDA93), //new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93), new StopEndOfDay(151500)); var ChartSet = new ReqChartItem(ItemList[ReqCount],1,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("#시스템전략명", YL_TYPE_NORMAL, null, null, null); Main.ReqChartEx(ChartSet,SystemSet); Main.MessageLog("확장차트생성_"+ItemList[ReqCount]); ReqCount = ReqCount+1; if (ReqCount == Count) { Main.KillTimer(1); Main.MessageLog("종목검색완료"); } } } //신호발생 function Main_OnRiseSignal(ChartEx, Signal) { //신호발생 종목에 대해 잔고셋팅 Account1.SetBalance(Main.GetOrderCode(Signal.code),0); //매수신호이고 잔고가 없을때만 매수 if (Signal.signalKind == 1 && Account1.Balance.count == 0) { Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(50000/ChartEx.GetClose(1,0)),0,1); Main.MessageLog("매수주문"); } if (Signal.signalKind == 2) { //전체미체결주문 갯수 var num = Account1.GetTheNumberOfUnfills(); //전체 미체결수 만큼 루프를 돌면서 for (var i = 0; i < num; i++) { //미체결을 하나씩 셋팅하고 Account1.SetUnfill(i); //미체결종목이 신호종목과 같고 미체결수량이 있으면 if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0) { Account1.OrderCancel(Account1.Unfill.orderNum); } } //잔고수량만큼만 매도 if (Account1.Balance.count > 0) { Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1); Main.MessageLog("매도주문"); } } }
프로필 이미지
아름다운사람들
2018-05-21
3034
글번호 224431
답변완료

문의 드립니다.

On업데이트Market 함수 사용법을 알고싶습니다. function Main_On업데이트Market(sItemCode, l업데이트ID) { if ( sItemCode == Main.GetOrderCode(MarketData1.code) && l업데이트ID == 20001 ) { ... } } 이런식으로 사용하니까 함수가 작동을 안합니다. 위에 식이 잘못 사용한건지 ? 아니면 이것도 타이머함수처럼 OnStart 에서 설정을 해야되는게 있나요 ? 설명 부탁드립니다. 좋은 하루 되세요. ^^
프로필 이미지
자오지환웅
2018-05-18
2621
글번호 224428