커뮤니티

수식 요청 드립니다.

프로필 이미지
dandy
2015-10-26 14:28:14
2234
글번호 223698
답변완료
안녕하세요. 아래 수식 요청 드립니다. 1. 코스피 200 선물 5EA 당일청산 시스템을 예스스팟을 이용 미니선물 5계약으로 동일계좌로 거래할경우 동일계좌의 당일손실제한(외부변수), 당월손실제한(외부변수) 예스스팟 수식 부탁드립니다. 2. 계좌가 다를경우에도 당일손실제한(외부변수), 당월손실제한(외부변수) 가능한지 예스스팟수식 부탁드립니다. 감사합니다.
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2015-11-06 16:58:36

안녕하세요 예스스탁입니다. 스팟은 가이드 정도로만 답변을 드릴수 있습니다. 아래 내용 참고하셔서 수정보완해서 식을 완성해 가셔야 합니다. 당일손실제한에 대한 내용만 답변해 드립니다. 당월손실제한을 하기위해서는 사용자분이 매일매일 발생한 손익을 따로 엑셀이나 내부파일 등과 연동해서 기입을 해 놓고 값을 불러서 콜해 와야 하므로 제외합니다. 스팟은 시뮬레이션이 없으므로 실행이후의 발생한 주문에 대해서만 체크가 가능합니다. 이용에 유의하시기 바랍니다. 작성하시다가 궁금하시거나 막히시면 전화주시기 바랍니다. 여러개의 계좌를 체크하는 부분도 아래식과 형태는 같습니다. 스크립트 객체에서 계좌객체를 추가한 후에 수식에서 변수만 새로 만드셔서 아래내용과 같은 내용으로 수식 아래로 나열해 작성하시면 됩니다. 스크립트 객체설정 차트객체 추가 --> 속성에서 객체명은 Chart1, 아이디 연결 계좌객체 추가 --> 속성에서 객체명은 Account1, 계좌번호 지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 주문낼 종목으로 지정 입력변수 처가 --> 속성에서 변수명은 당일손실제한, 초기값 음수로 지정, 데이터형 숫자 var sumPL; var BuyID, BxID, SellID,SxID; var BuyNum, BxNum, SellNum,SxNum; var BuyAvg,SellAvg; var EntryStart,Dayloss,sumPL,T; function Main_OnStart() { sumPL = 0; T = 0; EntryStart = false; Dayloss = false; Main.SetTimer(1, 5000); } //차트에서 신호나오면 MarketData1 종목에 대해 주문 function Chart1_OnRiseSignal(Signal) { //매수진입신호 발생 if (Signal.signalKind == 1 && Dayloss == false) { BuyID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.Ask(3), 0); EntryStart = true; } //매수청산신호 발생 if (EntryStart == true && Signal.signalKind == 2) { //매수진입 미체결 있으면 취소 Account1.SetUnfill(BuyNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(BuyNum); } //잔고셋팅해 매수포지션 있으면 잔고수량만큼만 청산 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { //매수포지션 잔고 평단가 저장 BuyAvg = Account1.Balance.avgUnitCost; BxID = Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MarketData1.Bid(3), 0); T = 1; } } //매도진입신호 발생 if (Signal.signalKind == 3 sumPL > 당일손실제한) { SellID = Account1.OrderSell(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.Bid(3), 0); EntryStart = true; } //매도청산신호 발생 if (EntryStart == true && Signal.signalKind == 4) { //매수진입 미체결 있으면 취소 Account1.SetUnfill(SellNum); if (Account1.Unfill.count > 0) { Account1.OrderCancel(SellNum); } //잔고셋팅해 매도포지션 있으면 잔고수량만큼만 청산 Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { //매도포지션 잔고 평단가 저장 SellAvg = Account1.Balance.avgUnitCost; SxID = Account1.OrderBuy(Main.GetOrderCode(MarketData1.code), Signal.count,MarketData1.Ask(3), 0); T = -1; } } } function Main_OnOrderResponse(OrderResponse) { if (OrderResponse.orderID == BuyID) BuyNum = OrderResponse.orderNum; if (OrderResponse.orderID == BxID) BxNum = OrderResponse.orderNum; if (OrderResponse.orderID == SellID) SellNum = OrderResponse.orderNum; if (OrderResponse.orderID == SxID) SxNum = OrderResponse.orderNum; } function Main_OnNotifyFill(NotifyFill) { //매수청산신호의 체결이 수신되면 if (NotifyFill.orderNum == BxNum) { sumPL = sumPL +(NotifyFill.fillPrice-BuyAvg)*NotifyFill.fillCount; } //매도청산신호의 체결이 수신되면 if (NotifyFill.orderNum == SxNum) { sumPL = sumPL +(SellAvg-NotifyFill.fillPrice)*NotifyFill.fillCount; } } function Main_OnTimer(nEventID) { if (EntryStart == true && T == 1) { Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 2) { tempPL = sumPL+(Account1.Balance.current-Account1.Balance.avgUnitCost)*Account1.Balance.count; if (tempPL <= 당일손실제한) { Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,MarketData1.Bid(3), 0); Dayloss = true; } } } if (EntryStart == true && T == -1) { Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0); if (Account1.Balance.count > 0 && Account1.Balance.position == 1) { tempPL = sumPL+(Account1.Balance.avgUnitCost-Account1.Balance.current)*Account1.Balance.count; if (tempPL <= 당일손실제한) { Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,MarketData1.Ask(3), 0); Dayloss = true; } } } } 즐거운 하루되세요 > dandy 님이 쓴 글입니다. > 제목 : 수식 요청 드립니다. > 안녕하세요. 아래 수식 요청 드립니다. 1. 코스피 200 선물 5EA 당일청산 시스템을 예스스팟을 이용 미니선물 5계약으로 동일계좌로 거래할경우 동일계좌의 당일손실제한(외부변수), 당월손실제한(외부변수) 예스스팟 수식 부탁드립니다. 2. 계좌가 다를경우에도 당일손실제한(외부변수), 당월손실제한(외부변수) 가능한지 예스스팟수식 부탁드립니다. 감사합니다.