커뮤니티

1020 질문에 사용된 수식

프로필 이미지
소총부대
2015-06-19 10:12:05
1012
글번호 223535
답변완료
안녕하세요? 아래 1020 질문 관련하여 사용한 수식입니다. 수식은 지극히 초보적인 것으로 예스스탁에서 초기에 올려주신 수식입니다. 1020질문 답변 바랍니다. 문제는 장 초반에 매수가 4주 정도는 되야 하는데 주문 수량이 0으로 찍히면서 주문이 안되었다는 겁니다. 거기다가 장 중반에는 프로그램이 잘 작동하는 것을 확인했습니다. 감사합니다. //스크립트 객체 화면에서 아래와 같이 지정하고 식적용하시면 됩니다. //계좌객체 추가 --> 속성에서 객체명은 Account1, 주문할 계좌번호 지정 //차트객체 추가 --> 속성에서 객체명은 Chart1, 차트아이디를 부여후 차트에 동일아이디 지정 //종목객체 추가 --> 속성에서 객체명은 MarketData1, 종목은 코덱스 레버리지로 지정 //종목객체 추가 --> 속성에서 객체명은 MarketData2, 종목은 코덱스 레버리지로 지정 //각 객체에 대한 설명은 예스스팟 도움말 참고하시기 바랍니다. var Money = 50000;//금액 var Start; var Bcode,Bprice,Bvol; var Scode,Sprice,Svol; function Main_OnStart() { Start = 0; } //신호발생 function Chart2_OnRiseSignal(Signal) { //차트 Buy 신호 발생 if (Signal.signalKind == 1) { Start = 1; //매수종목코드 Bcode = MarketData1.code; //매수종목 매도5호가 Bprice = MarketData1.Ask(5); //지정한 금액으로 수량계산 Bvol = Math.floor(Money/Bprice); //매도 5호가에 지정한 수량 매수 Account1.OrderBuy(Bcode, Bvol,Bprice, 0); } //차트 Exitlong 신호 발생 if (Signal.signalKind == 2 && Start == 1) { //매수5호가 매도 Account1.OrderSell(Bcode,Bvol,MarketData1.Bid(5), 0) } //차트 Sell 신호 발생 if (Signal.signalKind == 3) { Start = 1; //매수주문종목 Scode = MarketData2.code; //매수종목 매도 5호가 Sprice = MarketData2.Ask(5); //지정한 금액으로 수량계산 Svol = Math.floor(Money/Sprice); //매도5호가에 매수주문 Account1.OrderBuy(Scode, Svol,Sprice, 0); } //차트 Exitshort 신호 발생 if (Signal.signalKind == 4 && Start == 1) { //매수5호가에 매도 Account1.OrderSell(Scode, Svol, MarketData2.Bid(5), 0); }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-06-25 10:05:54

