커뮤니티

예스스팟 잔고대비 진입청산식 문의

프로필 이미지
한수더
2013-04-09 14:21:12
190
글번호 61841
답변완료
다음과 같은 로직을 문의 드립니다. 예를 들어 계좌에 옵션매수 5계약을 들고 있다고 가정할 때, 133000 시간 이전까지 1. 계좌잔고에 남아있는 종목의 잔고평가액이 총 계좌평가액의 50% 이상이면 50%에 맞춰 수량 청산(상대2호가). 2. 계좌잔고에 남아있는 종목의 잔고평가액이 총 계좌평가액의 50% 미만이면 50%에 맞춰 수량 진입(상대2호가). 빠른 답변 부탁드리고 미리 정말 감사드립니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-04-10 14:39:15

안녕하세요 예스스탁입니다. 스크랩트 객체화면에 계좌객체 추가하셔야 합니다. 계좌객체명은 Account1입니다. function Main_OnStart() { Main.SetTimer(1, 1000);//1초당 한번 작동 Main.MessageList(Math.floor(70000000/500000)); } function Main_OnTimer(nEventID) { var total = Account1.GetTotalAmount(0,0);//잔고 평가금액 합 var num = Account1.GetTheNumberOfBalances();//계좌종목수 for(var i = 0; i < num; i++) { //계좌의 첫번째 종목부터 순서대로 불러와 잔고를 셋팅 Account1.SetBalanceIndex(i); if (A1.Balance.assessedAmount > total*0.5)//50%초과 { var diff = (A1.Balance.assessedAmount -(total*0.5));//종목의계좌평가금액-계좌총평가금액의 50% var vol = Math.floor(diff/500000);//diff를 수량으로 변환 if (Account1.Balance.position == 1)//매도포지션이면 vol만큼 매수주문 Account1.OrderBuy(Account1.Balance.code,vol,0,1); if (Account1.Balance.position == 2)//매수포지션이면 vol만큼 매도주문 Account1.OrderSell(Account1.Balance.code,vol,0,1); } if (A1.Balance.assessedAmount < total*0.5)//50% 미달 { var diff = ((total*0.5)-A1.Balance.assessedAmount);//계좌총평가금액의 50%-종목의계좌평가금액 var vol = Math.floor(diff/500000);//diff를 수량으로 변환 if (Account1.Balance.position == 1)//매도포지션이면 vol만큼 매도주문 Account1.OrderSell(Account1.Balance.code,vol,0,1); if (Account1.Balance.position == 2)//매수포지션이면 vol만큼 매수주문 Account1.OrderBuy(Account1.Balance.code,vol,0,1); } } } 예스스팟 특성상 주문실행을 하면서 테스트가 필요한 부분이 많으므로 예스스팟은 저희쪽에서 식을 완전히 테스트해서 올려드리지는 못합니다. 위 식 참고하셔서 수정보완해 사용하시기 바랍니다. 즐거운 하루되세요 > 한수더 님이 쓴 글입니다. > 제목 : 예스스팟 잔고대비 진입청산식 문의 > 다음과 같은 로직을 문의 드립니다. 예를 들어 계좌에 옵션매수 5계약을 들고 있다고 가정할 때, 133000 시간 이전까지 1. 계좌잔고에 남아있는 종목의 잔고평가액이 총 계좌평가액의 50% 이상이면 50%에 맞춰 수량 청산(상대2호가). 2. 계좌잔고에 남아있는 종목의 잔고평가액이 총 계좌평가액의 50% 미만이면 50%에 맞춰 수량 진입(상대2호가). 빠른 답변 부탁드리고 미리 정말 감사드립니다.