커뮤니티

예스스팟 Q&A

답변완료

신용주문

신용주문 가능 여부를 미리 리턴 받을 수 있는지 궁금합니다. 1. 관심그룹에 종목들을 넣어둔 후에 특정조건을 만족했을 때, 해당 종목이 신용주문이 가능하면 신용주문을 넣고, 불가능하다면 현금주문을 넣도록 코드를 짤 수 있나요? 2. 잔고의 종목코드들을 지정한 후에, 같은 로직으로 매도를 하는데. 해당 종목을 신용으로 매수했으면 신용매도를, 현금으로 매수했으면 현금매도를 하게 코드를 짤 수 있나요? 예제 코드를 써주시면 좋을 거 같습니다. 감사합니다.
프로필 이미지
lean16
2018-09-05
2746
글번호 224586
답변완료

몇가지 질문 있습니다.

안녕하세요. spot 관련 몇가지 궁금한 점이 있습니다. 1) 1분봉 YT 선물신호를 기준으로 spot 거래를 할 때, 예를들어 YT에서 10시 01분 09초에 거래가 발생하여 01분 완성신호가 되었고 이때 spot에서 주문후 setTimer를 5초,10초,15초로 정정주문 셋팅하였을 경우, - YT 09초 주문발생에 의하여 spot주문후 14초,19초,24초에 정정이 발생하나요? - 아니면 spot정정 5초는 무시되고, 9초 주문발생후 --> 10초,15초에 정정 이렇게 되나요? 2) 옵션거래에서 만기주 및 만기전주만 거래를 하고자 할 때, ----> if (Option.GetRemainDays(0, 0) <= 11) 이렇게 조건 수식을 작성하면 되는지요? 이상입니다. 감사합니다 !!
프로필 이미지
새로운세상
2018-09-03
2760
글번호 224585

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

프로필 이미지
ujm
2018-08-31
1
글번호 224584
답변완료

엑셀파일에 종목코드 저장시 텍스트 설정이 풀려서 앞자리 0이 사라집니다.

excelNum = Account1.GetTheNumberOfBalances(); // 기존 시트내용 clear, 예스스팟내에서 시트을 만들거나 시트를 삭제 할수 없음으로 기존 데이터를 잘 관리해야 함. Excel1.Clear(1,"A1","Z200"); // 작성시작 Excel1.SetData(1, "A1","보유종목수"); Excel1.SetData(1, "B1",excelNum); Excel1.SetData(1, "A2","종목명"); Excel1.SetData(1, "B2","종목코드"); Excel1.SetData(1, "C2","평단가"); Excel1.SetData(1, "D2","보유수량"); Excel1.SetData(1, "E2","현재가"); Excel1.SetData(1, "F2","매도가격"); 엑셀파일에 현재 잔고데이타를 저장하고 있습니다. 종목코드 컬럼을 기존에는 엑셀파일에서 텍스트로 지정하여 사용하였기에 종목코드 앞의 0이 그대로 있어 사용하였습니다. 엑셀파일의 기존 내용을 지우는 clear를 사용하고 나서부터는 col를 텍스트로 지정하여도 clear되면서 셀서식이 일반 으로 지정되어 종목코드 앞의 0이 사라집니다. 어떻게 수정하면 될까요? 도움 부탁드립니다.
프로필 이미지
2ndbus
2018-08-30
2776
글번호 224581
답변완료

트레일링 스탑 적용시 에러(정말 빠른 답변 부탁드립니다.)

