커뮤니티

예스스팟 Q&A

답변완료

교대 하이 투자 때 들은 셈플이 혹 올라와 있나요?

안녕하세요. 교대 하이에서 명 강의를 수강한 사람입니다. 다름이 아니오라. 스팟을 이용할때, 강사님이 사고 파는 기본 스팟 프로그램 코딩을 보여 주셨는데. (살 때 보유 종목인지 등 확인) 그 매매의 기본이 되는 소스 혹 스팟 faq 에 있나요? 찾아도 못 찾아서 글 올립니다. 메뉴얼 문서의 위치 알려 주셔도 감사하겠습니다. 그럼 맛 점하십시오.
프로필 이미지
비범애비
2018-06-20
1880
글번호 224480
답변완료

전략 챠트 구현해주시나요?

안녕하세요? 저는 해외파생 트레이닝을 하고있는 사람입니다^^* 전략이 있긴한데 함수나 수식은 모르고 한글로 풀어서 이야기 할수는 있는데 혹시 구현해 주실수있나요? 첨부 화일은 두 가지 전략을 구현한 챠트인데 다른 전략이 더 있어서요!! 이렇게 표현이 가능한지 궁금합니다
프로필 이미지
잼나는걸
2018-06-19
1978
글번호 224479

택군아 님에 의해서 삭제되었습니다.

프로필 이미지
택군아
2018-06-18
18
글번호 224477
답변완료

문의 드립니다.^.^

안녕하세요? 작성해 주심 전략 감사합니다... 아래 전략에 오일거래를 할수 있도록 수정 부탁드리겠습니다. 감사합니다...^.^ var CallCode,CallID,CallNum,CallFill; var PutCode,PutID,PutNum,PutFill; var entry; var vol = 1;//진입수량 function Main_OnStart() { //타이머 5초단위 Main.SetTimer(1, 5000); step = 0; CallFill = false; PutFill = false; } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (step == 0 && HHHMMSS > 110000) { //step은 1로 변경 step = 1; //ATM콜 종목코드 CallCode = Option1.GetATMCallRecent(0); //ATM풋 종목코드 PutCode = Option1.GetATMPutRecent(0); //Call종목 매수3호가로 매도주문하고 주문아이디는 CallID에 저장 CallID = Account1.OrderSell(CallCode,vol,Option1.GetBid(CallCode,3),0); //Put종목 매수3호가로 매도주문하고 주문아이디는 PutID에 저장 PutID = Account1.OrderSell(PutCode,vol,Option1.GetBid(PutCode,3),0); } //양매도 후 콜/풋 모두 체결이 되었으면 if (HHHMMSS > 110000 && step == 1 && CallFill == true && PutCall == true ) { //손익저장할 변수(초기값0) var sumPL = 0; //CallCode 잔고셋팅 Account1.SetBalance(CallCode,0); //수량이 1이상이고 매도포지션이면 손익을 sumPL에 합산저장 if (Account1.Balance.count >= 1 && Account1.Balance.position == 1) { sumPL = SumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } //PutlCode 잔고셋팅 Account1.SetBalance(CallCode,0); //수량이 1이상이고 매도포지션이면 손익을 sumPL에 합산저장 if (Account1.Balance.count >= 1 && Account1.Balance.position == 1) { sumPL = SumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current); } //합산손익이 +0.5 이상이면 if (sumPL >= 0.5) { //step은 2로 변경 step = 2; //콜풋 모두 매도3호가로 매수주문 Account1.OrderBuy(CallCode, vol, Option1.GetAsk(CallCode, 3), 0); Account1.OrderBuy(PutCode, vol, Option1.GetAsk(PutCode, 3), 0); } } //수익청산되지 않고 15시가 되면 if (step == 1 && HHHMMSS >= 150000) { //step은 2로 변경 step = 2; Main.KillTimer(1); //콜풋 모두 매도3호가로 매수주문 Account1.OrderBuy(CallCode, vol, Option1.GetAsk(CallCode, 3), 0); Account1.OrderBuy(PutCode, vol, Option1.GetAsk(PutCode, 3), 0); } } //주문응답수신 function Main_OnOrderResponse(OrderResponse) { //수신된 주문응답의 아이디가 CallID와 같으면 if (OrderResponse.orderID == CallID) { //CallNum에 주문번호저장 CallNum = OrderResponse.orderNum; } //수신된 주문응답의 아이디가 PutID와 같으면 if (OrderResponse.orderID == PutID) { //PutNum에 주문번호저장 PutNum = OrderResponse.orderNum; } } //체결응답수신 function Main_OnNotifyFill(NotifyFill) { //CallNum에 대한 체결응답이면 if (NotifyFill.orderNum == CallNum) { //CallNum에 대한 미체결객체 세팅하고 Account1.SetUnfill(CallNum); //미체결수량이 없으면(주문전량체결) if (Account1.Unfill.count == 0) { //CallFill에 true 저장 CallFill = true; } } //PutNum에 대한 체결응답이면 if (NotifyFill.orderNum == PutNum) { //PutNum에 대한 미체결객체 세팅하고 Account1.SetUnfill(PutNum); //미체결수량이 없으면(주문전량체결) if (Account1.Unfill.count == 0) { //PutFill에 true 저장 PutFill = true; } } }
프로필 이미지
하늘북
2018-06-17
2172
글번호 224476

