안녕하세요 한결같은 답변이 매우 큰 도움이 되고 있습니다.
아래 수식은 옵션 2.7에 가까운 콜, 풋 옵션종목을 찾는 수식입니다.
이것을 콜풋 내가 5단계, 등가, 외가5단계 범위안에서 델타값이 0.4에 가장 가까운 콜,풋
옵션종목을 찾는 수식으로 변경해주시면 대단히 감사하겠습니다.
// 아래는 수식임
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번 타이머 동작
if (nEventID == 1)
{
//ATM위 행사가 갯수
var UNum = Option.uppersATM;
//ATM아래 행사가 갯수
var LNum = Option.lowersATM;
//각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언
var CallCode = new Array(UNum+LNum+1);
//각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언
var CallPrice = new Array(UNum+LNum+1);
//각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언
var PutCode = new Array(UNum+LNum+1);
//각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언
var PutPrice = new Array(UNum+LNum+1);
//콜종목 찾기
//콜옵션중 2.7에 가장 가까운 종목
//콜옵션 모든 종목을 현재가-2.7을 해서 절대값을 취해 저장
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.7);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var CC = 99999999;
CallOrderCode = "";
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < CC)
{
CC = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum]
}
}
//풋종목 찾기
//풋옵션중 2.7에 가장 가까운 종목
//풋옵션 모든 종목을 현재가-2.7을 해서 절대값을 취해 저장
for (var i = -UNum; i <= LNum; i++)
{
PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-2.7);
PutCode[i+UNum] = Option.GetATMPutRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var PP = 99999999;
PutOrderCode = "";
for (var i = -UNum; i <= LNum; i++)
{
if (PutPrice[i+UNum] < PP)
{
PP = PutPrice[i+UNum];
PutOrderCode = PutCode[i+UNum];
}
}
//종목을 찾았으면
if (CC < 99999999 && PP < 99999999)
{
Start = 1;
SC = CallOrderCode;
SP = PutOrderCode;
}
}
}
// 답변 미리 감사드립니다.
답변 1
예스스탁
예스스탁 답변
2019-02-21 17:13:07
안녕하세요
예스스탁입니다
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번 타이머 동작
if (nEventID == 1)
{
CMinDiff = 0;
PMinDiff = 0;
SC = "";
SP = "";
for (var i = -5; i <= 5; i++)
{
Main.MessageList(Option.GetATMCallRecent(i),Option.GetDelta(0,i),Option.GetATMPutRecent(i),Option.GetDelta(1,i));
if (CMinDiff == 0 || (CMinDiff != 0 && Math.abs(Math.abs(Option.GetDelta(0,i))-0.4) < CMinDiff))
{
CMinDiff = Math.abs(Math.abs(Option.GetDelta(0,i))-0.4);
SC = Option.GetATMCallRecent(i);
}
if (PMinDiff == 0 || (PMinDiff != 0 && Math.abs(Math.abs(Option.GetDelta(1,i))-0.4)< CMinDiff))
{
PMinDiff = Math.abs(Math.abs(Option.GetDelta(1,i))-0.4);
SP = Option.GetATMPutRecent(i);
}
}
Main.MessageList(SC,SP)
Start = 1;
}
}
즐거운 하루되세요
> 탄젠트80 님이 쓴 글입니다.
> 제목 : 종목선정 문의
> 안녕하세요 한결같은 답변이 매우 큰 도움이 되고 있습니다.
아래 수식은 옵션 2.7에 가까운 콜, 풋 옵션종목을 찾는 수식입니다.
이것을 콜풋 내가 5단계, 등가, 외가5단계 범위안에서 델타값이 0.4에 가장 가까운 콜,풋
옵션종목을 찾는 수식으로 변경해주시면 대단히 감사하겠습니다.
// 아래는 수식임
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번 타이머 동작
if (nEventID == 1)
{
//ATM위 행사가 갯수
var UNum = Option.uppersATM;
//ATM아래 행사가 갯수
var LNum = Option.lowersATM;
//각 행사가의 콜종목의 종목코드를 저장할 변수를 배열변수로 선언
var CallCode = new Array(UNum+LNum+1);
//각 행사가의 콜종목의 현재가를 저장할 변수를 배열변수로 선언
var CallPrice = new Array(UNum+LNum+1);
//각 행사가의 풋종목의 종목코드를 저장할 변수를 배열변수로 선언
var PutCode = new Array(UNum+LNum+1);
//각 행사가의 풋종목의 현재가를 저장할 변수를 배열변수로 선언
var PutPrice = new Array(UNum+LNum+1);
//콜종목 찾기
//콜옵션중 2.7에 가장 가까운 종목
//콜옵션 모든 종목을 현재가-2.7을 해서 절대값을 취해 저장
for (var i = -LNum; i <= UNum; i++)
{
CallPrice[i+LNum] = Math.abs(Option.GetCurrent(0, i)-2.7);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var CC = 99999999;
CallOrderCode = "";
for (var i = -LNum; i <= UNum; i++)
{
if (CallPrice[i+LNum] < CC)
{
CC = CallPrice[i+LNum];
CallOrderCode = CallCode[i+LNum]
}
}
//풋종목 찾기
//풋옵션중 2.7에 가장 가까운 종목
//풋옵션 모든 종목을 현재가-2.7을 해서 절대값을 취해 저장
for (var i = -UNum; i <= LNum; i++)
{
PutPrice[i+UNum] = Math.abs(Option.GetCurrent(1, i)-2.7);
PutCode[i+UNum] = Option.GetATMPutRecent(i);
}
//저장된 절대값중 가장 작은 종목의 값과 종목코드 계산
var PP = 99999999;
PutOrderCode = "";
for (var i = -UNum; i <= LNum; i++)
{
if (PutPrice[i+UNum] < PP)
{
PP = PutPrice[i+UNum];
PutOrderCode = PutCode[i+UNum];
}
}
//종목을 찾았으면
if (CC < 99999999 && PP < 99999999)
{
Start = 1;
SC = CallOrderCode;
SP = PutOrderCode;
}
}
}
// 답변 미리 감사드립니다.