커뮤니티

특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식

프로필 이미지
자오지환웅
2015-07-26 17:24:10
1783
글번호 223583
답변완료
제가 손으로 선물 옵션 합성포지션을 구축합니다. 그래서 예를 들자면 잔고에 선물 매수 1계약 , 콜245 매수 1계약 , 콜247 매도 1계약 , 풋245 매수 1계약 , 풋242 매도 1계약을 가지고 있습니다. 이경우 14시 40분이 되면 잔고의 모든 계약을 자동으로 청산하는 예스스팟 식을 알고 싶습니다. 부탁드립니다. 더운데 건강 조심하시고, 오늘도 좋은 하루 되세요. ^^
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2015-07-27 14:16:10

안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 스크립트 객체화면에는 계좌객체만 추가하신 후에 속성에서 객체명은 Account1로 하시고 계좌번호 지정해 주시면 됩니다. function Main_OnStart() { Main.MessageLog("시작") Main.SetTimer(1, 5000);//1번 타이머 셋팅(5초) } //타이머가 동작하면 function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //1번 타이머이고 14시40분 이후이면 if (nEventID == 1 && HHMMDD >= 144000) { //타이머 중지 Main.KillTimer(1); //계좌 총보유종목수 num = Account1.GetTheNumberOfBalances(); //0번 종목부터 순서대로 호출 //잔고의 인덱스는 젤 위 종목부터 순서대로 0,1,2,3~~순서로 인덱스가 부여됨 for(var i = 0; i < num; i++) { //순서대로 잔고셋팅 Account1.SetBalanceIndex(i); //잔고셋팅 후 //해당 종목이 매도포지션이면 //청산위해 잔고수량만큼 매수주문 if (Account1.Balance.position == 1) Account1.OrderBuy(A1.Balance.code,Account1.Balance.count,0,1); //해당 종목이 매수포지션이면 //청산위해 잔고수량만큼 매도주문 if (Account1.Balance.position == 2) Account1.OrderSell(A1.Balance.code,Account1.Balance.count,0,1); } } } 즐거운 하루되세요 > 자오지환웅 님이 쓴 글입니다. > 제목 : 특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식 > 제가 손으로 선물 옵션 합성포지션을 구축합니다. 그래서 예를 들자면 잔고에 선물 매수 1계약 , 콜245 매수 1계약 , 콜247 매도 1계약 , 풋245 매수 1계약 , 풋242 매도 1계약을 가지고 있습니다. 이경우 14시 40분이 되면 잔고의 모든 계약을 자동으로 청산하는 예스스팟 식을 알고 싶습니다. 부탁드립니다. 더운데 건강 조심하시고, 오늘도 좋은 하루 되세요. ^^
프로필 이미지

자오지환웅

2015-07-28 01:22:53

친절한 답변 감사드립니다. ^^ 답변에서 몇가지 궁금한 사항을 다시 질문드리자면 1. Main.KillTimer(1); --> 이부분은 생략해도 문제가 없는지 ??? 2. num = Account1.GetTheNumberOfBalances(); num 은 수식의 맨위에도 var 선언이 없던데 이러면 오류나는것 아닌가요 ??? var num = Account1.GetTheNumberOfBalances(); 이렇게 해야 맞는것이 아닌지 ??? 이건 var 선언이 불필요한 것인지 ??? 3. 14시 40분에 청산하면 되는거니까 굳이 타이며를 5초단위 설정하지 않고 (로직 돌아가는 속도에 영향을 줄까봐 ㅋ) Main.SetTimer(1, 60000 ); //1번 타이머 셋팅 (60초,1분) 아니면 Main.SetTimer(1, 600000 ); //1번 타이머 셋팅 (600초,10분) 이렇게 세팅해도 문제는 없는건지 ??? 4. 예스랭귀지의 and --> 예스스팟에서는 && , or --> || 이렇게 표현하는게 맞나요 ??? 답변 부탁드리겠습니다. 친절한 도움에 감사히 생각하고있습니다. 더운날 건강 조심하세요. ^^ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식 > 안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 스크립트 객체화면에는 계좌객체만 추가하신 후에 속성에서 객체명은 Account1로 하시고 계좌번호 지정해 주시면 됩니다. function Main_OnStart() { Main.MessageLog("시작") Main.SetTimer(1, 5000);//1번 타이머 셋팅(5초) } //타이머가 동작하면 function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //1번 타이머이고 14시40분 이후이면 if (nEventID == 1 && HHMMDD >= 144000) { //타이머 중지 Main.KillTimer(1); //계좌 총보유종목수 num = Account1.GetTheNumberOfBalances(); //0번 종목부터 순서대로 호출 //잔고의 인덱스는 젤 위 종목부터 순서대로 0,1,2,3~~순서로 인덱스가 부여됨 for(var i = 0; i < num; i++) { //순서대로 잔고셋팅 Account1.SetBalanceIndex(i); //잔고셋팅 후 //해당 종목이 매도포지션이면 //청산위해 잔고수량만큼 매수주문 if (Account1.Balance.position == 1) Account1.OrderBuy(A1.Balance.code,Account1.Balance.count,0,1); //해당 종목이 매수포지션이면 //청산위해 잔고수량만큼 매도주문 if (Account1.Balance.position == 2) Account1.OrderSell(A1.Balance.code,Account1.Balance.count,0,1); } } } 즐거운 하루되세요 > 자오지환웅 님이 쓴 글입니다. > 제목 : 특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식 > 제가 손으로 선물 옵션 합성포지션을 구축합니다. 그래서 예를 들자면 잔고에 선물 매수 1계약 , 콜245 매수 1계약 , 콜247 매도 1계약 , 풋245 매수 1계약 , 풋242 매도 1계약을 가지고 있습니다. 이경우 14시 40분이 되면 잔고의 모든 계약을 자동으로 청산하는 예스스팟 식을 알고 싶습니다. 부탁드립니다. 더운데 건강 조심하시고, 오늘도 좋은 하루 되세요. ^^
프로필 이미지

예스스탁 예스스탁 답변

2015-07-28 09:32:47

안녕하세요 예스스탁입니다. 1. 타이머가 일정간격으로 계속 동작하므로 지정한 시간이후에 타이머를 종료시키셔야 합니다. 종료가 되지 않으면 14시 40분 이후에도 지정한 간격으로 계속 타이머가 동작해 불필요하게 스크립트가 동작하게 됩니다. 2. 자바스크립트에서는 변수에 초기값이 할당되면 var 키워드는 있어도 되고 없어도 됩니다. 초기값이 지정되지 않으면 무조건 var키원드가 있어야 합니다. 아래의 3가지중 하나로 변수선언하시면 됩니다. var 변수; var 변수 = 값; 변수 = 값; 3. 예 좀더 큰 주기로 타이머 셋팅하셔도 됩니다. 60초나 600초 단위로 시간을 감시하셔도 됩니다. 4 예 맞습니다. and는 && or는 || 입니다. 즐거운 하루되세요 > 자오지환웅 님이 쓴 글입니다. > 제목 : Re : Re : 특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식 > 친절한 답변 감사드립니다. ^^ 답변에서 몇가지 궁금한 사항을 다시 질문드리자면 1. Main.KillTimer(1); --> 이부분은 생략해도 문제가 없는지 ??? 2. num = Account1.GetTheNumberOfBalances(); num 은 수식의 맨위에도 var 선언이 없던데 이러면 오류나는것 아닌가요 ??? var num = Account1.GetTheNumberOfBalances(); 이렇게 해야 맞는것이 아닌지 ??? 이건 var 선언이 불필요한 것인지 ??? 3. 14시 40분에 청산하면 되는거니까 굳이 타이며를 5초단위 설정하지 않고 (로직 돌아가는 속도에 영향을 줄까봐 ㅋ) Main.SetTimer(1, 60000 ); //1번 타이머 셋팅 (60초,1분) 아니면 Main.SetTimer(1, 600000 ); //1번 타이머 셋팅 (600초,10분) 이렇게 세팅해도 문제는 없는건지 ??? 4. 예스랭귀지의 and --> 예스스팟에서는 && , or --> || 이렇게 표현하는게 맞나요 ??? 답변 부탁드리겠습니다. 친절한 도움에 감사히 생각하고있습니다. 더운날 건강 조심하세요. ^^ > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식 > 안녕하세요 예스스탁입니다. 아래 내용 참고하시기 바랍니다. 스크립트 객체화면에는 계좌객체만 추가하신 후에 속성에서 객체명은 Account1로 하시고 계좌번호 지정해 주시면 됩니다. function Main_OnStart() { Main.MessageLog("시작") Main.SetTimer(1, 5000);//1번 타이머 셋팅(5초) } //타이머가 동작하면 function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); //1번 타이머이고 14시40분 이후이면 if (nEventID == 1 && HHMMDD >= 144000) { //타이머 중지 Main.KillTimer(1); //계좌 총보유종목수 num = Account1.GetTheNumberOfBalances(); //0번 종목부터 순서대로 호출 //잔고의 인덱스는 젤 위 종목부터 순서대로 0,1,2,3~~순서로 인덱스가 부여됨 for(var i = 0; i < num; i++) { //순서대로 잔고셋팅 Account1.SetBalanceIndex(i); //잔고셋팅 후 //해당 종목이 매도포지션이면 //청산위해 잔고수량만큼 매수주문 if (Account1.Balance.position == 1) Account1.OrderBuy(A1.Balance.code,Account1.Balance.count,0,1); //해당 종목이 매수포지션이면 //청산위해 잔고수량만큼 매도주문 if (Account1.Balance.position == 2) Account1.OrderSell(A1.Balance.code,Account1.Balance.count,0,1); } } } 즐거운 하루되세요 > 자오지환웅 님이 쓴 글입니다. > 제목 : 특정 이벤트가 발생하면 계좌잔고의 모든 종목을 청산하는 수식 > 제가 손으로 선물 옵션 합성포지션을 구축합니다. 그래서 예를 들자면 잔고에 선물 매수 1계약 , 콜245 매수 1계약 , 콜247 매도 1계약 , 풋245 매수 1계약 , 풋242 매도 1계약을 가지고 있습니다. 이경우 14시 40분이 되면 잔고의 모든 계약을 자동으로 청산하는 예스스팟 식을 알고 싶습니다. 부탁드립니다. 더운데 건강 조심하시고, 오늘도 좋은 하루 되세요. ^^