커뮤니티

예상체결함수 문의드립니다.

프로필 이미지
재령
2013-10-28 21:14:57
1048
글번호 222679
답변완료
항상수고 많으십니다. 먼저 예상체결함수 업데이트 해주셔서 감사드립니다. 다음은 8시 57분 옵션예상체결가를 바탕으로 당일의 등가격을 찾아서 동시호가에 시장가 매도하는 식인데요 문제는 예상체결가가 형성이 되지 않는 경우 오류가 발생합니다. (예상체결가가 형성되지 않을 시 예상체결함수가 0을 리턴하는 듯합니다) 수식을 어떻게 손봐야 할지 부탁드립니다. 감사합니다 var Level ; var ABS = new Array(20); var ExpCall = new Array(20); var ExpPut = new Array(20); function Main_OnStart() { Main.MessageLog("------------------------------------------------------------------------------------------------------") Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMDD >= 085700 && C2.GetOpenContracts() < 0 ) { Main.KillTimer(1); for ( var a = -3 ; a <= 3 ; a++ ){ ExpCall[a] = Option.GetExpectedPrice( 0 , a ) ; ExpPut[a] = Option.GetExpectedPrice( 1 , a ) ; } for ( var a = -3 ; a <= 3 ; a++ ){ ABS[a] = Math.abs( ExpCall[a] - ExpPut[-a] ); Main.MessageList( "(",a,")" , ABS[a] ); } var minABS = Math.min(ABS[-3],ABS[-2],ABS[-1],ABS[0],ABS[1],ABS[2],ABS[3]); Main.MessageList( minABS, "최소가" ); var Cnt = 0 ; for ( var i = -3 ; i <= 3 ; i++ ){ if (ABS[i] == minABS && Cnt == 0 ) A1.OrderSell(Option.GetATMCallRecent(i),1,0,1); Cnt = Cnt + 1 ; } } }
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-10-31 10:36:38

안녕하세요 예스스탁입니다. 콜과 풋의 차이값의 절대값을 저장할때 콜과 풋의 모두 예상체결가가 0보다 클때만 저장하고 2개 중에 하나라도 0이면 9999999999와 같이 아주 큰값을 저장해서 이값들중 최소값을 찾으시면 됩니다. 마찬가지로 주문이 낼대도 최소값이 9999999999이하인지 확이하시면 됩니다. var Level ; var ABS = new Array(20); var ExpCall = new Array(20); var ExpPut = new Array(20); function Main_OnStart() { Main.MessageLog("------------------------------------------------------------------------------------------------------") Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMDD >= 085700 /*&& C2.GetOpenContracts() < 0*/ ) { Main.KillTimer(1); //atm -3~+3 종목의 예상체결가 저장 for ( var a = -3 ; a <= 3 ; a++ ){ ExpCall[a] = Option.GetExpectedPrice( 0 , a ) ; ExpPut[a] = Option.GetExpectedPrice( 1 , a ) ; Main.MessageList(ExpCall[a],ExpPut[a]); } //콜과 풋의 예상체결가가 0이상이면 차이값의 절대값 저장 //아니면 9999999999 저장 for ( var a = -3 ; a <=1 3 ; a++ ){ if (ExpCall[a] > 0 && ExpPut[-a] >0) ABS[a] = Math.abs( ExpCall[a] - ExpPut[-a] ); else ABS[a] = 9999999999; Main.MessageList( "(",a,")" , ABS[a] ); } // 절대값중 가장 작은 값 var minABS = Math.min(ABS[-3],ABS[-2],ABS[-1],ABS[0],ABS[1],ABS[2],ABS[3]); Main.MessageList( minABS, "최소가" ); var Cnt = 0 ; //최소값이 9999999999이하일때 해당 종목 주 for ( var i = -3 ; i <= 3 ; i++ ){ if (ABS[i] == minABS && Cnt == 0 && ABS[i] < 9999999999 ) A1.OrderSell(Option.GetATMCallRecent(i),1,0,1); Cnt = Cnt + 1 ; } } } > 재령 님이 쓴 글입니다. > 제목 : 예상체결함수 문의드립니다. > 항상수고 많으십니다. 먼저 예상체결함수 업데이트 해주셔서 감사드립니다. 다음은 8시 57분 옵션예상체결가를 바탕으로 당일의 등가격을 찾아서 동시호가에 시장가 매도하는 식인데요 문제는 예상체결가가 형성이 되지 않는 경우 오류가 발생합니다. (예상체결가가 형성되지 않을 시 예상체결함수가 0을 리턴하는 듯합니다) 수식을 어떻게 손봐야 할지 부탁드립니다. 감사합니다 var Level ; var ABS = new Array(20); var ExpCall = new Array(20); var ExpPut = new Array(20); function Main_OnStart() { Main.MessageLog("------------------------------------------------------------------------------------------------------") Main.SetTimer(1, 5000); } function Main_OnTimer(nEventID) { var d = new Date(); var HHMMDD = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1 && HHMMDD >= 085700 && C2.GetOpenContracts() < 0 ) { Main.KillTimer(1); for ( var a = -3 ; a <= 3 ; a++ ){ ExpCall[a] = Option.GetExpectedPrice( 0 , a ) ; ExpPut[a] = Option.GetExpectedPrice( 1 , a ) ; } for ( var a = -3 ; a <= 3 ; a++ ){ ABS[a] = Math.abs( ExpCall[a] - ExpPut[-a] ); Main.MessageList( "(",a,")" , ABS[a] ); } var minABS = Math.min(ABS[-3],ABS[-2],ABS[-1],ABS[0],ABS[1],ABS[2],ABS[3]); Main.MessageList( minABS, "최소가" ); var Cnt = 0 ; for ( var i = -3 ; i <= 3 ; i++ ){ if (ABS[i] == minABS && Cnt == 0 ) A1.OrderSell(Option.GetATMCallRecent(i),1,0,1); Cnt = Cnt + 1 ; } } }