커뮤니티

시스템수식 부탁드립니다

프로필 이미지
희망차사
2013-03-18 13:01:34
2094
글번호 222264
답변완료

첨부 이미지

수고많어십니다. 지난달에 수식문의를 부탁드렸는데 응답이 없어서 다시 한번 부탁드립니다. 포지션 시스템을 운영하다보니, 포지션에 콜풋 행사가 다른 종목들이 여러개 들어갑니다. 포지션을 끌고가면서 부분 수익청산을 할때, ExitLong, ExitShort에서 청산시 포지션상의 정확한 매수/매도 물량을 모르는 경우 추가매도/매수로 인한 손실이 발생합니다. YesSpot 메뉴얼에서 당일진입물량에 대한 확인후 Exit 수행에 대한 예제가 있지만, 진입일자와 물량이 다른 포지션매매에서는 적용하기가 힘이 듭니다. YesSpot 사용시 사전에 충분한 시험을 많이 강조하셨지만, OnOrderResponse event 발생 등을 이용할 경우 시험적용으로 정확한 시뮬레이션이 불가능하고, 어느선에서는 실제적용하여 오류를 확인하여야 하는것으로 판단됩니다. 물론, 실제점검에서 물량을 줄여서 점검해야하지만, 포지션에 매도가 들어가는 경우 증거금이 일정금액이상 유지되는 상황에서 Exitshort에서 옵션매수가 들어가는 경우 오류발생시 주문수량이 커져서 상당한 손실이 발생합니다. 점검에따른 기회비용이 너무 큽니다. 부탁드립니다. 당일진입이 아니라 포지션진입 물량에 대해서, ExitLong/ExitShort 진입을 하기전에 계좌에 청산하고자하는 종목과 물량숫자를 계좌조회를 통해서 확인하는 수식을 가능한 빠른시일에 부탁드립니다. 지금 실제 시스템거래를 하고 있는 상황에서 오류발생의 걱정으로 모니터를 못떠납니다..
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-03-18 16:53:28

안녕하세요 예스스탁입니다.' 죄송합니다. 답변이 늦었습니다. 옵션객체 차트객체 : 객체명 Chart1 --> 속성화면에서 차트와 동일한 아이디 부여 계좌객체 : Account1 종목객체 : MarketData1 --> 속성에서 선물 근월물로 지정 종목객체 : MarketData2 --> 속성에서 선물 차월물로 지정 차트에 적용하신 지표식의 이름을 아래 GetIndicatorData함수안에 입력해 주셔야 합니다. 선물 근월물/차월물 구분을 위해 종목객체로 추가하셔야 합니다. OnStart이벤트에서 지표의 4개의 값과 계좌잔고에서 계산한 값이 동일하면 start변수가 1이 됩니다. 다른 이벤트에서 start == 1이란 조건을 추가하시면 됩니다. 충분히 테스트 후 사용하시기 바랍니다. var start = 0; function Main_OnStart() { var i1 = Chart1.GetIndicatorData("지표명",4,0);//plot1 최종값 var i2 = Chart1.GetIndicatorData("지표명",4,0);//plot2 최종값 var i3 = Chart1.GetIndicatorData("지표명",4,0);//plot3 최종값 var i4 = Chart1.GetIndicatorData("지표명",4,0);//plot4 최종값 Main.MessageLog("선근수"+i1+"선차수"+i2+"콜근수"+i3+"풋근수"+i4); var f1 = Main.GetOrderCode(MarketData1.code);//선물 근월물 종목코드 var f2 = Main.GetOrderCode(MarketData2.code);//선물 근월물 종목코드 var bc = Account1.GetTheNumberOfBalances();//계좌잔고 종목수 var un = Option.uppersATM;//ATM 위 행사가 갯수 var dn = Option.lowersATM;//ATM 아래 행사가 갯수 //선물보유 수량(근원물 fv1, 차월물 fv2) var fv1 = 0; var fv2 = 0; for (var cnt1 = 0; cnt1 <= bc; cnt1++) { Account1.SetBalanceIndex(cnt1) if (Account1.Balance.code == f1) fv1 = Account1.Balance.count; if (Account1.Balance.code == f2) fv2 = Account1.Balance.count; } //콜/풋옵션 근월물 보유갯수 var cv = 0; var pv = 0; for (var cnt2 = 0; cnt2 <= bc; cnt2++) { Account1.SetBalanceIndex(cnt2) for (var cnt3 = -dn; cnt3 <= un; cnt3++) { if (Account1.Balance.code == Option.GetATMCallRecent(cnt3)) cv = cv+Account1.Balance.count; } for (var cnt4 = -un; cnt4 <= dn; cnt4++) { if (Account1.Balance.code == Option.GetATMPutRecent(cnt4)) pv = pv+Account1.Balance.count; } } Main.MessageLog("선물근"+fv1+"선물차"+fv2+"콜근"+cv+"풋근"+pv); if (i1 == fv1 && i2 == fv2 && i3 == cv && i4 == pv) start = 1; } 다른 이벤트 { if (start == 1) if~~~~~~ } 즐거운 하루되세요 > 희망차사 님이 쓴 글입니다. > 제목 : 시스템수식 부탁드립니다 > 수고많어십니다. 지난달에 수식문의를 부탁드렸는데 응답이 없어서 다시 한번 부탁드립니다. 포지션 시스템을 운영하다보니, 포지션에 콜풋 행사가 다른 종목들이 여러개 들어갑니다. 포지션을 끌고가면서 부분 수익청산을 할때, ExitLong, ExitShort에서 청산시 포지션상의 정확한 매수/매도 물량을 모르는 경우 추가매도/매수로 인한 손실이 발생합니다. YesSpot 메뉴얼에서 당일진입물량에 대한 확인후 Exit 수행에 대한 예제가 있지만, 진입일자와 물량이 다른 포지션매매에서는 적용하기가 힘이 듭니다. YesSpot 사용시 사전에 충분한 시험을 많이 강조하셨지만, OnOrderResponse event 발생 등을 이용할 경우 시험적용으로 정확한 시뮬레이션이 불가능하고, 어느선에서는 실제적용하여 오류를 확인하여야 하는것으로 판단됩니다. 물론, 실제점검에서 물량을 줄여서 점검해야하지만, 포지션에 매도가 들어가는 경우 증거금이 일정금액이상 유지되는 상황에서 Exitshort에서 옵션매수가 들어가는 경우 오류발생시 주문수량이 커져서 상당한 손실이 발생합니다. 점검에따른 기회비용이 너무 큽니다. 부탁드립니다. 당일진입이 아니라 포지션진입 물량에 대해서, ExitLong/ExitShort 진입을 하기전에 계좌에 청산하고자하는 종목과 물량숫자를 계좌조회를 통해서 확인하는 수식을 가능한 빠른시일에 부탁드립니다. 지금 실제 시스템거래를 하고 있는 상황에서 오류발생의 걱정으로 모니터를 못떠납니다..