안녕하세요. 아래수식을 보아 주시고 제가 이 수식을 오늘 당장 적용해야하므로 가능하시다면 정말 빠르게 답변을 부탁드립니다. //계좌객체 Account1 function Main_OnStart() { Main.SetTimer(1,2000);//5초 단위 체크 } function Main_OnTimer(nEventID) { if (nEventID == 1) { //총수익 누적할 변수 var sumPL = 0; var sells = 0; var buys = 0 ; var profits = 0 ; var hh =0 ; //계좌의 종목수 var num = Account1.GetTheNumberOfBalances(); //종목이 2개 이상일때만 if (num >= 1) { //잔고 종목 총손익 계산 for (i = 0; i < num;i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { sumPL = sumPL + (Account1.Balance.avgUnitCost - Account1.Balance.current)*Account1.Balance.count; sells=Account1.Balance.count; } if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { sumPL = sumPL + (Account1.Balance.current - Account1.Balance.avgUnitCost)*Account1.Balance.count; buys=Account1.Balance.count; } } profits= sumPL*100 - (sells + buys)*2*7.5 ; if ( profits >hh ) { hh = profits ; } Main.MessageLog(" profits"+ profits+"달러") ; Main.MessageLog(" hh" + hh+" ") ; Main.MessageLog(" buys"+ buys+"개") ; Main.MessageLog(" sells"+ sells+"개") ; //총손익이 특정값(0)보다 크면 전체 종목 청산 if ( hh > 20 && (profits < ( hh * 0.5 )) ) { hh = 0 ; for (i = 0; i < num;i++) { Account1.SetBalanceIndex(i); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count,0,1); } if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,0,1); } } } //총손익이 순수익 트레일링 스탑으로 전체종목 청산 } } } 에서 profits는 비용까지 계산한 순수한 순수익입니다. profits가 20달러 이상 된 후에 트레일링 스탑을 profits의 최고가 (즉 hh)에서 50% 떨어지면 강제청산하려고 위에서 profits= sumPL*100 - (sells + buys)*2*7.5 ; if ( profits > hh ) { hh = profits ; } 처럼 구성했습니다. 종목이 2종목이상이므로 순수익으로만 트레일링 스탑을 구성하려고 했습니다. profits가 고가hh를 오버할 때만 새로운 고가hh가 되어야 하는데요. Main.MessageLog(" hh" + hh+" ") ; 으로 확인해보면 고가hh 값은 profits값하고 이상하게 항상 동일한 값으로 나옵니다. 수식을 목표한 트레일링스탑이 가능하도록 수정해 주시면 감사드리겠습니다.
프로필 이미지
종호
2018-08-30
2877
글번호 224580
답변완료

문의

