예스스탁님이 올려주신 선물 신호 기준 옵션가격 3보다 작은 가격중 3에 가장 가까운 가격의 옵션종목을 매매하는 수식입니다.
여기서 실제 주문을 넣어보니 옵션이 아니라 선물 매매가 이루어 지는 듯합니다.
옵션 주문 코드를 따로 변수로 받아야 하는것인지. 어떤것이 잘못된것이지 설명과 함께 수정 부탁드립니다.
var CPrice = new Array(101);
var CCode = new Array(101);
var PPrice = new Array(101);
var PCode = new Array(101);
var MaxCall;
var MaxCallCode;
var MaxPut;
var MaxPutCode;
function c1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
//ATM-50~+50까지 종목중 0~3사이 종목을 제외하고 모두 -1처리
for(var i = -50; i <= 50; i++)
{
if (Option.GetCurrent(0,i) < 3 && Option.GetCurrent(0,i) > 0)
{
CPrice[50+i] = Option.GetCurrent(0,i);
CCode[50+i] = Option.GetATMCallRecent(i);
}
else
{
CPrice[50+i] = -1;
CCode[50+i] = -1;
}
if (Option.GetCurrent(1,i) < 3 && Option.GetCurrent(1,i) > 0)
{
PPrice[50+i] = Option.GetCurrent(1,i);
PCode[50+i] = Option.GetATMPutRecent(i);
}
else
{
PPrice[50+i] = -1;
PCode[50+i] = -1;
}
}
//저장된 CPrice, PPrice값중 최고값 계산
MaxCall = -1;
MaxCallcode = -1;
MaxPut = -1;
MaxPutcode = -1;
for(var A = 0; A <= 100; A++)
{
if (CPrice[A] > MaxCall)
{
MaxCall = CPrice[A];
MaxCallcode = CCode[A];
}
if (PPrice[A] > MaxPut)
{
MaxPut = PPrice[A];
MaxPutcode = PCode[A];
}
}
Main.MessageLog("가격:"+MaxCall+"종목코드:"+MaxCallcode);
Main.MessageLog("가격:"+MaxPut+"종목코드:"+MaxPutcode);
//--올려주신 수식에서 종목코드 MaxCallcode 만 넣었습니다... 여기서 잘못된거 같은데..
Main.OrderBuy(a1.number, Option.GetATMCallRecent(MaxCallcode), 1, 0, 1)
답변 1
예스스탁
예스스탁 답변
2013-01-03 15:04:49
> nadogaja 님이 쓴 글입니다.
> 제목 : 선물 기준 옵션 매매 수식 수정부탁드립니다.
> 예스스탁님이 올려주신 선물 신호 기준 옵션가격 3보다 작은 가격중 3에 가장 가까운 가격의 옵션종목을 매매하는 수식입니다.
여기서 실제 주문을 넣어보니 옵션이 아니라 선물 매매가 이루어 지는 듯합니다.
옵션 주문 코드를 따로 변수로 받아야 하는것인지. 어떤것이 잘못된것이지 설명과 함께 수정 부탁드립니다.
var CPrice = new Array(101);
var CCode = new Array(101);
var PPrice = new Array(101);
var PCode = new Array(101);
var MaxCall;
var MaxCallCode;
var MaxPut;
var MaxPutCode;
function c1_OnRiseSignal(Signal)
{
if (Signal.signalKind == 1)
{
//ATM-50~+50까지 종목중 0~3사이 종목을 제외하고 모두 -1처리
for(var i = -50; i <= 50; i++)
{
if (Option.GetCurrent(0,i) < 3 && Option.GetCurrent(0,i) > 0)
{
CPrice[50+i] = Option.GetCurrent(0,i);
CCode[50+i] = Option.GetATMCallRecent(i);
}
else
{
CPrice[50+i] = -1;
CCode[50+i] = -1;
}
if (Option.GetCurrent(1,i) < 3 && Option.GetCurrent(1,i) > 0)
{
PPrice[50+i] = Option.GetCurrent(1,i);
PCode[50+i] = Option.GetATMPutRecent(i);
}
else
{
PPrice[50+i] = -1;
PCode[50+i] = -1;
}
}
//저장된 CPrice, PPrice값중 최고값 계산
MaxCall = -1;
MaxCallcode = -1;
MaxPut = -1;
MaxPutcode = -1;
for(var A = 0; A <= 100; A++)
{
if (CPrice[A] > MaxCall)
{
MaxCall = CPrice[A];
MaxCallcode = CCode[A];
}
if (PPrice[A] > MaxPut)
{
MaxPut = PPrice[A];
MaxPutcode = PCode[A];
}
}
Main.MessageLog("가격:"+MaxCall+"종목코드:"+MaxCallcode);
Main.MessageLog("가격:"+MaxPut+"종목코드:"+MaxPutcode);
//--올려주신 수식에서 종목코드 MaxCallcode 만 넣었습니다... 여기서 잘못된거 같은데..
Main.OrderBuy(a1.number, Option.GetATMCallRecent(MaxCallcode), 1, 0, 1)