첨부 이미지
그림1
아래의 스팟스크립트를 실행하면 옵션종목에 대해서는 청산이 정상 수행되는데,
선물의 경우 첨부 그림과 같이 호가가 이상한 숫자로 되어 있어 에러처리됩니다.
어떻게 해야 할까요?
function Main_OnStart()
{
Main.MessageLog("즉시 청산 시작");
num = A1.GetTheNumberOfBalances();
Main.MessageLog("밸런스"+num);
for (var i = 0; i < num; i++)
{
A1.SetBalanceIndex(i);
if (A1.Balance.code == F1.code && A1.Balance.count!=0)
{
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code, A1.Balance.count, F1.Ask(2), 0);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code, A1.Balance.count, F1.Bid(2), 0);
}
if (A1.Balance.code != F1.code && A1.Balance.count!=0)
{
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code, A1.Balance.count, Op1.GetAsk(A1.Balance.code, 5), 0);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code, A1.Balance.count, Op1.GetBid(A1.Balance.code, 5), 0);
}
}
}
답변 1
예스스탁
예스스탁 답변
2015-08-04 13:07:36
안녕하세요
예스스탁입니다.
해당 내용 수식을 살펴본결과
F1종목객체가 연결선물로 되어 있으신거 같습니다.
연결선물은 코드가 00000000으로 가상코드입니다.
계좌의 실제 종목의 코드와 차이가 있어
A1.Balance.code != F1.code 조건이 만족해서
주문시 옵션가격으로 주문이 가게 됩니다.
식을 수정해 드립니다.
function Main_OnStart()
{
Main.MessageLog("즉시 청산 시작");
num = A1.GetTheNumberOfBalances();
Main.MessageLog("밸런스"+num);
for (var i = 0; i < num; i++)
{
A1.SetBalanceIndex(i);
if (A1.Balance.code == Main.GetOrderCode(F1.code) && A1.Balance.count!=0)
{
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code, A1.Balance.count, F1.Ask(2), 0);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code, A1.Balance.count, F1.Bid(2), 0);
}
if (A1.Balance.code != Main.GetOrderCode(F1.code) && A1.Balance.count!=0)
{
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code, A1.Balance.count, Op1.GetAsk(A1.Balance.code, 5), 0);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code, A1.Balance.count, Op1.GetBid(A1.Balance.code, 5), 0);
}
}
}
즐거운 하루되세요.
> 좋은선물 님이 쓴 글입니다.
> 제목 : 호가 오류
> 아래의 스팟스크립트를 실행하면 옵션종목에 대해서는 청산이 정상 수행되는데,
선물의 경우 첨부 그림과 같이 호가가 이상한 숫자로 되어 있어 에러처리됩니다.
어떻게 해야 할까요?
function Main_OnStart()
{
Main.MessageLog("즉시 청산 시작");
num = A1.GetTheNumberOfBalances();
Main.MessageLog("밸런스"+num);
for (var i = 0; i < num; i++)
{
A1.SetBalanceIndex(i);
if (A1.Balance.code == F1.code && A1.Balance.count!=0)
{
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code, A1.Balance.count, F1.Ask(2), 0);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code, A1.Balance.count, F1.Bid(2), 0);
}
if (A1.Balance.code != F1.code && A1.Balance.count!=0)
{
if (A1.Balance.position == 1)
A1.OrderBuy(A1.Balance.code, A1.Balance.count, Op1.GetAsk(A1.Balance.code, 5), 0);
if (A1.Balance.position == 2)
A1.OrderSell(A1.Balance.code, A1.Balance.count, Op1.GetBid(A1.Balance.code, 5), 0);
}
}
}