커뮤니티
예스스팟 Q&A
문의 드립니다.
파워검색식에서 검색된 종목들중에서피보나치 되돌림 수치에 의해서 매수를 수행할려고 하는데요.조건은 다음과 같습니다.1. 검색된 종목의 당일 저가와 고가를 기준으로 고가대비 0.38에서 1차 매수 0.5에서 2차 매수를 한뒤 반등하여3% 이익이 발생하면 이익 실현하고 싶습니다.2. 1차 0.38에서 매수후 2차 0.5까지 안내려오고 반등하여 3% 수익이 나면 그때도 이익 실현하구요.3. 1차 2차 까지 매수가 된 후에 0.62 지점까지 하락하면 손절주문 시키구요.4. 1차든 2차까지든 이익 실현 or 손절한 종목은 당일 재주문은 안합니다.예스스팟 코딩 도움 부탁드립니다.
2026-03-24
4
글번호 231238
매도 문의 드립니다.
안녕하세요. 예스스팟을 이용하여 현재 자동매매를 진행하고 있습니다.손절은 스탑로스로 진행중이고, 보유종목 당일 청산은 설정해 놓은 시간에청산이 되도록 수식에 반영이 되어있는 상태입니다.그런데 장중 실시간 지표조건 매도를 진행하고 싶어서 알아보다가커뮤니티 글에서 매수를 할 때 처럼 매도도 조건검색식을 만들어서검색을 병행하는 방식으로 진행을 하면 지표조건 매도 처럼 자동 매도가가능하다는 내용을 확인하였습니다.제가 만들어 보려고 여러번 시도를 해봤지만 도저히 구현이 되지 않아서정말 많은 고민끝에 이렇게 부탁의 글을 드리게 되었습니다.현재 사용하는 수식인데 바쁘시겠지만 이 수식에 제가 예스랭귀지로 만들어 놓은 매도 조건검색식도자동 매수 처럼 검색해서 자동 매도가 가능하도록 수식을 만들어서 추가를 해주시면 정말 감사드리겠습니다.(만약, 어떤 조건이 필요하다면 5분봉 차트상 현재 1일 이동평균이(현재주가가) 10일 이동평균을 하향 이탈하면 매도. 라는 조건을 넣고 싶습니다. 지금의 매도 조건 내용은 제가 매도조건검색식을 준비해둔 상태입니다.)그리고 제가 조건검색기반 자동 매수와 자동 매도를 진행할 때 참고 및 주의 사항에 대해서도 많은 조언을 해주신다면 감사하겠습니다. var timer5 = 1; // 타이머 주기: 1초var 매수금 = 100000; // 매수금액 설정var OrderList = []; // 매수 후보 종목 리스트var MKList = []; // 오늘 매수한 종목 관리 리스트var req; // 종목 요청 인덱스function Main_OnStart(){ // 1번 타이머를 2초 간격으로 실행 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(); // 09:04 ~ 09:40 사이 매수 조건 실행 if (nEventID == 1 && HHMMSS >= 090400 && HHMMSS < 094000) { // 종목검색 수행 Main.ReqPowerSearch("나의 자동 매수") } // *** 추가된 부분: 09:49:10 이후 자동 매도 조건 *** if (nEventID == 1 && HHMMSS >= 094910) { var num = Account1.GetTheNumberOfBalances(); if (num > 0) { // 모든 보유 종목 전량 매도 for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count > 0) { // 기존 시장가 매도 (모의투자에서는 지원되지 않음, 실전에서는 즉시 전량 체결됨) Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1); // 지정가 매도 (모의투자에서는 정상적으로 동작, 현재가 기준으로 전량 매도) //Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Account1.Balance.current, 0); Main.MessageList(Account1.Balance.code + " 전량 매도합니다."); // 매도 메시지 출력 } } } // 매도 후 타이머 종료 Main.KillTimer(1); } // *** 여기까지 자동매도 조건 추가 부분 *** 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; } 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]); } } } } 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); // 시장가 1주 매수 (모의투자에서는 지원되지 않음) Account1.OrderBuy(MarketData.code, 1, MarketData.Ask(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 반환}
2026-03-23
13
글번호 231209
지나리 님에 의해서 삭제되었습니다.
2026-03-23
3
글번호 231201
문의 드립니다
전용 매도식을 만들어서 적용하고 싶습니다.매수는 이평선크로스, 보조지표 등을 이용해 매수를 해놓고 매도는 전용 매도식으로 해결할 수 있으면 좋겠습니다.예스스팟에 전용매도식을 장중에 적용해 놓으면 하는데 예스스팟 게시판을 보니 매수와 매도가 같이 되어있어매수조건을 실행하면 리스트가 만들어지고 매도조건이 실행되면 매도되는 매수조건을 실행해야만 매도가 되는데매도만 할 수 있는 수식 부탁합니다.매도조건1.MACD(12,26,9) macd < 0 매도Rsmacd (12.26.9) Dead cross 매도 (동시에 macd 값이 전봉보다 하락시)9시반 이후 두 경우에서 하나만 발생해도 매도2. 손절선은 매수가 대비 -4%, 15시 15분 보유종목 all 매도3. 오전 10시 이후 보유종목들 수익 발생했다 하락으로 손실 발생된 종목 있으면 매도* 매수와 매도가 있어야 만 매매식이 된다하면 다음 수식도 부탁합니다.매수시간 제한은 아침 9시 40분 까지만 매수하고, 매도는 시스템 매도식이 적용될 때 까지 예를 들어 12시 까지시간 차이를 두어 진행하고 싶은데 수식 부탁합니다
2026-03-22
18
글번호 231183
미국 나스닥 처럼 되면 좋을것을 주간 따로 야간따로 복합따로 이게 불편하다
안녕하세요 주간야간 복수차트 하려구 하는데 주문 거부 주간만 되니 답답하네요 모의 투 자에서 체험을 하려니까 안되고 있어서 실전 거래도 하지않고 있습니다 모의투자로 확인 해볼수있게 지원 해주시면 감사합니다 IM 증권 kp200미니선물 과 kQ 150 선물 에 관심 이 많습니다 주간 야간 복수차트 이렇게 3개의 종류 보다는 하나의 차트로 미국 나스닥처럼 쭉 되게 하셨으면 합니다 복수차트 거래해보니 주문거부 거래거부 모의 투자에서 이래서 매매 안하고 보고 만 있네요 속히 해결 되었으면 합니다
2026-03-19
33
글번호 231149
보유종목 매수매도 시스템문의드립니다
안녕하세요 계좌잔고 보유종목 대상 매수매도 주문시스템 문의입니다가능한지는 모르겠습니다 상담으로는 개좌객체추가 계좌선택 전략속에 Account1.Balance 넣으면보유종목들 현재가, 매입단가,보유수량등 정보를 불러온다음 전략이 있다면 매수매도주문이 가능하다고 상담을 받았읍니다아래 %는 예시입니다 최근체결내역이 매수면 매도리셋 매도면 매수리셋이것이 불가능하면 ㅠㅠ 종목별 총투자금액(매수)한도 정의로 해도될것같습니다아래내용대로 매수매도 시스템 문의 드립니다수익률의 변화에 따라2%부터 10% 구간까지 1%오를때 갱신마다 동일금액매수-3%부터 -2%떨어질때마다 매도가능수량의 10%씩 매도위 내용 스팟 작성식 자료를 찾을수 없어서 너무 어려움 겪고 입습니다 ㅠ도움 부탁드립니다 항상 감사합니다.
2026-03-18
42
글번호 231143
모듈화하여 여러 script 파일을 나누어 구현 할 수 있나요?
// exchange.jsconst dollarToWonRate = 1177.1;const euroToWonRate = 1298.3;const yenToWonRate = 10.8;const cynToWonRate = 169.7;// 첫 번째 export 방법export function dollarToWonFn(dollar) { return dollar * dollarToWonRate;};// calculate.js// 첫 번째 import 방법 : Destructuringimport { dollarToWonFn } from './exchange.js';console.log(dollarToWonFn(10)); // 11771이런식으로 2개의 파일을 나누어 구현이 가능한지 문의드립니다.
2026-03-17
22
글번호 231121
답변완료
문의드립니다
아래 수식은 선물신호 발생시 2.0 가격에 근접한 옵션을 찾아서 매매하는 수식입니다 라는 오류가 뜹니다잘못 된 부분을 수정 부탁드립니다감사합니다var T;var CC, CallOrderCode;var PP, PutOrderCode;function Main_OnStart(){ T = 0;}function C1_OnRiseSignal(Signal){ if (T <= 0 && Signal.signalKind == 1) { T = 1; Main.MessageList("--------------------------------------------"); Main.MessageList("Buy신호 발생"); var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 2.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-2.0을 해서 절대값을 취해 저장 var CallCode = new Array(UNum+LNum+1); var CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var CC = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //풋옵션중 2.0에 가장 가까운 종목 //풋옵션 모든 종목을 현재가-2.0을 해서 절대값을 취해 저장 var PutCode = new Array(UNum+LNum+1); var PutPrice = new Array(UNum+LNum+1); for (var i = -UNum; i <= LNum; i++) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-2.0); PutCode[i+UNum] = Option.GetATMPutRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var PP = 99999999; PutOrderCode = ""; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] < PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } //종목을 찾았으면 if (CC < 99999999 && PP < 99999999) { Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 3), 0); //Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 5), 0); } } if (T == 1 && Signal.signalKind == 2) { Main.MessageList("--------------------------------------------"); Main.MessageList("ExitLong신호 발생"); T = 0; Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 3), 0); //Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 5), 0); } if (T >= 0 && Signal.signalKind == 3) { T = -1; Main.MessageList("--------------------------------------------"); Main.MessageList("Sell신호 발생"); var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 2.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-2.0을 해서 절대값을 취해 저장 var CallCode = new Array(UNum+LNum+1); var CallPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.0); CallCode[i+LNum] = Option.GetATMCallRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var CC = 99999999; CallOrderCode = ""; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] < CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //풋옵션중 2.0에 가장 가까운 종목 //풋옵션 모든 종목을 현재가-2.0을 해서 절대값을 취해 저장 var PutCode = new Array(UNum+LNum+1); var PutPrice = new Array(UNum+LNum+1); for (var i = -UNum; i <= LNum; i++) { PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-2.0); PutCode[i+UNum] = Option.GetATMPutRecent(i); } //저장된 절대값중 가장 작은 종목의 값과 종목코드 계산 var PP = 99999999; PutOrderCode = ""; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] < PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } //종목을 찾았으면 if (CC < 99999999 && PP < 99999999) { //Account1.OrderSell(CallOrderCode, 1, Option.GetBid(CallOrderCode, 5), 0); Account1.OrderBuy(PutOrderCode, 1, Option.GetAsk(PutOrderCode, 3), 0); } } if (T == -1 && Signal.signalKind == 4) { Main.MessageList("--------------------------------------------"); Main.MessageList("ExitShort신호 발생"); T = 0; //Account1.OrderBuy(CallOrderCode, 1, Option.GetAsk(CallOrderCode, 5), 0); Account1.OrderSell(PutOrderCode, 1, Option.GetBid(PutOrderCode, 3), 0); }}
2026-03-12
41
글번호 231060
답변완료
아랫글(230868) 추가질문입니다.
콜이나 풋을 매수한 상태일때, 위 수식이 0.5pt가격에 지정가 매도주문을 발생한다는 의미인가요?동시호가에 옵션매수종목을 무조건 청산하기 위해 시장가 매도주문을 발생시켰으나, 거부되는 경우가 발생되어 ,낮은 가격(0.1pt나 0.5pt 등) 지정가로 주문을 내서 주문이 거부되지 않으면서 거의 무조건 매수포지션을 청산하려는 의도로 질문을 드렸습니다.원하는 바는, 옵션 매수상태일때 지정가 0.5로 청산주문 발생시키고옵션 매도상태일때 지정가 50으로 청산주문 발생시키고 싶습니다.다시한번 답변 부탁드립니다.
2026-03-11
63
글번호 231048
관리자에 의해 예스랭귀지 QnA로 이동되었습니다.
2026-03-11
4
글번호 231036