커뮤니티

예스스팟 Q&A

답변완료

엑셀파일에 종목코드 저장시 텍스트 설정이 풀려서 앞자리 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
2799
글번호 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
2899
글번호 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
2795
글번호 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
2714
글번호 224573

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

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

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

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

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

프로필 이미지
2ndbus
2018-08-21
0
글번호 224569
답변완료

관심그룹 대상 매매 코드 부탁드립니다.

안녕하세요. 특정 종목들을(수십개) 장전에 입력하여 관심그룹에 등록한 후(관심종목 등록이 필요없다면 안해도 됩니다), 관심그룹에 등록된 종목을 대상으로 시초가 대비 -2% 하락하면 매수하는 코드를 짜고 싶습니다. 1. 예스스팟 전략파일에서 관련 코드를 짤수 있을까요? 가능하다면 관련해서 예시 코드를 보고싶습니다. 감사합니다!
프로필 이미지
lean16
2018-08-28
2926
글번호 224568
답변완료

수익 또는 포지션 확인

안녕하십니까. 스팟에서 다음 두가지를 구하는 수식에 대하여 설명 부탁 드립니다. 1. 차트에 적용된 시스템의 현재 수익 2. 차트에 적용된 시스템의 현재 포지션 및 진입 날짜/시간 실행중에는 OnRiseSignal로 받아 변수로 저장해 놓으면 알 수 있으나 스팟이 바로 시작 되었을 경우의 현재 포지션 및 진입 날짜/시간을 알고 싶어 문의 드립니다. 감사합니다.
프로필 이미지
올데이
2018-08-20
2853
글번호 224567