커뮤니티

예스스팟 Q&A

답변완료

문외한 문의드립니다

안녕하세요. 초보자 질문드립니다. 시트템트레이딩을 두개 차트의 보조지표가 모두 만족시 진입하게 할수있는지 궁금합니다. 예로 5분과 30분의 스토가 과열권에 모두 들어가면 매수, 침체권에 모두 들어가면 매도하게 할수있는지 궁금합니다. 감사합니다.
프로필 이미지
fuline
2015-12-28
1549
글번호 223758
답변완료

데이터베이스 질문드립니다.

진입가격, 종목, 계좌, 체결수량등을 데이터베이스로 저장해서 매매하려합니다. 스팟에서 데이터베이스 부분 메뉴얼을보면 인서트문을 예로들겠습니다. ( 인서트가 금칙어라 *nsert 로 씁니다 ) *nsert(sQuery)에서 사용 예제가 다음과 같이 나옵니다 예) *NSERT INTO[TableNmae] VALUES(,,,) 쿼리를 실행하고자 한다면 DataBase1.*nsert(“[TableName]VALUES(,,,)” )와 같이 스크립팅합니다. *nsert문이 따옴표 " ~ " 사이의 문자열로 일일이 수동으로 입력되도록 나와있는데 VALUE값을 스팟식의 내부 변수로 입력하는 방법을 알고 싶습니다.
프로필 이미지
재령
2015-12-26
1582
글번호 223757
답변완료

예스스팟메뉴

시스템트레이딩 하위메뉴에 예스스팟항목이 없는데 왜 그런건지요? HTS 재 설치를 해야 되는지요?
프로필 이미지
하나일
2015-12-21
1514
글번호 223753

알파킹 님에 의해서 삭제되었습니다.

프로필 이미지
알파킹
2015-12-16
32
글번호 223748
답변완료

수식 수정 보완 부탁드립니다