미완성신호값이 제대로 않나오는 이유를 발혀주시면 감사합겠읍니다 아래에 스팟식 첨부했읍니다 ------------------------------------------------------------------------- var 완성15신호값, 완성2신호값, 완성120신호값, 미완성15신호값, 미완성2신호값, 미완성120신호값, 미완성15신호, 미완성2신호,미완성120신호, 완성15신호, 완성2신호, 완성120신호 ; var cc = order1.current ; function Main_OnStart() { Main.MessageLog("시작") ; a1.Refresh() ; 완성15신호 = exl3.GetData(1, "i27"); 완성2신호 = exl3.GetData(1, "k27"); 완성120신호 = exl3.GetData(1, "m27"); } // ------------------------------------------------------- function c3_OnRiseSignal(Signal) { if ( Signal.signalKind == 1 ) { 완성120신호 = 11 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매수 : " +완성120신호); } if ( Signal.signalKind == 2 ) { 완성120신호 = 22 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매수청산 : " +완성120신호); } if ( Signal.signalKind == 3 ) { 완성120신호 = 33 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매도 : " +완성120신호); } if ( Signal.signalKind == 4 ) { 완성120신호 = 44 완성120신호값 = Signal.price ; exl3.SetData(1, "m26",완성120신호값 ); exl3.SetData(1, "m27",완성120신호 ); Main.MessageLog("완성120신호 매도청산 : " +완성120신호); } } function c2_OnRiseSignal(Signal) { if ( Signal.signalKind == 1 ) { 완성2신호 = 11 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매수 : " +완성2신호); } if ( Signal.signalKind == 2 ) { 완성2신호 = 22 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매수청산 : " +완성2신호); } if ( Signal.signalKind == 3 ) { 완성2신호 = 33 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매도 : " +완성2신호); } if ( Signal.signalKind == 4 ) { 완성2신호 = 44 완성2신호값 = Signal.price ; exl3.SetData(1, "k26",완성2신호값 ); exl3.SetData(1, "k27",완성2신호 ); Main.MessageLog("완성2신호 매도청산 : " +완성2신호); } } function c1_OnRiseSignal(Signal) { if ( Signal.signalKind == 1 ) { 완성15신호 = 11 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27", 완성15신호 ); Main.MessageLog("완성15신호 매수 : " +완성15신호); } if ( Signal.signalKind == 2 ) { 완성15신호 = 22 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27",완성15신호 ); Main.MessageLog("완성15신호 매수청산 : " +완성15신호); } if ( Signal.signalKind == 3 ) { 완성15신호 = 33 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27",완성15신호 ); Main.MessageLog("완성15신호 매도 : " +완성15신호); } if ( Signal.signalKind == 4 ) { 완성15신호 = 44 ; 완성15신호값 = Signal.price ; exl3.SetData(1, "i26",완성15신호값 ); exl3.SetData(1, "i27",완성15신호 ); Main.MessageLog("완성15신호 매도청산 : " +완성15신호); } } //미완성 120 ------------------------------------------------------------ function c3_OnRiseIncompleteSignal(IncompleteSignal) { 미완성120신호값 = IncompleteSignal.price ; if ( IncompleteSignal.signalKind == 1 ) { 미완성120신호 = 1 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매수 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 2 ) { 미완성120신호 = 2 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매수청산 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 3 ) { 미완성120신호 = 3 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매도 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 4 ) { 미완성120신호 = 4 ; exl3.SetData(1, "m29",미완성120신호 ); exl3.SetData(1, "m28",미완성120신호값 ); Main.MessageLog("미완성120신호 매도청산 : " +IncompleteSignal.signalKind); } } // 미완성 2----------------------------------------------------- function c2_OnRiseIncompleteSignal(IncompleteSignal) { 미완성2신호값 = IncompleteSignal.price ; if ( IncompleteSignal.signalKind == 1 ) { 미완성2신호 = 1 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매수 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 2 ) { 미완성2신호 = 2 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매수청산 : " + IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 3 ) { 미완성2신호 = 3 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매도 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind ==4 ) { 미완성2신호 = 4 ; exl3.SetData(1, "k29",미완성2신호 ); exl3.SetData(1, "k28",미완성2신호값 ); Main.MessageLog("미완성2신호 매도청산 : " +IncompleteSignal.signalKind); } } // 미완성 15-------------------------------------------------------- function c1_OnRiseIncompleteSignal(IncompleteSignal) { 미완성15신호값 = IncompleteSignal.price ; if ( IncompleteSignal.signalKind == 1 ) { 미완성15신호 = 1 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매수 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind ==2 ) { 미완성15신호 =2 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매수청산 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind == 3 ) { 미완성15신호 = 3 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매도 : " +IncompleteSignal.signalKind); } if ( IncompleteSignal.signalKind ==4 ) { 미완성15신호 = 4 ; exl3.SetData(1, "i29",미완성15신호 ); exl3.SetData(1, "i28",미완성15신호값 ); Main.MessageLog("미완성15신호 매도청산 : " +IncompleteSignal.signalKind); } }
프로필 이미지
파일럿
2018-09-06
2779
글번호 224577

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

프로필 이미지
2ndbus
2018-08-24
10
글번호 224574
답변완료

한국투자증권 스팟 작동 먹통

잘되던 수식이 언제부턴가 먹통입니다. 주석을 넣어 가면서 확인해본결과 아래 부분이 작동을 안하는것같습니다. 저번에도 한국투자증권에서 뭘 막아놔서 안되던 부분이 있었는데 비슷한 상황 같습니다. 확인 부탁드립니다. function Main_On**dateAccount(sAccntNum, sItemCode, l**dateID) { if (l**dateID == 30000) { Main.KillTimer(1); Main.SetTimer(2, 1000); Main.MessageList("타이머2셋팅"); } }
프로필 이미지
수다리
2018-08-23
2690
글번호 224573

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

프로필 이미지
수다리
2018-08-23
0
글번호 224572
답변완료

예스스팟 예제를 어디서 볼수 있을까요

예스스팟 예제를 통해서 활용법을 익히고 싶은데요 예스스팟메뉴얼의 11개 예제는 부족한것 같아서 어디에서 예제 자료를 구할수 있는지 부탁드립니다. 감사합니다
프로필 이미지
마음이다
2018-08-21
2726
글번호 224570