예스스탁
예스스탁 답변
2013-08-13 15:16:03
안녕하세요
예스스탁입니다.
문의하신 내용이 정확치 않습니다.
스팟적용 후 처음으로 선물에서 시가보다 현재가가 크거나 작을때만
옵션 양매도나 앵매수가 발생하게 했습니다.
각 수식에 옵션객체, 계좌객체, 종목객체가 필요합니다.
스크립트 객체화면에서
옵션객체 추가
계좌객체 추가 --> 속성에서 객체명을 Account1로 지정하시고 계좌선택
종목객체추가 --> 속성에서 객체명을 MarketData1로 지정하시고 선물로 종목선택
스크립트 객체화면에서 옵션객체를 추가하셔도 예스트레이더 환경설정에서
옵션데이터 미사용으로 되어 있으면 데이터가 수신되지 않습니다.
예스트레이더 상단의 관리메뉴에서 --> 종합환경설정 --> 예스스팟에서
예스스팟 옵션데이터 사용여부를 사용(거래소), 사용(로컬)중 하나로 선택하셔야 합니다.
식상 게시판 금칙어가 있습니다.
영문 업데이트가 Up*date로 *가 중간에 추가되어 있습니다.
제거하시고 적용하시기 바랍니다.
스팟은 시뮬레이션이 되지 않습니다.
시험적용 등으로 충분히 확인과정을 거치신후에 사용하시기 바랍니다.
1. 양매도
function Main_OnStart()
{
Start = 0;
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID)// *제거
{
//선물 현재가가 시초가보다 큼
if (Start == 0 && MarketData1.open > 0 && MarketData1.current > MarketData1.open)
{
Start = 1;
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) <= 2.0 )
{
CallPrice[i+LNum] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
CC = -1;
CallOrderCode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum];
}
}
PutCode = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(1, ii) <= 2.0 )
{
PutPrice[ii+UNum] = Option.GetCurrent(1, ii);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = 9999999;
PutCode[ii+UNum] = -1;
}
}
PP = -1;
PutOrderCode = -1;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] > PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (CC > 0 && PP > 0)
{
// 콜-풋 양매도 매수5호가로 1계약 씩 매도주문
Account1.OrderSell(CallOrderCode, 1, Option.GetBidByCode(CallOrderCode, 5), 0);
Account1.OrderSell(PutOrderCode, 1, Option.GetBidByCode(PutOrderCode, 5), 0);
}
}
}
2, 양매수
function Main_OnStart()
{
Start = 0;
}
function Main_OnUp*dateMarket(sItemCode, lUp*dateID) // *제거
{
if (Start == 0 && MarketData1.open > 0 && MarketData1.current > MarketData1.open)
{
Start = 1;
UNum = Option.uppersATM;
LNum = Option.lowersATM;
CallCode = new Array(UNum+LNum+1);
CallPrice = new Array(UNum+LNum+1);
for (var i = -LNum; i <= UNum; i++)
{
if (Option.GetCurrent(0, i) <= 2.0 )
{
CallPrice[i+LNum] = Option.GetCurrent(0, i);
CallCode[i+LNum] = Option.GetATMCallRecent(i);
}
else
{
CallPrice[i+LNum] = -1;
CallCode[i+LNum] = -1;
}
}
CC = -1;
CallOrderCode = -1;
for (var iii = -LNum; iii <= UNum; iii++)
{
if (CallPrice[iii+LNum] > CC)
{
CC = CallPrice[iii+LNum];
CallOrderCode = CallCode[iii+LNum];
}
}
PutCode = new Array(UNum+LNum+1);
PutPrice = new Array(UNum+LNum+1);
for (var ii = -UNum; ii <= LNum; ii++)
{
if (Option.GetCurrent(1, ii) <= 2.0 )
{
PutPrice[ii+UNum] = Option.GetCurrent(1, ii);
PutCode[ii+UNum] = Option.GetATMPutRecent(ii);
}
else
{
PutPrice[ii+UNum] = 9999999;
PutCode[ii+UNum] = -1;
}
}
PP = -1;
PutOrderCode = -1;
for (var iiii = -UNum; iiii <= LNum; iiii++)
{
if (PutPrice[iiii+UNum] > PP)
{
PP = PutPrice[iiii+UNum];
PutOrderCode = PutCode[iiii+UNum];
}
}
if (CC > 0 && PP > 0)
{
// 콜-풋 양매수 매e도5호가로 1계약 씩 매수주문
Account1.OrderBuy(CallOrderCode, 1, Option.GetAskByCode(CallOrderCode, 5), 0);
Account1.OrderBuy(PutOrderCode, 1, Option.GetAskByCode(PutOrderCode, 5), 0);
}
}
}
즐거운 하루되세요
> 먼지의추억 님이 쓴 글입니다.
> 제목 : 부탁드립니다
> 수고 많습니다.
1.시초가 돌파하면 옵션2.0의 양매도가 될 수있게 해 주세요.
2.시초가 도라하면 옵션 2.0의 양매수가 될 수잇게 해주세요.
감사합니다