커뮤니티

청산전용 수식 부탁드립니다.

프로필 이미지
탄젠트80
2018-08-12 17:16:16
2862
글번호 224558
답변완료
안녕하세요 답변주신 내용 활용하여 잘 매매하고 있는 투자자입니다. 청산전용에 관한 스팟수식 몇가지 초보임을 감안하여 답변부탁드립니다. 1. 동일 계좌안에 파생상품으로만(선물, 옵션, 미니선물, 미니옵션 등 매수 또는 매도포지션)을 다양하게 가진 상태에서 15시에 모든 종목을 일괄 5호가로 전부 청산하는 청산전용 스팟수식 부탁드립니다. 2. 동일 계좌안에 있는 여러 파생상품 중 옵션 종목(또는 미니옵션)만 골라서 15시에 콜풋 매수/매도 포지션 모두 5호가로 청산하는 청산전용 스팟수식 3.-1 동일 선물옵션 계좌의 평가손익이 100만원 이상일 때 1번 문의사항과 같이 보유종목 전체를 5호가로 청산하는 스팟전용 수식 3.-2 동일 선물옵션 계좌의 매입총액 대비 평가손익인 평가수익율이 30% 이상일 때 1번 문의사항과 같이 파생상품 전체를 5호가로 청산하는 스팟전용 수식 4. 15시에 계좌의 포지션을 파악하여 보유하고 있는 옵션 종목중 0.3P 가장 가까운 콜, 풋옵션 매도포션을 종목 5호가로 매도청산(매수)하는 스팟전용 수식 질문사항이 좀 많은데 꼭 필요한 수식이니 답변 정중히 부탁드리며 미리 감사드립니다. 수고하세요
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-08-28 14:32:05

안녕하세요 예스스탁입니다. 스팟은 식작성의 흐름에 대한 단순한 가이드입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. 1 스크립트 객체셜정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정 옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물지수로 지정 function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 150000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Option1.GetCurrent(Account1.Balance.code) > 0) { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0) } } else { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(5),0) } } } } } } 2 스크립트 객체셜정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정 옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정 function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 150000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Option1.GetCurrent(Account1.Balance.code) > 0) { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0) } } } } } } 3-1 스크립트 객체셜정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정 옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물지수로 지정 function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 150000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { sum = 0; for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.position == 1) { sum = sum + (Account1.Balance.avgUnitCost-Account1.Balance.current)*Account1.Balance.count; } if (Account1.Balance.position == 2) { sum = sum + (Account1.Balance.current-Account1.Balance.avgUnitCost)*Account1.Balance.count; } } if (sum*250000 >= 1000000) { if (Option1.GetCurrent(Account1.Balance.code) > 0) { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0) } } else { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(5),0) } } } } } } 3-2 스크립트 객체셜정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정 옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정 종목객체 추가 --> 속성에서 객체명은 MarketData1, 연결선물지수로 지정 function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 150000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { sum = 0; for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.position == 1) { sum = sum + (Account1.Balance.avgUnitCost-Account1.Balance.current)/Account1.Balance.avgUnitCost * 100; } if (Account1.Balance.position == 2) { sum = sum + (Account1.Balance.current-Account1.Balance.avgUnitCost)*Account1.Balance.avgUnitCost * 100; } } if (sum >= 30) { if (Option1.GetCurrent(Account1.Balance.code) > 0) { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, Option1.GetAsk(Account1.Balance.code,5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, Option1.GetBid(Account1.Balance.code,5),0) } } else { if (Account1.Balance.position == 1) { Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5),0); } if (Account1.Balance.position == 2) { Account1.OrderSell(Account1.Balance.code, Account1.Balance.count,MarketData1.Bid(5),0) } } } } } } 4 스크립트 객체셜정 계좌객체 추가 --> 속성에서 객체명은 Account1, 주문낼 계좌번호 지정 옵션객체 추가 --> 속성에서 객체명은 Option1, 주가지수 옵션으로 지정 function Main_OnStart() { Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMSS >= 150000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); if (num > 0) { var CC = ""; var CD = 9999999999; var CV = 0; var PP = ""; var PD = 9999999999; var PV = 0; for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Option1.GetCurrent(Account1.Balance.code) > 0 && Account1.Balance.position == 1) { var Call = false; for (var z = Option1.lowersATM; z <= Option1.uppersATM; z++) { if (Account1.Balance.code == Option1.GetATMCallRecent(z, 0)) { Call = true; } } if (Call == true) { if (Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3) < CD) { CD = Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3); CC = Account1.Balance.code; CV = Account1.Balance.count; } } else { if (Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3) < PD) { PD = Math.abs(Option1.GetCurrent(Account1.Balance.code)-0.3); PP = Account1.Balance.code; PV = Account1.Balance.count; } } } } if (CV > 0) { Account1.OrderBuy(CC, CV,Option1.GetAsk(CC,5),0); } if (PV < 0) { Account1.OrderBuy(PP, PV,Option1.GetAsk(PP,5),0); } } } } 즐거운 하루되세요 > 탄젠트80 님이 쓴 글입니다. > 제목 : 청산전용 수식 부탁드립니다. > 안녕하세요 답변주신 내용 활용하여 잘 매매하고 있는 투자자입니다. 청산전용에 관한 스팟수식 몇가지 초보임을 감안하여 답변부탁드립니다. 1. 동일 계좌안에 파생상품으로만(선물, 옵션, 미니선물, 미니옵션 등 매수 또는 매도포지션)을 다양하게 가진 상태에서 15시에 모든 종목을 일괄 5호가로 전부 청산하는 청산전용 스팟수식 부탁드립니다. 2. 동일 계좌안에 있는 여러 파생상품 중 옵션 종목(또는 미니옵션)만 골라서 15시에 콜풋 매수/매도 포지션 모두 5호가로 청산하는 청산전용 스팟수식 3.-1 동일 선물옵션 계좌의 평가손익이 100만원 이상일 때 1번 문의사항과 같이 보유종목 전체를 5호가로 청산하는 스팟전용 수식 3.-2 동일 선물옵션 계좌의 매입총액 대비 평가손익인 평가수익율이 30% 이상일 때 1번 문의사항과 같이 파생상품 전체를 5호가로 청산하는 스팟전용 수식 4. 15시에 계좌의 포지션을 파악하여 보유하고 있는 옵션 종목중 0.3P 가장 가까운 콜, 풋옵션 매도포션을 종목 5호가로 매도청산(매수)하는 스팟전용 수식 질문사항이 좀 많은데 꼭 필요한 수식이니 답변 정중히 부탁드리며 미리 감사드립니다. 수고하세요