커뮤니티

예스스팟 Q&A

답변완료

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

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 반환 } ---------------------------------------------------------------- 자동매도 할쑤있게 코드 추가 부탁드림미다 건강하세요
프로필 이미지
뽀스뽀스
2025-02-03
373
글번호 226195
답변완료

개인설정정보 저장 오류

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

수식 문의드립니다.

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

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

프로필 이미지
하루삼프로
2025-01-24
41
글번호 226190

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

프로필 이미지
파라독스
2025-01-20
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증. } }
프로필 이미지
로봇짱
2025-01-15
344
글번호 226187

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

프로필 이미지
뽀스뽀스
2025-01-17
32
글번호 226186

비슬짱 님에 의해서 삭제되었습니다.

프로필 이미지
비슬짱
2025-01-12
0
글번호 226185
답변완료

지표수식 표시 위치변경

안녕하세요 챠트나 보조지표설치시 지표가 왼쪽위에 표시되는데 이것을 오른쪽 에표시하고 싶은데요 어떻케 하는지요?
프로필 이미지
비슬짱
2025-01-12
342
글번호 226184
답변완료

신호 관련

안녕하세요 건의사항이 있습니다. 제가 알고 있기로는 신호관련 제가 알고있는 바는 아래와 같아서 개선 건의를 드리고자 합니다. 혹시 제가 잘못 알고 있는 상황이라면 설명부탁드립니다. 다음과 같이 시스템 설정이 되어 있고 => 매매계약수 : 1, 주문시작신호 : 모든신호 포지션이 없는 경우에 신호가 발생하면 2계약이 잡히는 되는 것으로 알고 있습니다. 그래서 '주문시작신호를 진입신호'로 하고 나서, 포지션 진입시 다시 모든신호로 바꿔야 하는 번거로움이 있습니다. 기술적으로 가능하다면, 포지션이 없는 상황에서 주문시작신호를 모든신호로 설정하면, 진입신호 발생시와 같은 계약수로 설정되도록 개선 부탁드립니다.
프로필 이미지
minve
2025-01-10
355
글번호 226183