커뮤니티

예스스팟 Q&A

답변완료

기존의 파워종목검색 자동매매 수식에 정정주문 추가 부탁드립니다.

이전에 게시판에서 올려주신 아래 수식을 수정, 보완 하여 매매를 하고 있습니다. 1. 2분간격으로 사용자 종목검색을 지속적으로 수행 2. 새로 검색된 종목에 대해 차트 생성, 기존 검색된 차트는 유지 3. 종목검색에서 새로 파악된 종목을 확장차트로 시스템 적용 4. 확장 차트 생성은 50개 이하로 제한 여기에 자동정정주문 기능을 추가하려고 하는데 잘 안되서 수식 부탁 드립니다. 매수 매도 공통적으로 지정가로 주문이 나간 후 미체결시 60초 후에 현재가 정정주문 다시 60초 후에 상대1호가 정정주문 (수식이 복잡하면 60초 후에 상대 1호가 정정 주문으로라도 작성 꼭 부탁드립니다.) 항상 감사합니다. 즐거운 한 주 되세요~ var 검색주기 = 120;//120초 var ItemList = [],CT = []; var HHMMSS,req; function Main_OnStart() { CTcnt = 0; Main.SetTimer(1, 5000); Main.MessageList("start"); } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //9시 이후에 2분간격으로 종목검색 확장차트가가 50개 이하일때 반복적으로 검색 if (nEventID == 1 && HHMMSS >= 090000 && CT.length < 50) { Main.KillTimer(1); Main.MessageList("종목검색 요청"); Main.ReqPowerSearch("전략1"); } } function Main_OnRcvItemList(aItemList, nCount) { Main.MessageList("종목검색 완료 nCount : ",nCount); if (nCount > 0) { ItemList = []; //첫검색일때 if (CT.length == 0) { ItemList = aItemList; } else //두번쨰 이후(차트가 만들어진 종목을 제외하고 새로운 종목만 집계) { for (var i = 0; i < nCount; i++ ) { var add = true; for (var x = 0; x < CT.length; x++ ) { if (aItemList[i] == CT[x].GetCode(1)) { add = false; } } if (add == true) { ItemList.push(aItemList[i]); } } } Main.MessageList("종목검색 완료 ItemList :",ItemList.length); //집계된 종목이 1개 이상이면 순차적으로 차트객체 요청 if (ItemList.length > 0 && CT.length < 50) { req = 0; 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[req],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("10전략1", YL_TYPE_NORMAL, null, null, StopSet); Main.MessageList("현재차트갯수 : ",CT.length); Main.MessageList(req,"차트객체요청 : ",ItemList[req]); Main.ReqChartEx(ChartSet,SystemSet); } else { if (CT.length < 50) { Main.SetTimer(1, 검색주기*1000);//120초 } } } } function Main_OnRcvChartEx(ChartEx) { if (ItemList[req] == ChartEx.GetCode(1)) { CT[CTcnt] = ChartEx; Main.MessageList(CTcnt,"차트객체생성 : ",CT[CTcnt].GetCode(1)); CTcnt = CTcnt +1; req = req + 1; if (req < ItemList.length && CT.length < 50) { 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[req],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet); var SystemSet = new SystemInfo("10전략1", YL_TYPE_NORMAL, null, null, StopSet); Main.MessageList("현재차트갯수 : ",CT.length); Main.MessageList(req,"차트객체요청 : ",ItemList[req]); Main.ReqChartEx(ChartSet,SystemSet); } else { Main.MessageList("Search1 차트객체요청종료"); //만들어진 차트가 50개 이하이면 if (CT.length < 50) { Main.SetTimer(1, 검색주기*1000);//120초 } } } } //신호발생 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(100000/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("매도주문"); } } }
프로필 이미지
그린메일
2020-06-13
3756
글번호 225239
답변완료

비트코인의 종목이름이 어떻게 되는지요?

var ChartSet = new ReqChartItem("btc_KRW_Bithumb",5,CHART_PERIOD_MINUTE,1000,CHART_REQCOUNT_BAR,false,false); 라고 했더니 TypeError: "2" 는 조회대상 종목이 아닙니다. 라고 나타납니다.
프로필 이미지
kingboy
2020-06-10
3497
글번호 225238
답변완료

DLL은 여전히 지원하지 않는지요

매뉴얼에 DLL확장 제공 예정이라고만 써있고 현재까지 변동이 없는데 현재도 이 상태인지 알고싶습니다. 또는, 예스스팟 외부와 TCP든 HTTP든 통신이 가능한 방법이 없는지 알고싶습니다. 예스트레이더에서 시스템트레이딩을 통해 체결되는 상황을 외부로 통지해주려는 것이 목적입니다.
프로필 이미지
notebox
2020-06-08
3494
글번호 225237

영원한자유 님에 의해서 삭제되었습니다.

프로필 이미지
영원한자유
2020-06-13
17
글번호 225236
답변완료

종목의 전일 값 참조

계좌에 있는 종목들의 전일 고가나 저가를 참조할 수 있는지 궁금합니다.
프로필 이미지
ruach
2020-06-01
3239
글번호 225233
답변완료

ODBC 패스워드

안녕하세요? 스팟에서 데이터베이스 객체를 사용하고 있습니다. 원격 데이터베이스를 연결할 때는 항상 패스워드 입력창이 나오던데, 매번 입력하지 않도록 저장하는 방법은 없나요?
프로필 이미지
다인아빠
2020-05-31
3617
글번호 225232
답변완료

당일 매수종목과 전일 보유종목 다른 매도전략

금일 매수된 현물 주식은 손절 -5프로 적용하고 전일 매수됬던 현물 주식은 손절 -3프로 매도 하는 로직이 가능한지 궁금합니다. 매수는 다른 별개 로직으로 매수합니다. 감사합니다.
프로필 이미지
영원한자유
2020-05-28
3325
글번호 225231

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

프로필 이미지
데칸
2020-05-20
3
글번호 225220
답변완료

스팟 수식 부탁드립니다.

안녕하세요 예스스팟을 통해 아래의 조건을 구현하고 싶습니다. 기본 골격을 부탁드립니다. 감사합니다. 1) 진입조건 발생시 - 1차 진입 - 미체결시 1호가 변경 진입시도 - 2차 진입 - 미체결시 2호가 변경 진입시도 - 3차 시장가 진입 2) 청산조건 발생시 - 1차 청산 - 미체결시 1호가 변경 청산시도 - 2차 시장가 청산 3) 손절(40틱) / 익절(40틱) 4) 스탑트레일링 ( 20틱/ 7틱 ) - 20틱이상 수익상태에서 반대로 7틱이상 하락하면 청산 5) 거래시간 ( 09:00 ~ 22:00 / 22:50 ~ 05:30 ) - 22:01~22:49 (거래정지) - 22:00 과 05:30 에 진입 Position이 있으면 시장가 청산 6) 당일 누적 수익(100틱)/손실(100틱) 도달시 당일 거래 완전정지 -끝.-
프로필 이미지
워싱턴
2020-05-17
3337
글번호 225219

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

프로필 이미지
cs아빠
2020-05-13
3
글번호 225218