커뮤니티
예스스팟 잔고대비 진입청산식 문의
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호가).
빠른 답변 부탁드리고
미리 정말 감사드립니다.
다음글
이전글