하늘북 님에 의해서 삭제되었습니다.

프로필 이미지
하늘북
2018-06-17
0
글번호 224475
답변완료

차트객체의 종목변환 코딩이 가능한가요?

안녕하세요. 차트객체의 현재 종목을 조건에 따라 프로그램상으로 변경을 시킬 수 있나요? 현재 차트객체에는 GetCode 함수는 확인하였으나, SetCode 와 같이 현재 차트객체의 설정변경은 불가한 것 같네요.
프로필 이미지
치우장
2018-06-16
2237
글번호 224474
답변완료

문의

BXID = a1.OrderSell (order1.code , a1.Balance.count , order1.Bid(1) , 2 ) ; 위 수식으로 예스트레이더에서는 잔고수량을 불러와서 매도 처리가 되는데 글로벌에서는 첨부파일처럼 잔고수량이 "0"으로 매도처리가 않되네요 글로벌에서 잔고수량과 포지션을 불러오는 수식 부탁드립니다 첨부파일2번관련입니다 예스트레이더에서 스팟식으로 작동한 첨부파일을 보시면 주문번호 240으로 3개 미도하고 270 ,275 번으로 한개씩 2개를 매수하고 주문번호 276으로 잔량 전부 청산 매수를 하도록 하였는데 잔고수량이 1개가 아니고 2개로 인식되어 처리됩니다. 왜 그런지요 ?
프로필 이미지
파일럿
2018-06-18
2140
글번호 224473
답변완료

문의드립니다.

수고하십니다. 장 종료후 계좌의 주식 현물 전 종목을 엑셀로 불러온 후에, 각 종목당 지정가 매도가격과 추가 매수가격을 기입해서 다음날 아침 8시 한번에 주문을 내는 식 부탁드립니다. 안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 첨부된 그림과 같이 표시됩니다. 잔고객체에 종목명은 없어 별도로 종목개체 생성해서 사용하게 되어 있습니다. var V1 = []; var V2 = []; var V3 = []; var V4 = []; var V5 = []; var num; function Main_OnStart() { Main.SetTimer(1, 1000); } function Main_OnTimer(nEventID) { Main.KillTimer(1); num = Account1.GetTheNumberOfBalances(); Excel1.SetData(1, "A1","보유종목수"); Excel1.SetData(1, "B1",num); Excel1.SetData(1, "A2","종목명"); Excel1.SetData(1, "B2","종목코드"); Excel1.SetData(1, "C2","평단가"); Excel1.SetData(1, "D2","보유수량"); Excel1.SetData(1, "E2","현재가"); if (num > 0) { req = 0; Account1.SetBalance(req); V2[req] = Account1.Balance.code; V3[req] = Account1.Balance.avgUnitCost; V4[req] = Account1.Balance.count; V4[req] = Account1.Balance.current; Main.ReqMarketData(Account1.Balance.code,0,0); } } function Main_OnRcvMarketData(MarketData) { V1[req] = MarketData.name; req = req+1; if (req < num) { Account1.SetBalance(req); V2[req] = Account1.Balance.code; V3[req] = Account1.Balance.avgUnitCost; V4[req] = Account1.Balance.count; V4[req] = Account1.Balance.current; Main.ReqMarketData(Account1.Balance.code,0,0); } else { Excel1.SetArrayToCol(1,"A3",V1); Excel1.SetArrayToCol(1,"B3",V2); Excel1.SetArrayToCol(1,"C3",V3); Excel1.SetArrayToCol(1,"D3",V4); Excel1.SetArrayToCol(1,"E3",V4); } }
프로필 이미지
여세우
2018-06-20
2252
글번호 224472
답변완료

매도로직대로 실행이 안돼서 문의드립니다.

