커뮤니티

예스스팟 Q&A

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

프로필 이미지
아주리
2023-01-02
0
글번호 225756
답변완료

거래 체결 시마다 발생하는 이벤트가 있나요?

안녕하세요. 거래 체결 시마다 발생하는 이벤트가 있나요? 호가창에서처럼 체결될 때마다 매수인지 매도인지와 체결된 거래량을 알고 싶습니다. 감사합니다.
프로필 이미지
브라이언7
2023-01-01
1221
글번호 225755
답변완료

문의

차트가 수정주가 적용해서 나오는것 같은데 수정주가 적용 푸는법 알려주세요
프로필 이미지
anj
2022-12-24
1248
글번호 225750
답변완료

차트신호시 콜옵션 풋옵션 동시매수 청산추가 0.01 도달시

아래 수식은 장종료 시점에 청산시간 조건으로만 exit 합니다. 콜매수 포지션 가격이 0.01 되면 콜포지션 청산 풋매수 포지션 가격이 0.01 되면 풋포지션 청산 위 조건을 추가해 주십시요. 만기일에 매수가격이 없는 경우가 발생하므로 그전에 청산하려고 합니다. 항상 고맙습니다. ****************************************************************************** 안녕하세요 예스스타입니다. 1 Account1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(CallOrderCode, 2), 1); 주문함수의 마지막 옵션은 지정가나 시장가등을 지정하는 옵션입니다. 0이면 지정가, 1이면 시장가입니다. 시장가이면 가격을 지정할 필요가 없어 주문가격은 0으로 지정하시면 됩니다. Account1.OrderBuy(CallOrderCode, 1, 0, 1); 만약 지정가로 주문한다면 아래와 같이 마지막옵션이 0으로 지정하시면 됩니다. Account1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(CallOrderCode, 2), 0); 아래식에는 지정가로 작성해 드립니다. 시장가도 주석처리로 추가해 드립니다. 2 var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; var CallExit,PutExit; function Main_OnStart() { CallExit = false; PutExit = false; Main.SetTimer(1, 5000); } //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { Main.MessageList("--------------------------------------------"); Main.MessageList("매수신호 발생"); //1.0이하 중 가장 큰 가격을 가지는 종목을 찾음 //ATM위 행사가 갯수 UNum = Option1.uppersATM; //ATM아래 행사가 갯수 LNum = Option1.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 1.0이하이면 if (Option1.GetCurrent(0, i) <= 1.0) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option1.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option1.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//1.0보다 크면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var ii = -UNum; ii <= LNum; ii++) { //ii단계 풋종목이 1.0이하이면 if (Option1.GetCurrent(1, ii) <= 1.0 ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[ii+UNum] = Option1.GetCurrent(1, ii); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[ii+UNum] = Option1.GetATMPutRecent(ii); } else //1.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[ii+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[ii+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } Main.MessageList("--------------------------------------------"); Main.MessageList("콜종목코드:",CallOrderCode,"/콜현재가 :",CC); Main.MessageList("풋종목코드:",PutOrderCode,"/풋현재가 :",PP); //콜옵션종목 매수 if (CallExit == false) { //지정가 Account1.OrderBuy(CallOrderCode, 1, Option1.GetAskByCode(CallOrderCode, 2), 0); //시장가 //Account1.OrderBuy(CallOrderCode, 1, 0, 1); } //콜옵션종목 매수 if (PutExit == false) { //지정가 Account1.OrderBuy(PutOrderCode, 1, Option1.GetAskByCode(PutOrderCode, 2), 0); //시장가 //Account1.OrderBuy(PutOrderCode, 1, 0, 1); } } } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && CallExit == false && HHMMSS >= 143530) { CallExit = true; var num = Account1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { Main.MessageList(Account1.Balance.code,Option1.GetCodeByExercisePrice(0, Option1.GetExercisePrice(Account1.Balance.code))); Account1.SetBalance(i); if (Account1.Balance.position == 2 && Option1.GetCodeByExercisePrice(0, Option1.GetExercisePrice(Account1.Balance.code)) == Account1.Balance.code) { //지정가(매수2호가) Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBidByCode(Account1.Balance.code, 2), 0); //시장가 //Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1); } } } } if (nEventID == 1 && PutExit == false && HHMMSS >= 151530) { PutExit = true; var num = Account1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { Main.MessageList(Account1.Balance.code,Option1.GetCodeByExercisePrice(1, Option1.GetExercisePrice(Account1.Balance.code))); Account1.SetBalance(i); if (Account1.Balance.position == 2 && Option1.GetCodeByExercisePrice(1, Option1.GetExercisePrice(Account1.Balance.code)) == Account1.Balance.code) { //지정가(매수2호가) Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBidByCode(Account1.Balance.code, 2), 0); //시장가 //Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, 0, 1); } } } } }
프로필 이미지
좌오비우오비
2024-11-15
1355
글번호 225749

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

