커뮤니티

예스스팟 Q&A

답변완료

수식 문의드립니다.

안녕하세요. 시스템 전략A를 모니터링하고 있다가.. 수익거래후 손실거래를 하면 다음신호에 진입하는 수식 부탁드립니다. 전략A는 청산을 SetStopProfittarget와 SetStopLoss 으로만 하고 있습니다. 진입신호만 참조해서 청산은 예스스팟에서 따로 명령할수 있으면 좋겠습니다. 예스스팟에서 전략실행할때 변수로 익절과 손절 틱으로 조절했음합니다.
프로필 이미지
율담
361
글번호 226199
답변완료

수식 수정 부탁합니다

수고하십니다. 1. 옵션 종목을 매수하고 청산신호 발생시 아래(예시1)와 같이 잔고 모든종목을 청산하는데 2종목을 매수한 경우 해당 종목만 청산하는 수식 부탁합니다. 예를 들어 시스템1 325.0 매수, 시스템2 327.5 매수 일 경우 시스템1은 325.0 만 청산되는 수식, 시스템2는 327.5만 청산 각자 독립적 청산되는 수식 2. 양매수, 매수 경우 잔고 손익 일정금액 초과시 청산되는 수식으로 수정 부탁합니다. 작동 안됨(예시 2) 예시1)---------------------------- if (Signal.signalKind == 2 ) { Main.MessageList("매수청산신호발생"); { //잔고를 세팅 A1.SetBalance(CallOrderCode, 0); //보유종목수 var num = A1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { A1.SetBalance(i); if (A1.Balance.count > 0) { if (A1.Balance.position == 2) { A1.OrderSell(A1.Balance.code,A1.Balance.count,0,1); } } } } } } 예시2)---------------------------- // 옵션매수포지션 전체 손익계산 var num = A1.GetTheNumberOfBalances(); var PLsum = 0; for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매수포지션이고 옵션종목이고 if (A1.Balance.position == 2 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3")) { //각 옵션매수종목의 (평균단가-현재가)*수량*50만원을 누적 PLsum = PLsum + ((A1.Balance.avgUnitCost - A1.Balance.current)*A1.Balance.count)*250000; } } //손익이 +50만원이상이거나 -50만원 이하이면 if (PLsum >= 500000 || PLsum <= -500000) { for(var i = 0; i < num; i++) { //잔고셋팅 A1.SetBalanceIndex(i); //매수포지션이고 옵션종목이고 if (A1.Balance.position == 2 && (A1.Balance.code.substring(0,1) == "2" || A1.Balance.code.substring(0,1) == "3")) { A1.OrderSell(A1.Balance.code, A1.Balance.count, 0,1); } } } }
프로필 이미지
팡팡
307
글번호 226198

하루삼프로 님에 의해서 삭제되었습니다.

프로필 이미지
하루삼프로
24
글번호 226197
답변완료

주문수량 잘못입력이라고 오류가 뜹니다.

안녕하세요. 사진상에서 주문수량을 잘못입력하셨습니다라는 메세지와 함께 빨간색 동그라미 안의 오류코드같은 것이 뜨면서 잘되던 매수주문이 갑자기 안되었는데 어떤의미 인가요? 도와주세요. 감사합니다.
프로필 이미지
iinnn
278
글번호 226196
답변완료

자동매도 코드 추가 부탁드려요

var timer5 = 2; // 2초 var 매수금 = 100000; var OrderList = []; var MKList = []; var req; // 종목 제한 수 (변수로 설정) var 종목제한수 = 1; function Main_OnStart() { // 1번 타이머, 1초 Main.SetTimer(1, timer5 * 1000); // 오늘 매수한 종목 관리 배열 초기화 MKList = []; } function Main_OnTimer(nEventID) { var d = new Date(); YYYYMMDD = d.getFullYear() * 10000 + (d.getMonth() + 1) * 100 + d.getDate(); HHMMSS = d.getHours() * 10000 + d.getMinutes() * 100 + d.getSeconds(); if (nEventID == 1 && HHMMSS > 090000 && HHMMSS < 151800) { // 종목검색 수행 Main.ReqPowerSearch("자동매수"); } if (nEventID == 2) { Main.ReqMarketData(OrderList[req]); } } function Main_OnRcvItemList(aItemList, nCount) { Main.KillTimer(1); OrderList = []; if (nCount >= 1) { if (MKList.length == 0) { OrderList = aItemList.slice(0, 종목제한수); // 한정된 수만 가져오기 } else { for (var a = 0; a < nCount; a++) { var Add = true; for (var b = 0; b < MKList.length; b++) { if (aItemList[a] == MKList[b].code) { Add = false; } } if (Add == true && !IsStockInAccount(aItemList[a])) { OrderList.push(aItemList[a]); // 제한 수를 넘는 경우 break if (OrderList.length >= 종목제한수) { break; } } } } if (OrderList.length == 0) { Main.SetTimer(1, timer5 * 1000); } else { req = 0; Main.ReqMarketData(OrderList[req]); } } } function Main_OnRcvMarketData(MarketData) { if (MarketData.code == OrderList[req]) { MKList.push(MarketData); // 계좌에 같은 종목이 있는지 확인 if (!IsStockInAccount(MarketData.code)) { // 계좌에 없는 경우에만 매수 Account1.OrderBuy(MarketData.code, 1, 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), 0, 1); //Account1.OrderBuy(MarketData.code, Math.floor(매수금 / MarketData.Ask(1)), MarketData.Ask(1), 0); // 지정가로 주문하고자 하시면 주문함수 내용을 위와 같이 변경하시면 됩니다. Main.MessageList(MarketData.code + " 주식을 매수합니다."); } else { Main.MessageList(MarketData.code + " 주식은 이미 계좌에 있으므로 매수하지 않습니다."); } req = req + 1; if (req < OrderList.length) { var aa = Main.ReqMarketData(OrderList[req]); if (aa == -1) { Main.SetTimer(2, 15000); } } else { Main.SetTimer(1, timer5 * 1000); } } } function IsStockInAccount(stockCode) { // 계좌에 해당 종목이 있는지 확인하는 함수 var numberOfBalances = Account1.GetTheNumberOfBalances(); for (var i = 0; i < numberOfBalances; i++) { Account1.SetBalance(i); if (stockCode == Account1.Balance.code) { return true; // 계좌에 같은 종목이 있으면 true 반환 } } return false; // 계좌에 같은 종목이 없으면 false 반환 } ---------------------------------------------------------------- 자동매도 할쑤있게 코드 추가 부탁드림미다 건강하세요
프로필 이미지
뽀스뽀스
322
글번호 226195
답변완료

개인설정정보 저장 오류

안녕하세요. 제 노트북에서 개인설정정보 서버 저장하기 후 데스탑에서 개인설정정보 내려받기를 하면 파워종목 검색의 사용자 검색조건이 하나도 저장되지 않고 아무것도 없는 상태로 표시가 됩니다. 왜 그런지요?
프로필 이미지
카카피피
272
글번호 226192
답변완료

수식 문의드립니다.

안녕하세요. 수식 문의드립니다. 예스트레이더로 전략A를 시험 운영중입니다. 예스스팟으로 전략A의 성능보고서를 불러올수가 있는지요? 예를들어 전략A의 승률이 50% 이상이면 자동매매시작, 50%이하로 떨어지면 자동매매중지. 혹은, 전략A의 거래내역을 불러와서 매매 신호로 사용할수 있을까요.
프로필 이미지
율담
266
글번호 226191

하루삼프로 님에 의해서 삭제되었습니다.

프로필 이미지
하루삼프로
41
글번호 226190

파라독스 님에 의해서 삭제되었습니다.

프로필 이미지
파라독스
2
글번호 226188
답변완료

유진예스트레이더 GetSTime 이상값

안녕하세요. 친절한 답변에 미리 감사드립니다. 아래의 수식으로 예스트레이더 내 예스스팟으로 차트객첵의 데이터를 외부의 데이터베이스로 인서트 할때 문제점입니다. 최초 외부 데이터베이스로 자료를 가져갈때 현재 시점으로부터 약 9000~10000봉 과거 봉들을 가져가는 수식입니다. 유진예스트레이더 예스스팟 좀 봐주십시오. 1. 한투예스트레이더 내 예스스팟에서는 GetSTime 의 수치들이 문제가 없습니다. 마이너스 음수 처리된 값이 나가는 경우가 없습니다. 2. 그런데 유진예스트레이더 내 예스스팟에서는 GetSTime 의 수치들에 문제가 있습니다. 마이너스 음수 처리된 오류값들이 나갑니다. ####################################################### var choKkuenSi_sseulMisaBongSu=8600; // 손잡이- 10000 하면 좋으나 줄여도 됨. var hhSseulGoId=1; // 손잡이 이나 고정- 봉번 ID는 날초 시 언제나 1번부터임. var hhSdate=0; var hhStime=0; var hhO=0; var hhH=0; var hhL=0; var hhC=0; var hhV=0; var sql인서트="0"; var hhBongBun=0; function Main_OnStart() { Main.MessageList("AD yestrader ssj <soochool> sijac. hhSseulGoId=",hhSseulGoId); //////////////// 자료고 날 최초시 갈래 for (var ffa=choKkuenSi_sseulMisaBongSu; ffa>=0; ffa--){ // 손잡이 //////////////// 마련 hhSdate=Chart1.GetSDate(1,ffa); hhStime=Chart1.GetSTime(1,ffa); hhO=Chart1.GetOpen(1,ffa); hhH=Chart1.GetHigh(1,ffa); hhL=Chart1.GetLow(1,ffa); hhC=Chart1.GetClose(1,ffa); hhV=Chart1.GetVolume(1,ffa); //////////////// 로고 sql 마련 sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES ("; sql인서트+=String(hhSseulGoId); sql인서트+=","; sql인서트+=String(hhSdate); sql인서트+=","; sql인서트+=String(hhStime); sql인서트+=","; sql인서트+=String(hhO); sql인서트+=","; sql인서트+=String(hhH); sql인서트+=","; sql인서트+=String(hhL); sql인서트+=","; sql인서트+=String(hhC); sql인서트+=","; sql인서트+=String(hhV); sql인서트+=");"; //////////////// 로고 실행 DataBase1.인서트(sql인서트); hhSseulGoId+=1; // 1증. } } function Chart1_OnBarAppended(nData) { // Main.MessageList("Chart1_OnBarAppended / hhSseulGoId=",hhSseulGoId); if (nData==1){ hhBongBun=0; // 0부여. //////////////// 마련 hhSdate=Chart1.GetSDate(1,hhBongBun); hhStime=Chart1.GetSTime(1,hhBongBun); hhO=Chart1.GetOpen(1,hhBongBun); hhH=Chart1.GetHigh(1,hhBongBun); hhL=Chart1.GetLow(1,hhBongBun); hhC=Chart1.GetClose(1,hhBongBun); hhV=Chart1.GetVolume(1,hhBongBun); //////////////// 로고 sql 마련 sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES ("; sql인서트+=String(hhSseulGoId); sql인서트+=","; sql인서트+=String(hhSdate); sql인서트+=","; sql인서트+=String(hhStime); sql인서트+=","; sql인서트+=String(hhO); sql인서트+=","; sql인서트+=String(hhH); sql인서트+=","; sql인서트+=String(hhL); sql인서트+=","; sql인서트+=String(hhC); sql인서트+=","; sql인서트+=String(hhV); sql인서트+=");"; //////////////// 로고 실행 DataBase1.인서트(sql인서트); hhSseulGoId+=1; // 1증. } } var choKkuenSi_sseulMisaBongSu=8600; // 손잡이- 10000 하면 좋으나 줄여도 됨. var hhSseulGoId=1; // 손잡이 이나 고정- 봉번 ID는 날초 시 언제나 1번부터임. var hhSdate=0; var hhStime=0; var hhO=0; var hhH=0; var hhL=0; var hhC=0; var hhV=0; var sql인서트="0"; var hhBongBun=0; function Main_OnStart() { Main.MessageList("AD yestrader ssj <soochool> sijac. hhSseulGoId=",hhSseulGoId); //////////////// 자료고 날 최초시 갈래 for (var ffa=choKkuenSi_sseulMisaBongSu; ffa>=0; ffa--){ // 손잡이 //////////////// 마련 hhSdate=Chart1.GetSDate(1,ffa); hhStime=Chart1.GetSTime(1,ffa); hhO=Chart1.GetOpen(1,ffa); hhH=Chart1.GetHigh(1,ffa); hhL=Chart1.GetLow(1,ffa); hhC=Chart1.GetClose(1,ffa); hhV=Chart1.GetVolume(1,ffa); //////////////// 로고 sql 마련 sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES ("; sql인서트+=String(hhSseulGoId); sql인서트+=","; sql인서트+=String(hhSdate); sql인서트+=","; sql인서트+=String(hhStime); sql인서트+=","; sql인서트+=String(hhO); sql인서트+=","; sql인서트+=String(hhH); sql인서트+=","; sql인서트+=String(hhL); sql인서트+=","; sql인서트+=String(hhC); sql인서트+=","; sql인서트+=String(hhV); sql인서트+=");"; //////////////// 로고 실행 DataBase1.인서트(sql인서트); hhSseulGoId+=1; // 1증. } } function Chart1_OnBarAppended(nData) { // Main.MessageList("Chart1_OnBarAppended / hhSseulGoId=",hhSseulGoId); if (nData==1){ hhBongBun=0; // 0부여. //////////////// 마련 hhSdate=Chart1.GetSDate(1,hhBongBun); hhStime=Chart1.GetSTime(1,hhBongBun); hhO=Chart1.GetOpen(1,hhBongBun); hhH=Chart1.GetHigh(1,hhBongBun); hhL=Chart1.GetLow(1,hhBongBun); hhC=Chart1.GetClose(1,hhBongBun); hhV=Chart1.GetVolume(1,hhBongBun); //////////////// 로고 sql 마련 sql인서트=hhRoGoEreum+" (ID,SDATE,STIME,O,H,L,C,V) VALUES ("; sql인서트+=String(hhSseulGoId); sql인서트+=","; sql인서트+=String(hhSdate); sql인서트+=","; sql인서트+=String(hhStime); sql인서트+=","; sql인서트+=String(hhO); sql인서트+=","; sql인서트+=String(hhH); sql인서트+=","; sql인서트+=String(hhL); sql인서트+=","; sql인서트+=String(hhC); sql인서트+=","; sql인서트+=String(hhV); sql인서트+=");"; //////////////// 로고 실행 DataBase1.인서트(sql인서트); hhSseulGoId+=1; // 1증. } }
프로필 이미지
로봇짱
294
글번호 226187