커뮤니티

양합이 제일 낮은 행사가와 값 구하기

프로필 이미지
탄젠트80
2026-01-12 03:32:16
78
글번호 229707
답변완료


주신 답변 늘 응용해서 잘 사용하고 있습니다. 감사합니다.


아래와 같은 양합을 구하는 수식을 스팟으로 만들고 싶습니다.


등가를 이용해도 되겠지만 수동으로 계산하는 수식이 필요합니다.


=========================================================


1. 장시작후 9시가되면 10초마다 행사가가 같은 콜옵션과 풋옵션의 합 중 가장 낮은 합의 콜과 풋의 종목을 구함


2. 당일 행사가 변경과 관계없이 양합이 가장 낮은 양합값, 가장 높은 양합값 구함


3. Main.MessageList 명령어를 사용해서 최근메시지 창에 표시

//메시지 예시

Main.MessageList("현재콜종목", 000, "현재풋종목", 000, "현재양합:", 000, "개장후최소양합:", 000, "개장후최대양합:", 000);


답변 미리 감사드립니다.


(참고) 1월물 만기일 가장 낮은 양합 변화 그래프입니다.


답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-21 11:26:47

안녕하세요 예스스탁입니다. 아래식 참고하시기 바랍니다. 스크립트 객체화면 설정 옵션객체 추가 --> 속성에서 객체명은 Option1, 기초자산 지정
var Start; var DayMaxSum; var DayMaxSumCall; var DayMaxSumPut; var DayMaxSumCallCode; var DayMaxSumPutCode; var DayMinSum; var DayMinSumCall; var DayMinSumPut; var DayMinSumCallCode; var DayMinSumPutCode; function Main_OnStart() { Main.SetTimer(1, 1000); Start = false; DayMaxSum = 0; DayMaxSumCall = 0; DayMaxSumPut = 0; DayMaxSumCallCode = ""; DayMaxSumPutCode = ""; DayMinSum = 0; DayMinSumCall = 0; DayMinSumPut = 0; DayMinSumCallCode = ""; DayMinSumPutCode = ""; } function Main_OnTimer(nEventID) { var d = new Date(); HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds(); if (nEventID == 1) { if (HHMMSS >= 90000) { if (Start == false) { Start = true; Main.SetTimer(1, 10000); } var MaxSum = 0; var MaxSumCall = 0; var MaxSumPut = 0; var MaxSumCallCode; var MaxSumPutCode; var MinSum = 0; var MinSumCall = 0; var MinSumPut = 0; var MinSumCallCode; var MinSumPutCode; for (var i = -Option1.lowersATM; i <= Option1.uppersATM; i++) { var Call = Option1.GetCurrent(0,i); var Put = Option1.GetCurrent(1,-i); var CallCode = Option1.GetATMCallRecent(i); var PutCode = Option1.GetATMPutRecent(-i); var Sum = Math.floor((Call+Put)*100)/100; if (MaxSum == 0 || (MaxSum > 0 && Sum > MaxSum)) { MaxSum = Sum; MaxSumCall = Call; MaxSumPut = Put; MaxSumCallCode = CallCode; MaxSumPutCode = PutCode; } if (MinSum == 0 || (MinSum > 0 && Sum < MinSum)) { MinSum = Sum; MinSumCall = Call; MinSumPut = Put; MinSumCallCode = CallCode; MinSumPutCode = PutCode; } } if (DayMaxSum == 0 || (DayMaxSum > 0 && MaxSum > DayMaxSum)) { DayMaxSum = MaxSum; DayMaxSumCall = MaxSumCall; DayMaxSumPut = MaxSumPut; DayMaxSumCallCode = MaxSumCallCode; DayMaxSumPutCode = MaxSumPutCode; } if (DayMinSum == 0 || (DayMinSum > 0 && MinSum < DayMinSum)) { DayMinSum = MinSum; DayMinSumCall = MinSumCall; DayMinSumPut = MinSumPut; DayMinSumCallCode = MinSumCallCode; DayMinSumPutCode = MinSumPutCode; } Main.MessageList(HHMMSS,"------------"); Main.MessageList( "현재최저양합:",MinSum, "|콜코드:",MinSumCallCode, "|콜가격:",MinSumCall, "|풋코드:",MinSumPutCode, "|풋가격:",MinSumPut, "|당일최저양합:",DayMinSum, "|콜코드:",DayMinSumCallCode, "|콜가격:",DayMinSumCall, "|풋코드:",DayMinSumPutCode, "|풋가격:",DayMinSumPut); Main.MessageList( "현재최고양합:",MaxSum, "|콜코드:",MaxSumCallCode, "|콜가격:",MaxSumCall, "|풋코드:",MaxSumPutCode, "|풋가격:",MaxSumPut, "|당일최고양합:",DayMaxSum, "|콜코드:",DayMaxSumCallCode, "|콜가격:",DayMaxSumCall, "|풋코드:",DayMaxSumPutCode, "|풋가격:",DayMaxSumPut); } } }

즐거운 하루되세요