1. 다음 2개의 스팟식이 있습니다 둘 다 스팟식을 실행하면 RangeError : Invalid array length라는 메세지가 뜨면서 안돼는데 스팟식 수정 보완 좀 부탁드립니다. 아래 2개의 스팟식은 차트에서 매수 신호가 나오면 양매수, 매도 신호가 나오면 양매도 하는 스팟식입니다. 2. 차트에서 청산신호(매수청산 혹은 매도청산)가 나오면 계좌에 있는 모든 옵션을 청산하는 스팟식 부탁드립니다 var Start = 0; var BC; var BP; var Bcount1,Bcount2; var SC; var SP; var Scount1,Scount2; var upv = 1.0; var dnv = 0.1; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); Main.SetTimer(1, 5000); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생 if (Signal.signalKind == 1) { //1.0~2.0사이 중 가장 큰 가격을 가지는 종목을 찾음 //ATM위 행사가 갯수 var UNum = Option.uppersATM; //ATM아래 행사가 갯수 var LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 var CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 var CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 var PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 var PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(0, i) >= dnv && Option.GetCurrent(0, i) <= upv) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//0.7~1.7 사이가 아니면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var i = -UNum; i <= LNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(1, i) >= dnv && Option.GetCurrent(1, i) <= upv ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[i+UNum] = Option.GetCurrent(1, i); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[i+UNum] = Option.GetATMPutRecent(i); } else //2.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[i+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[i+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 var CC = -1; var CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] > CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 var PP = -1; var PutOrderCode = -1; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] > PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } if (CC > 0 && PP > 0) { Start = 1; BC = CallOrderCode; Bcount1 = Math.floor(10/Option.GetAskByCode(BC,3)); BP = PutOrderCode; Bcount2 = Math.floor(10/Option.GetAskByCode(BP,3)); Account1.OrderBuy(BC,Signal.count,Option.GetAskByCode(BC,3),0); Account1.OrderBuy(BP,Signal.count,Option.GetAskByCode(BP,3),0); } } //차트에서 매수청산신호 발생 if (Start == 1 && Signal.signalKind == 2) { Start = 0; Account1.OrderSell(BC,Signal.count,Option.GetBidByCode(BC,3),0); Account1.OrderSell(BP,Signal.count,Option.GetBidByCode(BP,3),0); } //차트에서 매도신호 발생 if (Signal.signalKind == 3) { //ATM위 행사가 갯수 var UNum = Option.uppersATM; //ATM아래 행사가 갯수 var LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 var CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 var CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 var PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 var PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(0, i) >= dnv && Option.GetCurrent(0, i) <= upv) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//0.7~1.7 사이가 아니면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var i = -UNum; i <= LNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(1, i) >= dnv && Option.GetCurrent(1, i) <= upv ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[i+UNum] = Option.GetCurrent(1, i); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[i+UNum] = Option.GetATMPutRecent(i); } else //2.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[i+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[i+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 var CC = -1; var CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] > CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 var PP = -1; var PutOrderCode = -1; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] > PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } if (CC > 0 && PP > 0) { Start = -1; SC = CallOrderCode; Scount1 = Math.floor(10/Option.GetBidByCode(SC,3)); SP = PutOrderCode; Scount1 = Math.floor(10/Option.GetBidByCode(SP,3)); Account1.OrderSell(SC,Signal.count,Option.GetBidByCode(SC,3),0); Account1.OrderSell(SP,Signal.count,Option.GetBidByCode(SP,3),0); } } //차트에서 매도청산신호 발생 if (Start == -1 && Signal.signalKind == 4) { Start = 0; Account1.OrderBuy(SC,Signal.count,Option.GetAskByCode(SC,3),0); Account1.OrderBuy(SP,Signal.count,Option.GetAskByCode(SP,3),0); } } ---------------------------------------------------------------------------------------- var Start = 0; var BC; var BP; var Bcount; var SC; var SP; var Scount; var upv = 2.0; var dnv = 0.1; function Main_OnStart() { Start = 0; Main.MessageList("시작",Start); } function Chart1_OnRiseSignal(Signal) { //차트에서 매수신호 발생 if (Signal.signalKind == 1) { //1.0~2.0사이 중 가장 큰 가격을 가지는 종목을 찾음 //ATM위 행사가 갯수 var UNum = Option.uppersATM; //ATM아래 행사가 갯수 var LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 var CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 var CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 var PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 var PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(0, i) >= dnv && Option.GetCurrent(0, i) <= upv) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//0.7~1.7 사이가 아니면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var i = -UNum; i <= LNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(1, i) >= dnv && Option.GetCurrent(1, i) <= upv ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[i+UNum] = Option.GetCurrent(1, i); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[i+UNum] = Option.GetATMPutRecent(i); } else //2.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[i+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[i+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 var CC = -1; var CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] > CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 var PP = -1; var PutOrderCode = -1; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] > PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } if (CC > 0 && PP > 0) { Start = 1; BC = CallOrderCode; BP = PutOrderCode; Bcount = Signal.count; var OP1 = Option1.GetCurrent(BC); if (Option.GetAskByCode(BC,1) > 0) OP1 = Option.GetAskByCode(BC,3); if (Option.GetAskByCode(BC,2) > 0) OP1 = Option.GetAskByCode(BC,3); if (Option.GetAskByCode(BC,3) > 0) OP1 = Option.GetAskByCode(BC,3); var OP2 = Option1.GetCurrent(BP); if (Option.GetAskByCode(BP,1) > 0) OP2 = Option.GetAskByCode(BP,3); if (Option.GetAskByCode(BP,2) > 0) OP2 = Option.GetAskByCode(BP,3); if (Option.GetAskByCode(BP,3) > 0) OP2 = Option.GetAskByCode(BP,3); Account1.OrderBuy(BC,Signal.count,OP1,0); Account1.OrderBuy(BP,Signal.count,OP2,0); } } //차트에서 매수청산신호 발생 if (Start == 1 && Signal.signalKind == 2) { Start = 0; var OP1 = Option1.GetCurrent(BC); if (Option.GetBidByCode(BC,1) > 0) OP1 = Option.GetBidByCode(BC,3); if (Option.GetBidByCode(BC,2) > 0) OP1 = Option.GetBidByCode(BC,3); if (Option.GetBidByCode(BC,3) > 0) OP1 = Option.GetBidByCode(BC,3); var OP2 = Option1.GetCurrent(BP); if (Option.GetBidByCode(BP,1) > 0) OP2 = Option.GetBidByCode(BP,3); if (Option.GetBidByCode(BP,2) > 0) OP2 = Option.GetBidByCode(BP,3); if (Option.GetBidByCode(BP,3) > 0) OP2 = Option.GetBidByCode(BP,3); Account1.OrderSell(BC,Signal.count,OP1,0); Account1.OrderSell(BP,Signal.count,OP2,0); } //차트에서 매도신호 발생 if (Signal.signalKind == 3) { //ATM위 행사가 갯수 var UNum = Option.uppersATM; //ATM아래 행사가 갯수 var LNum = Option.lowersATM; //각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언 var CallCode = new Array(UNum+LNum+1); //각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언 var CallPrice = new Array(UNum+LNum+1); //각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언 var PutCode = new Array(UNum+LNum+1); //각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언 var PutPrice = new Array(UNum+LNum+1); //콜종목 찾기 //콜옵션은 ATM기준 위행사가 +단계, 아래가 -단계이므로 //for문에서 LNum의 역수부터 시작해서 UNum까지 1씩 증가하면서 수행하도록 함 for (var i = -LNum; i <= UNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(0, i) >= dnv && Option.GetCurrent(0, i) <= upv) { //해당종목의 현재가를 배열변수 CallPrice의 방번호 i+LNum에 저장 CallPrice[i+LNum] = Option.GetCurrent(0, i); //해당종목의 종목코드를 배열변수 CallCode의 방번호 i+LNum에 저장 CallCode[i+LNum] = Option.GetATMCallRecent(i); //주의 //배열변수의 방(공간)번호은 -가 없으므로 최하단 행사가를 0번방부터 //저장하도록 작성해야 함 } else//0.7~1.7 사이가 아니면 { //배열변수 CallPrice의 방번호 i+LNum에 -1 저장 CallPrice[i+LNum] = -1; //배열변수 CallCode의 방번호 i+LNum에 -1 저장 CallCode[i+LNum] = -1; } } //풋종목 찾기 //풋옵션은 ATM기준 아래 행사가 +단계, 위가 -단계이므로 //for문에서 HNum의 역수부터 시작해서 LNum까지 1씩 증가하면서 수행하도록 함 for (var i = -UNum; i <= LNum; i++) { //값이 0.7~1.7사이이면 if (Option.GetCurrent(1, i) >= dnv && Option.GetCurrent(1, i) <= upv ) { //해당종목의 현재가를 배열변수 PutPrice의 방번호 ii+LNum에 저장 PutPrice[i+UNum] = Option.GetCurrent(1, i); //해당종목의 현재가를 배열변수 PutCode의 방번호 ii+LNum에 저장 PutCode[i+UNum] = Option.GetATMPutRecent(i); } else //2.0보다 크면 { //배열변수 PutPrice의 방번호 ii+LNum에 -1 저장 PutPrice[i+UNum] = -1; //배열변수 PutCode의 방번호 ii+LNum에 -1 저장 PutCode[i+UNum] = -1; } } //배열변수 CallPrice의 각 배열방의 값중 가장 큰값을 찾아 CC에 저장하고 //CallCode의 동일 방번호의 값을 CallOrderCode에 저장 var CC = -1; var CallOrderCode = -1; for (var i = -LNum; i <= UNum; i++) { if (CallPrice[i+LNum] > CC) { CC = CallPrice[i+LNum]; CallOrderCode = CallCode[i+LNum] } } //배열변수 PutPrice의 각 배열방의 값중 가장 큰값을 찾아 PP에 저장하고 //PutCode의 동일 방번호의 값을 PutOrderCode에 저장 var PP = -1; var PutOrderCode = -1; for (var i = -UNum; i <= LNum; i++) { if (PutPrice[i+UNum] > PP) { PP = PutPrice[i+UNum]; PutOrderCode = PutCode[i+UNum]; } } if (CC > 0 && PP > 0) { Start = -1; SC = CallOrderCode; SP = PutOrderCode; Scount = Signal.count; var OP1 = Option1.GetCurrent(SC); if (Option.GetAskByCode(SC,1) > 0) OP1 = Option.GetAskByCode(SC,3); if (Option.GetAskByCode(SC,2) > 0) OP1 = Option.GetAskByCode(SC,3); if (Option.GetAskByCode(SC,3) > 0) OP1 = Option.GetAskByCode(SC,3); var OP2 = Option1.GetCurrent(SP); if (Option.GetAskByCode(SP,1) > 0) OP2 = Option.GetAskByCode(SP,3); if (Option.GetAskByCode(SP,2) > 0) OP2 = Option.GetAskByCode(SP,3); if (Option.GetAskByCode(SP,3) > 0) OP2 = Option.GetAskByCode(SP,3); Account1.OrderSell(SC,Signal.count,OP1,0); Account1.OrderSell(SP,Signal.count,OP2,0); } } //차트에서 매도청산신호 발생 if (Start == -1 && Signal.signalKind == 4) { Start = 0; var OP1 = Option1.GetCurrent(SC); if (Option.GetBidByCode(SC,1) > 0) OP1 = Option.GetBidByCode(SC,3); if (Option.GetBidByCode(SC,2) > 0) OP1 = Option.GetBidByCode(SC,3); if (Option.GetBidByCode(SC,3) > 0) OP1 = Option.GetBidByCode(SC,3); var OP2 = Option1.GetCurrent(SP); if (Option.GetBidByCode(SP,1) > 0) OP2 = Option.GetBidByCode(SP,3); if (Option.GetBidByCode(SP,2) > 0) OP2 = Option.GetBidByCode(SP,3); if (Option.GetBidByCode(SP,3) > 0) OP2 = Option.GetBidByCode(SP,3); Account1.OrderBuy(SC,Signal.count,OP1,0); Account1.OrderBuy(SP,Signal.count,OP2,0); } }
프로필 이미지
무명
2015-12-20
1948
글번호 223747
답변완료

미니옵션으로 변환식 부탁합니다.

아래식을 미니옵션으로 변경하여 거래 하려고 합니다. var CallOrderCode,PutOrderCode; var Entry, Exit; function Main_OnStart() { Entry = false; Exit = false; Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { if (nEventID <= 1) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //14시 30분 if (Entry == false && HHMMSS >= 143000 && HHMMSS <= 143100 ) { Entry = true; //차트가 무포지션 if (Chart1.GetOpenContracts() == 0) { Main.SetUserValue("CallOrderCode", ""); Main.SetUserValue("PutOrderCode", ""); } //차트가 매수유지봉 if (Chart1.GetOpenContracts() > 0) { Main.MessageList("--------------------------------------------"); Main.MessageList("매수신호유지"); var UNum = Option.uppersATM; var LNum = Option.lowersATM; //콜옵션중 3.0에 가장 가까운 종목 //콜옵션 모든 종목을 현재가-3.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)-3.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] } } //풋옵션중 3.0에 가장 가까운 종목 //풋옵션 모든 종목을 현재가-3.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)-3.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(PutOrderCode1, Vo1, Option.GetBid(PutOrderCode, 3), 0); Account1.OrderSell(CallOrderCode, Vo1, Option.GetBid(CallOrderCode, 3), 0); Main.SetUserValue("PutOrderCode", PutOrderCode); Main.SetUserValue("CallOrderCode", CallOrderCode); } =================== 중 략 ========================================================= //13시 30분 if (Exit == false && HHMMSS >= 133000 && HHMMSS <= 133100 ) { Exit = true; //내부파일의 값을 가져와 변수에 저장 var PreDayCall = Main.GetUserValue("CallOrderCode"); var PreDayPut = Main.GetUserValue("PutOrderCode"); //PreDayCall에 값이 있으면 if (PreDayCall != "") { //잔고셋팅후 매도포지션이면 청산하고 //내부파일의 값을 빈공간으로 만듬 Account1.SetBalanceItem(PreDayCall,0) if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, 0, 1); Main.SetUserValue("CallOrderCode", ""); } } //PreDayPut에 값이 있으면 if (PreDayPut != "") { //잔고셋팅후 매도포지션이면 청산하고 //내부파일의 값을 빈공간으로 만듬 Account1.SetBalanceItem(PreDayPut,0) if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, 0, 1); Main.SetUserValue("PutOrderCode", ""); } } //모두 수행후 값을 빈공간으로 만듬 Main.SetUserValue("CallOrderCode", ""); Main.SetUserValue("PutOrderCode", ""); }
프로필 이미지
팡팡
2015-12-14
1999
글번호 223744
답변완료

주문가능수량을 가져올수있는 수식이있나요?

옵션이나 미니선물을 여러개 주문내려고 할때 현재 계좌에서 주문가능금액을 체크해서 옵션 매도 가능 수량이나 미니선물 주문 가능수량을 알수있는방법이 있는지 궁금합니다 예제를 찾아봐도 잘안나와서요. 알려주시면 감사하겠습니다
프로필 이미지
QQQ
2015-12-12
2140
글번호 223743
답변완료

주식발행 총수량 또는 시가총액 함수부재에 따른 세금 30프로

수고하십니다. 내년부터 대주주요건이 코스피 1% 코스닥 2% 이상은 매도시에 양도소득세 1년미만(30%) 또는 20%를 내야합니다. 2016.04.01 이후 그럼 자 문제점이 뭐라고 생각하시는지요! 예스스탁에서는 주식 발행 총수 또는 시가총액을 알수 있는 함수가 없습니다. 이는 예스트레이더 및 예스스팟을 사용자들은 양도소득세 20~30% 내라는 말과 같습니다. 이는 선물에도 적용 된다고 알고있습니다. 중간중간 요청드린 사람들이 많이 있는것으로 압니다. 이번에는 세금과 관련있으니 꼭 예스랭기지 와 예스스팟에 함수를 만들어 주시길 바랍니다.
프로필 이미지
큰상
2015-12-09
2040
글번호 223739
답변완료

예스스팟 기본예제 찾고 싶은데요....

1.예스스팟 기본 시스템수식예제들을 찾아보고싶습니다. 올려 있느곳 있으면 알려주시면 감사하겠습니다. 2. 아래 예스랭귀지 수식을 예로하여 예스스팟에 적용 가능한 수식으로 변경하여 올려 주시면 감사 하겠습니다. 주석을 달아 주시면 더욱 고맙겠습니다. Input : p1(0),k(0),N(0); var1 = ema(c,p1); Buy("B",AtStop,var1+K); ExitLong("bx10",AtStop,Lowest(L,N)); Sell("S",AtStop,var1-k); ExitShort("sx10",AtStop,Highest(H,N));
프로필 이미지
너무조아
2015-12-09
2113
글번호 223738
답변완료

아래식에 진입주문지연 3초 추가 부탁드립니다.

function Main_OnStart() { Main.MessageList("선물to미니_스팟_시작"); } function Chart1_OnRiseSignal(Signal) { //매수신호 발생 if(Signal.signalKind == 1) { Main.MessageList("Buy_Signal"); //매도5호가로 매수주문 Account1.OrderBuy(Main.GetOrderCode(MarketData1.code),수량, MarketData1.Ask(5),0); } //매수청산신호발생 if(Signal.signalKind == 2) { Main.MessageList("ExitLong_Signal"); //매수5호가로 매도주문 Account1.OrderSell(Main.GetOrderCode(MarketData1.code), 수량,MarketData1.Bid(5), 0); } //매도신호 발생 if(Signal.signalKind == 3) { Main.MessageList("Sell_Signal"); //잔고셋팅 //매수5호가로 매도주문 Account1.OrderSell(Main.GetOrderCode(MarketData1.code),수량, MarketData1.Bid(5),0); } //매도청산신호발생 if (Signal.signalKind== 4) { Main.MessageList("ExitShort_Signal"); //잔고셋팅 //매도5호가로 매수주문 Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), 수량,MarketData1.Ask(5), 0); } }
프로필 이미지
시골소년
2015-12-04
2086
글번호 223737