커뮤니티

시간별 청산

프로필 이미지
새로운세상
2020-01-06 14:05:24
3075
글번호 225131
답변완료
안녕하세요 다음 수식 수정 부탁드립니다 1) 위크리만기일 14시30분~14시35분 기준으로, 계좌잔고를 체크하여 위크리옵션 잔고가 없다면 계좌의 월물옵션 전량 청산하고, 위크리옵션 잔고가 있다면 2)번 수식으로 진행 2) 위크리만기일 15시30분~15시35분 기준으로 계좌잔고를 체크하여 월물옵션 전량 청산 ---> 위크리 만기일이므로 위크리옵션 잔량은 관련없음 --------------------------- MarketData1 연결선물 Option1 월물옵션 Option2 위크리옵션 function Main_OnStart() { if (Option2.GetRemainDays(0,0) == 1) { Main.MessageLog("Weekly 만기일 : "+Option2.GetRemainDays(0, 0)+" / 최종청산일"); Main.SetTimer(1, 5000); } else { Main.MessageLog("Weekly 잔존일 : "+Option2.GetRemainDays(0, 0)); } } function Main_OnTimer(nEventID) { if (MarketData1.time >= 1430000000 && MarketData1.time <= 1435000000) { var num = Account1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count>0 && Option2.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); } } } } if (MarketData1.time >= 1530000000 && MarketData1.time <= 1535000000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count>0 && Option2.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); } } } Main.MessageLog("Weekly 월물마감청산 완료"); } } 감사합니다 !!
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2020-01-13 19:07:44

> 새로운세상 님이 쓴 글입니다. > 제목 : 시간별 청산 > 안녕하세요 다음 수식 수정 부탁드립니다 1) 위크리만기일 14시30분~14시35분 기준으로, 계좌잔고를 체크하여 위크리옵션 잔고가 없다면 계좌의 월물옵션 전량 청산하고, 위크리옵션 잔고가 있다면 2)번 수식으로 진행 2) 위크리만기일 15시30분~15시35분 기준으로 계좌잔고를 체크하여 월물옵션 전량 청산 ---> 위크리 만기일이므로 위크리옵션 잔량은 관련없음 --------------------------- MarketData1 연결선물 Option1 월물옵션 Option2 위크리옵션 function Main_OnStart() { if (Option2.GetRemainDays(0,0) == 1) { Main.MessageLog("Weekly 만기일 : "+Option2.GetRemainDays(0, 0)+" / 최종청산일"); Main.SetTimer(1, 5000); } else { Main.MessageLog("Weekly 잔존일 : "+Option2.GetRemainDays(0, 0)); } } function Main_OnTimer(nEventID) { if (MarketData1.time >= 1430000000 && MarketData1.time <= 1435000000) { var num = Account1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count>0 && Option2.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); } } } } if (MarketData1.time >= 1530000000 && MarketData1.time <= 1535000000) { Main.KillTimer(1); var num = Account1.GetTheNumberOfBalances(); for (var i = 0; i < num; i++) { Account1.SetBalance(i); if (Account1.Balance.count>0 && Option2.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); } } } Main.MessageLog("Weekly 월물마감청산 완료"); } } 감사합니다 !!