커뮤니티

예스스팟 Q&A

답변완료

9시 시초가, 10시 시초가 구분

안녕하세요~ 다음 수식 부탁드립니다. 수능일 및 연초 10시 개장과 일반적인 9시 개장을 구분하고 싶은데 YesSpot으로 어떻게 표현하면 될런지요. 1) 당일 시초가가 9시에 형성되었다면 2) 9시 시초가가 True 라면 등등 function Main_OnStart() { Main.MessageLog("시작"); Start = 0; }
프로필 이미지
새로운세상
2013-11-07
834
글번호 222701
답변완료

문의 드립니다.

1. 아래는 게시판에 올라와 있는 스팟로직입니다. 선물신호로 옵션을 매매하는 로직으로 알고 있습니다. 아래 수식은 선물매수신호 발생하면 콜옵션등가 매수, 선물매도신호 발생하면 풋옵션등가매수식인데,,, 반대로 선물매수신호 발생하면 콜옵션등가 매도, 선물매도신호 발생하면 풋옵션등가 매도할 수 있도록 수정부탁드립니다. 2. 당일매매나 오버매매에 동일하게 진입/청산될 수 있도록 하고... 예스트레이더 선물신호와 동일한 진입계약수로 진입/청산될 수 있도록 부탁드립니다. 3. 예스스팟 처음사용자라서 그러는데 위의 로직을 가지고 실제 매매를 하기위한 객체추가등의 절차와 방법등을 알려주시면 감사하겠습니다. 안녕하세요 예스스탁입니다. 전화로 답변드린 부분에서 좀더 강화하여 스팟 적용시점에 UserValue의 BuyCall와 BuyPut에 종목코드가 저장되어 있고 해당 종목코드의 종목이 실제 잔고에도 있으면 적용시점 이후에 최초 신호가 청산일때도 신호가 발생하게 했습니다. 아래식으로 테스트 해 보시기 바랍니다. var BStart = 0; var SStart = 0; var BuyCallCode; var BuyPutCode; var SellCallCode; var SellPutCode; function Main_OnStart() { Main.MessageList("시작"); var AA = Main.GetUserValue("BuyCall"); if (AA == "") { BStart = 0; Main.MessageList("UserValue의 BuyCall - 저장된 종목코드 없음"); } else { A1.SetBalanceItem(AA,0); if (A1.Balance.count > 0) { BStart = 1; BuyCallCode = AA; Main.MessageList("UserValue의 BuyCall - : ",BuyCallCode); } } var BB = Main.GetUserValue("BuyPut"); if (BB == "") { SStart = 0; Main.MessageList("UserValue의 BuyPut - 저장된 종목코드 없음"); } else { A1.SetBalanceItem(BB,0); if (A1.Balance.count > 0) { SStart = 1; BuyPutCode = BB; Main.MessageList("UserValue의 BuyPut - : ",BuyPutCode,"계좌에도 해당 종목 있음"); } } Main.MessageList(BStart,SStart); } function C1_OnRiseSignal(Signal) { Kind = Signal.signalKind; Main.MessageLog("신호완성/"+Kind); //선물차트에서 매수신호발생하면 콜 매수 if (Signal.signalKind ==1) { BStart = 1; BuyCallCode = Option.GetATMCallRecent(0);//ATM콜 종목코드 var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);//ATM콜 매수2호가 A1.OrderBuy(BuyCallCode, vol, BuyCallPrice, 0); Main.MessageLog("등가콜매수 : "+BuyCallCode); //주문 후 내부파일에 콜종목코드를 BuyCall이름으로 저장 Main.SetUserValue("BuyCall",BuyCallCode); } //선물차트에서 매도신호발생하면 풋 매수 if (Signal.signalKind ==3) { SStart =1; BuyPutCode = Option.GetATMPutRecent(0);//ATM풋 종목코드 var BuyPutPrice = Option.GetBidByCode(BuyPutCode, 2);//ATM풋 매수 2호가 A1.OrderBuy(BuyPutCode, vol, BuyPutPrice, 0); Main.MessageLog("등가풋매수 : "+BuyPutCode); //주문 후 내부파일에 풋종목코드를 BuyPut이름으로 저장 Main.SetUserValue("BuyPut",BuyCallCode); } if (BStart == 1 && Signal.signalKind == 2)//선물차트 매수 청산신호발생하면 콜 매수 청산 { var BxCallPrice = Option.GetBidByCode(BuyCallCode, 2); A1.OrderSell(BuyCallCode, vol, BxCallPrice, 0); Main.MessageLog("등가콜청산 : "+BuyCallCode); // 매수청산 주문후 내부파일의 BuyCall의 값을 ""저장(공백) Main.SetUserValue("BuyCall",""); } if (SStart == 1 && Signal.signalKind == 4)//선물차트 매도 청산신호발생하면 풋 매수 청산 { var BxPutPrice = Option.GetBidByCode(BuyPutCode, 2); A1.OrderSell(BuyPutCode, vol, BxPutPrice, 0); Main.MessageLog("등가풋청산 : "+BuyPutCode); // 매수청산 주문후 내부파일의 BuyPut의 값을 ""저장(공백) Main.SetUserValue("BuyPut",""); } } 즐거운 하루되세요 > 몬자 님이 쓴 글입니다. > 제목 : Re : Re : 스팟문의드립니다. > 답변감사합니다. 매수주문 완료되고, 프로그램 재접속 후 시험적용으로 확인하는도중 주문가격과 종목코드에서 이상한 결과가 나옵니다. 위 그림과 같이 매수 주문가격 1.46 매도 주문가격 1.-2147483648 주문가격과 종목코드가 이상합니다. 어떻게 된 것인지 궁금합니다. 고민 중에 SetBalance 함수를 이용하면 될 것 같은데 많이 어렵습니다. 번거롭게 질문이 잦아 죄송합니다. > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 스팟문의드립니다. > 안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. SetUserValue함수와 GetUserValue 함수를 이용해 처리했습니다. 주석 참고하시기 바랍니다. //아래 전략은 기존 수식입니다. var BStart; var SStart; var BuyCallCode; var BuyPutCode; var SellCallCode; var SellPutCode; function Main_OnStart() { Main.MessageLog("시작"); SStart = 0; //스팟 적용시에 BuyCall값을 불러와 공백이면 0 아니면 1 var AA = Main.GetUserValue("BuyCall"); if (AA == "") BStart = 0; else BStart = 1; //스팟 적용시에 BuyPut값을 불러와 공백이면 0 아니면 1 var BB = Main.GetUserValue("BuyPut"); if (BB == "") SStart = 0; else SStart = 1; } function C1_OnRiseSignal(Signal) { Kind = Signal.signalKind; Main.MessageLog("신호완성/"+Kind); //선물차트에서 매수신호발생하면 콜 매수 if (Signal.signalKind ==1) { BStart = 1; BuyCallCode = Option.GetATMCallRecent(0);//ATM콜 종목코드 var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);//ATM콜 매수2호가 A1.OrderBuy(BuyCallCode, vol, BuyCallPrice, 0); Main.MessageLog("등가콜매수 : "+BuyCallCode); //주문 후 내부파일에 콜종목코드를 BuyCall이름으로 저장 Main.SetUserValue("BuyCall",BuyCallCode); } //선물차트에서 매도신호발생하면 풋 매수 if (Signal.signalKind ==3) { SStart =1; BuyPutCode = Option.GetATMPutRecent(0);//ATM풋 종목코드 var BuyPutPrice = Option.GetBidByCode(BuyPutCode, 2);//ATM풋 매수 2호가 A1.OrderBuy(BuyPutCode, vol, BuyPutPrice, 0); Main.MessageLog("등가풋매수 : "+BuyPutCode); //주문 후 내부파일에 풋종목코드를 BuyPut이름으로 저장 Main.SetUserValue("BuyPut"",BuyCallCode); } if (BStart == 1 && Signal.signalKind == 2)//선물차트 매수 청산신호발생하면 콜 매수 청산 { var BxCallPrice = Option.GetBidByCode(BuyCallCode, 2); A1.OrderSell(BuyCallCode, vol, BxCallPrice, 0); Main.MessageLog("등가콜청산 : "+BuyCallCode); // 매수청산 주문후 내부파일의 BuyCall의 값을 ""저장(공백) Main.SetUserValue("BuyCall",""); } if (SStart == 1 && Signal.signalKind == 4)//선물차트 매도 청산신호발생하면 풋 매수 청산 { var BxPutPrice = Option.GetBidByCode(BuyPutCode, 2); A1.OrderSell(BuyPutCode, vol, BxPutPrice, 0); Main.MessageLog("등가풋청산 : "+BuyPutCode); // 매수청산 주문후 내부파일의 BuyPut의 값을 ""저장(공백) Main.SetUserValue("BuyPut",""); } } 즐거운 하루되세요 > 몬자 님이 쓴 글입니다. > 제목 : 스팟문의드립니다. > 선물신호를 받아서 옵션 매수후 2~3 일간 포지션 홀딩시, 다음날(프로그램 재시작) 스팟전략이 디폴트되어 청산식이 제대로 되지 않습니다. 계좌함수를 통해 해결할 수 있다고 들었는데요, 계좌함수를 이용해 선물에서 청산신호 발생시 포지션을 청산하고 싶습니다. 부탁드립니다. //아래 전략은 기존 수식입니다. var BStart; var SStart; var BuyCallCode; var BuyPutCode; var SellCallCode; var SellPutCode; function Main_OnStart() { Main.MessageLog("시작"); BStart = 0; SStart = 0; } function C1_OnRiseSignal(Signal) { Kind = Signal.signalKind; Main.MessageLog("신호완성/"+Kind); //선물차트에서 매수신호발생하면 콜 매수 if (Signal.signalKind ==1) { BStart = 1; BuyCallCode = Option.GetATMCallRecent(0);//ATM콜 종목코드 var BuyCallPrice = Option.GetBidByCode(BuyCallCode, 2);//ATM콜 매수2호가 A1.OrderBuy(BuyCallCode, vol, BuyCallPrice, 0); Main.MessageLog("등가콜매수 : "+BuyCallCode); } //선물차트에서 매도신호발생하면 풋 매수 if (Signal.signalKind ==3) { SStart =1; BuyPutCode = Option.GetATMPutRecent(0);//ATM풋 종목코드 var BuyPutPrice = Option.GetBidByCode(BuyPutCode, 2);//ATM풋 매수 2호가 A1.OrderBuy(BuyPutCode, vol, BuyPutPrice, 0); Main.MessageLog("등가풋매수 : "+BuyPutCode); } if (BStart == 1 && Signal.signalKind == 2)//선물차트 매수 청산신호발생하면 콜 매수 청산 { var BxCallPrice = Option.GetBidByCode(BuyCallCode, 2); A1.OrderSell(BuyCallCode, vol, BxCallPrice, 0); Main.MessageLog("등가콜청산 : "+BuyCallCode); } if (SStart == 1 && Signal.signalKind == 4)//선물차트 매도 청산신호발생하면 풋 매수 청산 { var BxPutPrice = Option.GetBidByCode(BuyPutCode, 2); A1.OrderSell(BuyPutCode, vol, BxPutPrice, 0); Main.MessageLog("등가풋청산 : "+BuyPutCode); } }
프로필 이미지
무명
2013-11-06
880
글번호 222700
답변완료

질문드립니다.

안녕하세요. 확장차트 객체를 사용해서 5분봉 차트에서 60일 이평선을 돌파하면 선물매수, 하락하면 매도하는 전략을 구현하고 싶습니다.(익절10틱,손절5틱,종가청산) 감사합니다.
프로필 이미지
세르파
2013-11-06
946
글번호 222695
답변완료

복수 계좌

수고하십니다. 각각 다른 시스템을 3개돌린다고 가정했을시 . 복수 계좌로 설정해야하는지 어떻게 하는것이 좋은지 궁급합니다. 시스템 1에서 매수로 들어가고 시스템에서는 매도로 들어갔을시 청산되버리더라구요. 그럼 부탁합니다.
프로필 이미지
왼손잡이
2013-11-04
921
글번호 222694
답변완료

옵션 챠트

수고하십니다. 옵션으로 시스템을 시뮬레이션 하고 싶은데 연결 옵션챠트는 제공 안되는지요? 제공 된다면 적용하는 방법 부탁드리고요 안된다면 왜 안되는지. 타 증권사도 제공안되는지궁금합니다. 제공이 안되면 옵션은 시스템으로 시뮬레이션 은 어떤 방법으로 하는지 궁금합니다. 그럼 수고하세요.
프로필 이미지
왼손잡이
2013-11-04
929
글번호 222693
답변완료

오늘 날짜 저장...

안녕하세요. 종목 검색된 사항들을 별도의 파일에 저장을 하다가.. 오늘 날짜와시간을 넣고 싶어서요. var d = new Date(); var a1 = d.getFullYear(); var a2 = d.getMonth(); var a3 = d.getDate(); var a4 = d.getHours(); var a5 = d.getMinutes(); Main.PrintOnFile("load.txt", a1,a2,a3,a4,a5); 저장된 파일을보면... 2013 10 4 13 25 이렇게 나옵니다... 11월인데.. 왜 10월로 나오는걸까요???
프로필 이미지
오토
2013-11-04
1205
글번호 222692
답변완료

스캘핑에 관련하여

스캘퍼로서 예스스팟의 매력을 흠뻑 느끼고 있습니다. 오늘 오후장(11월 1일)처럼 너무 흔드는 장에서는 먹을 수 있을때 먹어두는 것이 스캘퍼의 덕목(? ㅎㅎㅎ)이라고 봅니다. 그래서, 다음과 같이 저의 진입기준에 청산 수식을 만들어 봤습니다. 진입은 잘 이루어 지는데 청산에서 영 버벅거리는군요. HELP ME, PLEASE.. 근데 왜 업데이트 가 U5p5d5a5t5e는 금지어라고 하며서 글 올리기를 못하게 하는거죠? 그럼 "업데이트"를 사용한 수식에 관한 질문은 어쩌죠? 우찌 해야할지?
프로필 이미지
마루아빠
2013-11-01
1201
글번호 222691
답변완료

전략명을 불러오는 객체는?

안녕하세요! 전략명을 불러와서 디버깅창에 표시하려면 어느 객체를 이용하여야 하나요? 만약 불러올수 없다면 만들어 주셨으면 합니다 여러 전략들을 동시에 돌릴때는 꼭 필요하리라 생각합니다 감사합니다 꾸벅!
프로필 이미지
brucehan
2013-11-01
1146
글번호 222689
답변완료

문의

아래식은 1~2 가격옵션중 1에 근접한 옵션 진입식인데요. 좀 수정해서 가격기준을 1~2중 단순히 1.5 에 가장 가까운 옵션매수진입으로 수정 부탁드립니다 그리고 이게 체결될때 시장가로 체결되는지요? 감사합니다 //************************************************* var Start; var UNum; var LNum; var CallCode; var CallPrice; var PutCode; var PutPrice; var CC; var PP; var CallOrderCode; var PutOrderCode; function Main_OnStart() { Start = 0; } function Chart1_OnRiseSignal(Signal) { UNum = Option.uppersATM; LNum = Option.lowersATM; CallCode = new Array(UNum+LNum+1); PutCode = new Array(UNum+LNum+1); CallPrice = new Array(UNum+LNum+1); PutPrice = new Array(UNum+LNum+1); for (var i = -LNum; i <= UNum; i++) { if (Option.GetCurrent(0, i) <= 2.0 && Option.GetCurrent(0, i) >= 1.0) { CallPrice[i+LNum] = Option.GetCurrent(0, i); CallCode[i+LNum] = Option.GetATMCallRecent(i); } else { CallPrice[i+LNum] = 9999999; CallCode[i+LNum] = 9999999; } } for (var ii = -UNum; ii <= LNum; ii++) { if (Option.GetCurrent(1, ii) <= 2.0 && Option.GetCurrent(1, ii) >= 1.0) { PutPrice[ii+UNum] = Option.GetCurrent(1, ii); PutCode[ii+UNum] = Option.GetATMPutRecent(ii); } else { PutPrice[ii+UNum] = 9999999; PutCode[ii+UNum] = 9999999; } } //buy신호 발생시 if (Signal.signalKind == 1) { Start = 1; CC = 9999999; CallOrderCode = 9999999; for (var iii = -LNum; iii <= UNum; iii++) { if (CallPrice[iii+LNum] < CC) { CC = CallPrice[iii+LNum]; CallOrderCode = CallCode[iii+LNum] } } if (CC < 9999999) { Account1.OrderBuy(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } // Exitlong신호 발생시 if (Start == 1 && Signal.signalKind == 2) { Start = 0; if (CC > 0) { Account1.OrderSell(CallOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+CallOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //sell신호 발생시 if (Signal.signalKind == 3) { Start = -1; PP = 9999999; PutOrderCode = 9999999; for (var iiii = -UNum; iiii <= LNum; iiii++) { if (PutPrice[iiii+UNum] < PP) { PP = PutPrice[iiii+UNum]; PutOrderCode = PutCode[iiii+UNum]; } } if (PP < 9999999) { Account1.OrderBuy(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } //exitshort신호 발생시 if ( Start == -1 && Signal.signalKind == 4) { Start = 0; if (PP > 0) { Account1.OrderSell(PutOrderCode, 1, 0, 1); Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드:"+PutOrderCode+" /START:"+Start); } else { Main.MessageLog("B신호종류:"+Signal.signalKind+" /종목코드: 지정한 가격대 종목이 없음"+" /START:"+Start); } } }
프로필 이미지
털보
2013-11-01
1002
글번호 222687
답변완료

투자주체 일별매매추이 (4103)

안녕하세요? 투자주체 일별매매추이(4103)를 특정기간 동안 검색한 후 엑셀로 자료를 저장하고자 합니다. 어떻게 할 수 있나요?
프로필 이미지
peanut
2013-10-30
1041
글번호 222684