프로필 이미지
deep2
2022-12-13
6
글번호 225747
답변완료

수정부탁드려요

밑에 수식에서 주식수를 지정해서 사는 것을 금액 10만원치 지정하고 싶은데 도와주세요 //스팟 첫 실행시 function Main_OnStart() { //1번 타이머, 60초 Main.SetTimer(1, 2000); } function Main_OnTimer(nEventID) { if (nEventID == 1) { //종목검색 수행 Main.ReqPowerSearch("2") } } //종목검색 완료 function Main_OnRcvItemList(aItemList, nCount) { //1종목 이상 검색되면 if (nCount >= 1) { //리스트 첫종목부터 마지막종목까지 순차적으로 //1번 타이머 동작 for (var i = 0; i < nCount; i++) { //잔고를 셋팅 Account1.SetBalance(aItemList[i],0); //보유수량이 없으면 if (Account1.Balance.count < 1) { //매수주문 Account1.OrderBuy(aItemList[i], 1,0,1); } } } }
프로필 이미지
아무다
2022-11-23
1304
글번호 225743
답변완료

해당 데이터가 없습니다 메세지

자주는 아니지만 1달에 1번정도는 발생하는데요 스팟으로 타이머 1초마다 종목검색, 확장차트 생성 저 메세지 창 등장하면 그때부터 차트객체 요청과 생성이 멈춤 확인 눌러줘야만 다시 재개됩니다. 즉시 창 발견하지 못하고 늦게 발견해서 한참동안 종목이 누락됐습니다. 어떤 문제였을까요?
프로필 이미지
시스시스스템
2022-11-17
1261
글번호 225740
답변완료

수동청산 후

MYM_1 해외선물(NH선물)거래에서 예스스팟 전략에서 중복진입금지 시스템설정이 되어 있을때 스팟전략 자동주문설정에 의해 진입 후 수동청산을 한 경우 잔량이 없는데도 불구하고 신규자동진입이 안되는데, 예스스팟에서는 수동청산 된 것이 인식되지 아니하여, 잔량이 남아 있는것으로 인식되어 중복진입으로 보고 신규진입이 안되는 것인가요?
프로필 이미지
너무조아
2022-11-18
1361
글번호 225739
답변완료

차트신호시 콜옵션 풋옵션 특정가격 동시 매수

아래 예제수식은 차트신호발생시 콜 1.0 이하 and 풋 1.0 이하 동시 매수 수식입니다. 미니선물차트를 이용하여 미니옵션으로 주문을 내려고 합니다. 요청사항 1. 첨부파일처럼 스크립트객체 설정하고 가동했는데 Reference Error : option is not defined 오류가 발생하는데 수식 수정바랍니다. Account1 지정계좌 Option1 미니옵션 Chart1 미니선물 2. 수식에 청산시간 수식 추가해주십시요. 콜매수 포지션 14시35분 30초 청산 풋매수 포지션 15시15분 30초 청산 항상 고맙습니다. ******************************************************************************++ /*스크립트시작-----------------------------------------------------*/ var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; //차트에서 신호가 발생하면 function Chart1_OnRiseSignal(Signal) { //해당 신호가 매수신호이면 if (Signal.signalKind == 1) { Main.MessageList("--------------------------------------------"); Main.MessageList("매수신호 발생"); //1.0이하 중 가장 큰 가격을 가지는 종목을 찾음 //ATM위 행사가 갯수 UNum = Option.uppersATM; //ATM아래 행사가 갯수 LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 1.0이하이면 if (Option.GetCurrent(0, i) <= 1.0) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//1.0보다 크면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var ii = -UNum; ii <= LNum; ii++) { //ii단계 풋종목이 1.0이하이면 if (Option.GetCurrent(1, ii) <= 1.0 ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[ii+UNum] = Option.GetCurrent(1, ii); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else //1.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[ii+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[ii+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 CC = -1; CallOrderCode = -1; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] > CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 PP = -1; PutOrderCode = -1; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] > PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } Main.MessageList("--------------------------------------------"); Main.MessageList("콜종목코드:",CallOrderCode,"/콜현재가 :",CC); Main.MessageList("풋종목코드:",PutOrderCode,"/풋현재가 :",PP); //콜옵션종목 매수 Account1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(CallOrderCode, 2), 1); //콜옵션종목 매수 Account1.OrderBuy(PutOrderCode, 1, Option.GetAskByCode(PutOrderCode, 2), 1); } } /*스크립트끝-------------------------------------------------------*/
프로필 이미지
좌오비우오비
2024-11-15
1474
글번호 225736
답변완료

종목객체 메서드 확인필요

settlementPrice (정산가) 작동이 안됩니다. VI금융투자에서는 작동하는데 NH에서는 작동이 안됩니다. 증권사에 문의해야 하나요?
프로필 이미지
민현종
2022-11-10
1177
글번호 225732