커뮤니티

예스스팟 Q&A

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

프로필 이미지
tktmsl
2020-06-25
210
글번호 225255

관리자에 의해 수식작성 QnA로 이동되었습니다

프로필 이미지
jhk
2020-06-22
9
글번호 225248
0
답변완료

두 종목 페어트레이딩 수식

주식와 선물의 차익거래 수식 부탁드립니다. (매도차익거래 입니다) 삼성전자와 삼성전자선물(근월물)의 가격차를 통한 페어트레이딩 신호를 받고싶습니다. 삼성전자선물 매도 1호가 - 삼성전자주식 매수1호가 가 -1000원 이 될때 매매를 하고 신호를 받는 수식 부탁드립니다. 스팟은 사용해본적이 없어서 그런데.. 설정 방법, 등록 및 작동 방법 등도 안내부탁드려요. 메뉴얼을 못찾겠네요ㅜㅜ 추가로) 엑셀로 자료를 보내어 틱차트로 만들고싶은데 가능할까요? (틱차트가 불가능하다면 1분봉 차트로 부탁드립니다) 예스트레이더로 하고싶은데 예스는 매도1호가 매수1호가 등이 인식 불가능하여 할수가없네요. 삼성전자선물 매수 1호가, 매수1호가의 거래량, 매도 1호가, 매도1호가의 거래량, 현재가, 삼성전자주식 매수 1호가, 매수1호가의 거래량, 매도 1호가, 매도 1호가의 거래량, 현재가, 이렇게 a2셀~j2셀 부터 아래로 쭉 엑셀로 다운받는 코딩을 부탁드립니다.
프로필 이미지
퀀트드래곤
2020-06-26
3781
글번호 225247
답변완료

일봉에서 미완성 신호로 진입하는 수식

수고많으십니다 수식 수정 부탁드립니다(모든 수식은 아래 수식을 골격으로 작성 부탁드립니다) 1.아래와 같은 수식은 5분봉에서 매매가 이뤄지는데 일봉에서 미완성 신호로 진입하려고 합니다 청산은 TRAILING STOP 으로 청산합니다 종목당 1일 1회 진입입니다 2. 현재가+- 1 호가 로 매수(매도)주문 한후 1차정정 현재가+-2 , 2차정정 시장가 로 하는 수식 부탁드립니다 **기타문의 3.가격이 상한가일 경우 무조건 매수종목을 청산하는 수식 4.엑셀에 있는 자료를 읽어서 특정셀의 글자(예: "매수", "매도")나 숫자("1", "2")를 보고 매수, 매도, 주문이 나가게 할 수 있나요? 할 수 있다면 수식을 부탁드립니다 감사합니다~ ===== var 검색주기 = 60;//60초 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("매도주문"); } } }
프로필 이미지
tktmsl
2020-06-25
3721
글번호 225246

터틀3세 님에 의해서 삭제되었습니다.

프로필 이미지
터틀3세
2020-06-19
5
글번호 225245

터틀3세 님에 의해서 삭제되었습니다.

프로필 이미지
터틀3세
2020-06-19
0
글번호 225244
답변완료

디버깅 방법 문의

안녕하세요? 스팟에서 종목검색하여 매수주문을 냈는데, 주문상태가 '오류발생'이라고 나오는데 원인을 알 수 없네요? 원인파악하려면 어떻게 해여하죠? 스팟에서 디버깅하려면 어떻게 해야하나요?
프로필 이미지
대청중
2020-06-17
3468
글번호 225241

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

프로필 이미지
tktmsl
2020-06-16
22
글번호 225240
답변완료

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

이전에 게시판에서 올려주신 아래 수식을 수정, 보완 하여 매매를 하고 있습니다. 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
3773
글번호 225239
답변완료

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

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