안녕하세요. 제가 첨으로 예스스팟 게시판 보고 참고해서 프로그램을 완성했는데요. 파워종목 검색으로 주문 넣고 매수 후에 기준가에서 1% 씩 오를때마다 일정수량(10%)을 매도하는 프로그램을 만들었는데요. 종목 검색후 매수(20종목)까지는 무난하게 잘 돌아갑니다. 그런데 익절에서 기준가 대비 1% 상승시 보유수량에 10%, 2% 상승시 보유수량에 20%, 3% 상승시 보유수량에 20%, 4% 상승시 보유수량에 10%, 5% 상승시 보유수량에 10%를 매도하고 10시에 타임컷을 실행하려고 하는데요. 다 잘 돌아가는데 예를 들어 20종목을 매수했는데 어떤 종목은 위 매도로직에 의해 매도가 잘 되는 반면 어떤 종목은 매수가에서 3%까지 상승해도 매도가 안되는 경우가 생기고 해서 뭐가 잘못된건지 모르겠어요ㅜㅜ 매수 종목수가 많아서 그럴까요? 대략 목표치에 도달한 종목중에 10종목중 3종목 정도만 매도 로직대로 매도가 되고 나머지는 매도가 안되고 나중에 타임컷으로 매도가 되었어요. 에러가 뜨면 고치겠는데 에러 메시지가 뜨지도 않으니 뭐가 잘못되었는지 모르겠어요. 코드좀 한번 봐주시기 바랍니다. 그리고 로그 메시지가 따로 저장되는 파일이 존재하나요? 예스스팟에 디버깅이랑 오류창에서만 볼수 있는건가요? 답변좀 부탁드리겠습니다. 그리고 한가지 질문 더 드릴게요. 매도 로직을 하나 더 만들려고 합니다. 분봉을 이용해서 현재 가격 < 30분 and 20분 and 10분 가격 시에 매도하고 싶은데요. 챠트 객체를 이용해서 해야 하나요? 되신다면 간단한 예제좀 부탁드릴게요~ 예스스팟을 배운지 아직 얼마 안돼서 이곳 게시판 보면서 적용하기가 쉽지가 않습니다ㅜㅜ 시간 되시면 답변좀 꼬옥 부탁드려요^^ 감사합니다 function Main_OnU*dateMarket(sItemCode, lU*dateID) { if( lU*dateID == 20001 && RcvData >= 1 ) { for( var i = 0; i < EntryItem.length; i++ ) { if( sItemCode == EntryObject[i].code ) { A1.SetBalanceItem(EntryObject[i].code, 0); // 장중 최고가 세팅 if( EntryObject[i].current > EntryHH[i] ) EntryHH[i] = EntryObject[i].current; // 상한가 도달시 자동 청산 if( EntryObject[i].current >= EntryObject[i].limitUp ) { if( A1.Balance.count >= 1 ) { A1.OrderSell(A1.Balance.code, A1.Balance.count, EntryObject[i].Bid(1), 0); Main.MessageList("상한가 도달로 익절"); } } //1% 도달 - 매수수량의 10% 청산 if( BenefitCnt[i] == 0 && EntryObject[i].current >= A1.Balance.avgUnitCost * 1.01 ) { if( A1.Balance.count >= 1 ) { A1.OrderSell(A1.Balance.code, Math.floor(A1.Balance.count * 0.1), EntryObject[i].Ask(1), 0); Main.MessageList("종목명 : ", EntryObject[i].name, " 진입가에서 1.5% 상승하여 전체 금액의 10% 익절"); } BenefitCnt[i] = 1; } //2% 도달 - 매수수량의 20% 청산 if( BenefitCnt[i] == 1 && EntryObject[i].current >= A1.Balance.avgUnitCost * 1.02 ) { if( A1.Balance.count >= 1 ) { A1.OrderSell(A1.Balance.code, Math.floor(A1.Balance.count * 0.24), EntryObject[i].Ask(1), 0); Main.MessageList("종목명 : ", EntryObject[i].name, " 진입가에서 2% 상승하여 전체 금액의 10% 익절"); } BenefitCnt[i] = 2; } //3% 도달 - 매수수량의 20% 청산 if( BenefitCnt[i] == 2 && EntryObject[i].current >= A1.Balance.avgUnitCost * 1.03 ) { if( A1.Balance.count >= 1 ) { A1.OrderSell(A1.Balance.code, Math.floor(A1.Balance.count * 0.32), EntryObject[i].Ask(1), 0); Main.MessageList("종목명 : ", EntryObject[i].name, " 진입가에서 3% 상승하여 전체 금액의 10% 익절"); } BenefitCnt[i] = 3; } //4% 도달 - 매수수량의 10% 청산 if( BenefitCnt[i] == 3 && EntryObject[i].current >= A1.Balance.avgUnitCost * 1.04 ) { if( A1.Balance.count >= 1 ) { A1.OrderSell(A1.Balance.code, Math.floor(A1.Balance.count * 0.23), EntryObject[i].Ask(1), 0); Main.MessageList("종목명 : ", EntryObject[i].name, " 진입가에서 3% 상승하여 전체 금액의 10% 익절"); } BenefitCnt[i] = 4; } //5% 도달 - 매수수량의 10% 청산 if( BenefitCnt[i] == 4 && EntryObject[i].current >= A1.Balance.avgUnitCost * 1.05 ) { if( A1.Balance.count >= 1 ) { A1.OrderSell(A1.Balance.code, Math.floor(A1.Balance.count * 0.31), EntryObject[i].Ask(1), 0); Main.MessageList("종목명 : ", EntryObject[i].name, " 진입가에서 5% 상승하여 전체 금액의 10% 익절"); } BenefitCnt[i] = 5; } } } } }
프로필 이미지
도도당
2018-06-13
2363
글번호 224471
답변완료

거래량 상워종목 N개 검색식 언제 반영되나요?

지난주 중으로 반영하신다고 하셨는데, 언제쯤 사용가능한가요??
프로필 이미지
gutentak
2018-06-11
2309
글번호 224466