안녕하세요 예스스탁입니다. 현재 수식에서 수량이 0이 발생하면 이유는 5호가 가격이 없어서 발생되는 내용 같습니다. 아래와 같이 처리하시면 매수주문시 매도5호가가 있으면 해당 가격으로 주문을 집행하고 없으면 현재가+5틱으로 주문을 내게 됩니다. 반대로 매도주문시 매수5호가가 있으면 해당 가격으로 주문을 내고 없으면 현재가-5틱 으로 주문을 내게 됩니다. var Money = 50000;//금액 var Start; var Bcode,Bprice,Bvol; var Scode,Sprice,Svol; function Main_OnStart() { Start = 0; } //신호발생 function Chart2_OnRiseSignal(Signal) { //차트 Buy 신호 발생 if (Signal.signalKind == 1) { Start = 1; //매수종목코드 Bcode = MarketData1.code; //매수종목 매도5호가 if (MarketData1.Ask(5) > 0) Bprice = MarketData1.Ask(5); else Bprice = MarketData1.current+MarketData1.GetTickSize()*5; //지정한 금액으로 수량계산 Bvol = Math.floor(Money/Bprice); //매도 5호가에 지정한 수량 매수 Account1.OrderBuy(Bcode, Bvol,Bprice, 0); } //차트 Exitlong 신호 발생 if (Signal.signalKind == 2 && Start == 1) { //매수청산가격 매수5호가가 있으면 매수5호가로 없으면 현재가-5틱 if (MarketData1.Bid(5) > 0) Bxprice = MarketData1.Bid(5); else Bxprice = MarketData1.current-MarketData1.GetTickSize()*5; //매수5호가 매도 Account1.OrderSell(Bcode,Bvol,Bxprice, 0) } //차트 Sell 신호 발생 if (Signal.signalKind == 3) { Start = 1; //매수주문종목 Scode = MarketData2.code; //매수종목 매도 5호가 if (MarketData2.Ask(5) > 0) Sprice = MarketData2.Ask(5); else Sprice = MarketData2.current+MarketData2.GetTickSize()*5; //지정한 금액으로 수량계산 Svol = Math.floor(Money/Sprice); //매도5호가에 매수주문 Account1.OrderBuy(Scode, Svol,Sprice, 0); } //차트 Exitshort 신호 발생 if (Signal.signalKind == 4 && Start == 1) { if (MarketData2.Bid(5) > 0) Sxprice = MarketData2.Bid(5); else Sxprice = MarketData2.current-MarketData2.GetTickSize()*5; Account1.OrderSell(Scode, Svol, Sxprice, 0); } } 즐거운 하루되세요 > 소총부대 님이 쓴 글입니다. > 제목 : 1020 질문에 사용된 수식 > 안녕하세요? 아래 1020 질문 관련하여 사용한 수식입니다. 수식은 지극히 초보적인 것으로 예스스탁에서 초기에 올려주신 수식입니다. 1020질문 답변 바랍니다. 문제는 장 초반에 매수가 4주 정도는 되야 하는데 주문 수량이 0으로 찍히면서 주문이 안되었다는 겁니다. 거기다가 장 중반에는 프로그램이 잘 작동하는 것을 확인했습니다. 감사합니다. //스크립트 객체 화면에서 아래와 같이 지정하고 식적용하시면 됩니다. //계좌객체 추가 --> 속성에서 객체명은 Account1, 주문할 계좌번호 지정 //차트객체 추가 --> 속성에서 객체명은 Chart1, 차트아이디를 부여후 차트에 동일아이디 지정 //종목객체 추가 --> 속성에서 객체명은 MarketData1, 종목은 코덱스 레버리지로 지정 //종목객체 추가 --> 속성에서 객체명은 MarketData2, 종목은 코덱스 레버리지로 지정 //각 객체에 대한 설명은 예스스팟 도움말 참고하시기 바랍니다. var Money = 50000;//금액 var Start; var Bcode,Bprice,Bvol; var Scode,Sprice,Svol; function Main_OnStart() { Start = 0; } //신호발생 function Chart2_OnRiseSignal(Signal) { //차트 Buy 신호 발생 if (Signal.signalKind == 1) { Start = 1; //매수종목코드 Bcode = MarketData1.code; //매수종목 매도5호가 Bprice = MarketData1.Ask(5); //지정한 금액으로 수량계산 Bvol = Math.floor(Money/Bprice); //매도 5호가에 지정한 수량 매수 Account1.OrderBuy(Bcode, Bvol,Bprice, 0); } //차트 Exitlong 신호 발생 if (Signal.signalKind == 2 && Start == 1) { //매수5호가 매도 Account1.OrderSell(Bcode,Bvol,MarketData1.Bid(5), 0) } //차트 Sell 신호 발생 if (Signal.signalKind == 3) { Start = 1; //매수주문종목 Scode = MarketData2.code; //매수종목 매도 5호가 Sprice = MarketData2.Ask(5); //지정한 금액으로 수량계산 Svol = Math.floor(Money/Sprice); //매도5호가에 매수주문 Account1.OrderBuy(Scode, Svol,Sprice, 0); } //차트 Exitshort 신호 발생 if (Signal.signalKind == 4 && Start == 1) { //매수5호가에 매도 Account1.OrderSell(Scode, Svol, MarketData2.Bid(5), 0); }