예스스탁
예스스탁 답변
2019-05-22 16:44:51
안녕하세요
예스스탁입니다.
현재가로 주문을 집행하면 별도로 종목객체는 필요가 없습니다.
현재가에 +-N틱으로 주문을 내기위해서는 가격별로 호가단위가 필요한데
코스피주식선물과 코스닥주식선물의 호가가격단위가 다르므로
종목객체를 생성해 이용해야 합니다. 종목객체의 GetTickSize함수가
자동으로 가격에 맞는 틱수를 리턴합니다.
지정한 시간이 되면 보유종목에 따라 종목객체를 생성하고
주식선물이면 현재가+-N틱으로 지정해 지정가 주문을 내고
주식선물이 아니면 시장가로 주문을 집행합니다.
주문가격은 매수주문은 현재가+3틱, 매도 주문은 현재가-3틱으로
작성되었으므로 의도하시는 가격으로 변경하시면 됩니다.
var num;
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 150000)
{
Main.KillTimer(1);
num = Account1.GetTheNumberOfBalances();
Main.MessageList("보유종목수:",num);
if (num >= 1)
{
req = num-1;
Account1.SetBalance(req);
if (Account1.Balance.count > 0)
{
Main.ReqMarketData(Account1.Balance.code);
Main.MessageList("종목객체요청:",Account1.Balance.code);
}
}
}
}
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList("종목객체생성완료:",MarketData.code);
if (MarketData.code == Account1.Balance.code)
{
//주식선물이면 지정가
if (MarketData.categoryEx == 23)
{
//매도포지션이면
if (Account1.Balance.position == 1)
{
var BuyPrice = MarketData1.current;
//루프 3번 돌면서 1틱씩 증가
for (var i = 1; i <= 3; i++)
{
BuyPrice = BuyPrice+MarketData1.GetTickSize(BuyPrice);
}
Main.MessageList("OrderBuy :",MarketData.code,Account1.Balance.count,BuyPrice);
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,BuyPrice,0);
}
//매수포지션이면
if (Account1.Balance.position == 2)
{
var SellPrice = MarketData1.current;
//루프 3번 돌면서 1틱씩 감소
for (var i = 1; i <= 3; i++)
{
t1 = MarketData1.GetTickSize(SellPrice);
t2 = MarketData1.GetTickSize(SellPrice-t1);
if (t1 == t2)
SellPrice = SellPrice-t1;
else
SellPrice = SellPrice-t2;
}
Main.MessageList("OrderSell :",MarketData.code,Account1.Balance.count,SellPrice);
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,SellPrice,0);
}
}
else //주식선물이 아니면 시장가
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
req = req-1
if (req >= 0)
{
Account1.SetBalance(req);
if (Account1.Balance.count > 0)
{
Main.ReqMarketData(Account1.Balance.code);
}
}
else
{
Main.MessageList("끝");
}
}
}
즐거운 하루되세요
> 영원한자유 님이 쓴 글입니다.
> 제목 : 주식선물 종가청산 로직 검토부탁드립니다.
> 주식선물의 경우 장종료후 시장가가 없습니다.
장종료후 종가청산을 어떻게 해야할까요?
3시 36분에 지정가로 청산 가능한지 궁금합니다.
영원한자유
2019-05-27 21:41:19
categoryEx == 23 이 메뉴얼에는 FUTURE_SPOT 라고 되어있는데요.
명확한 의미가 무엇인가요? 주식선물인가요?
미니선물도 포함이 되는지 궁금합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 주식선물 종가청산 로직 검토부탁드립니다.
> 안녕하세요
예스스탁입니다.
현재가로 주문을 집행하면 별도로 종목객체는 필요가 없습니다.
현재가에 +-N틱으로 주문을 내기위해서는 가격별로 호가단위가 필요한데
코스피주식선물과 코스닥주식선물의 호가가격단위가 다르므로
종목객체를 생성해 이용해야 합니다. 종목객체의 GetTickSize함수가
자동으로 가격에 맞는 틱수를 리턴합니다.
지정한 시간이 되면 보유종목에 따라 종목객체를 생성하고
주식선물이면 현재가+-N틱으로 지정해 지정가 주문을 내고
주식선물이 아니면 시장가로 주문을 집행합니다.
주문가격은 매수주문은 현재가+3틱, 매도 주문은 현재가-3틱으로
작성되었으므로 의도하시는 가격으로 변경하시면 됩니다.
var num;
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 150000)
{
Main.KillTimer(1);
num = Account1.GetTheNumberOfBalances();
Main.MessageList("보유종목수:",num);
if (num >= 1)
{
req = num-1;
Account1.SetBalance(req);
if (Account1.Balance.count > 0)
{
Main.ReqMarketData(Account1.Balance.code);
Main.MessageList("종목객체요청:",Account1.Balance.code);
}
}
}
}
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList("종목객체생성완료:",MarketData.code);
if (MarketData.code == Account1.Balance.code)
{
//주식선물이면 지정가
if (MarketData.categoryEx == 23)
{
//매도포지션이면
if (Account1.Balance.position == 1)
{
var BuyPrice = MarketData1.current;
//루프 3번 돌면서 1틱씩 증가
for (var i = 1; i <= 3; i++)
{
BuyPrice = BuyPrice+MarketData1.GetTickSize(BuyPrice);
}
Main.MessageList("OrderBuy :",MarketData.code,Account1.Balance.count,BuyPrice);
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,BuyPrice,0);
}
//매수포지션이면
if (Account1.Balance.position == 2)
{
var SellPrice = MarketData1.current;
//루프 3번 돌면서 1틱씩 감소
for (var i = 1; i <= 3; i++)
{
t1 = MarketData1.GetTickSize(SellPrice);
t2 = MarketData1.GetTickSize(SellPrice-t1);
if (t1 == t2)
SellPrice = SellPrice-t1;
else
SellPrice = SellPrice-t2;
}
Main.MessageList("OrderSell :",MarketData.code,Account1.Balance.count,SellPrice);
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,SellPrice,0);
}
}
else //주식선물이 아니면 시장가
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
req = req-1
if (req >= 0)
{
Account1.SetBalance(req);
if (Account1.Balance.count > 0)
{
Main.ReqMarketData(Account1.Balance.code);
}
}
else
{
Main.MessageList("끝");
}
}
}
즐거운 하루되세요
> 영원한자유 님이 쓴 글입니다.
> 제목 : 주식선물 종가청산 로직 검토부탁드립니다.
> 주식선물의 경우 장종료후 시장가가 없습니다.
장종료후 종가청산을 어떻게 해야할까요?
3시 36분에 지정가로 청산 가능한지 궁금합니다.
예스스탁
예스스탁 답변
2019-05-28 16:15:11
안녕하세요
예스스탁입니다.
FUTURE_SPOT은 주식 선물입니다.
코스피200미니선물은 24번입니다.
즐거운 하루되세요
> 영원한자유 님이 쓴 글입니다.
> 제목 : Re : Re : 주식선물 종가청산 로직 검토부탁드립니다.
>
categoryEx == 23 이 메뉴얼에는 FUTURE_SPOT 라고 되어있는데요.
명확한 의미가 무엇인가요? 주식선물인가요?
미니선물도 포함이 되는지 궁금합니다.
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 주식선물 종가청산 로직 검토부탁드립니다.
> 안녕하세요
예스스탁입니다.
현재가로 주문을 집행하면 별도로 종목객체는 필요가 없습니다.
현재가에 +-N틱으로 주문을 내기위해서는 가격별로 호가단위가 필요한데
코스피주식선물과 코스닥주식선물의 호가가격단위가 다르므로
종목객체를 생성해 이용해야 합니다. 종목객체의 GetTickSize함수가
자동으로 가격에 맞는 틱수를 리턴합니다.
지정한 시간이 되면 보유종목에 따라 종목객체를 생성하고
주식선물이면 현재가+-N틱으로 지정해 지정가 주문을 내고
주식선물이 아니면 시장가로 주문을 집행합니다.
주문가격은 매수주문은 현재가+3틱, 매도 주문은 현재가-3틱으로
작성되었으므로 의도하시는 가격으로 변경하시면 됩니다.
var num;
function Main_OnStart()
{
Main.SetTimer(1, 5000);
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 150000)
{
Main.KillTimer(1);
num = Account1.GetTheNumberOfBalances();
Main.MessageList("보유종목수:",num);
if (num >= 1)
{
req = num-1;
Account1.SetBalance(req);
if (Account1.Balance.count > 0)
{
Main.ReqMarketData(Account1.Balance.code);
Main.MessageList("종목객체요청:",Account1.Balance.code);
}
}
}
}
function Main_OnRcvMarketData(MarketData)
{
Main.MessageList("종목객체생성완료:",MarketData.code);
if (MarketData.code == Account1.Balance.code)
{
//주식선물이면 지정가
if (MarketData.categoryEx == 23)
{
//매도포지션이면
if (Account1.Balance.position == 1)
{
var BuyPrice = MarketData1.current;
//루프 3번 돌면서 1틱씩 증가
for (var i = 1; i <= 3; i++)
{
BuyPrice = BuyPrice+MarketData1.GetTickSize(BuyPrice);
}
Main.MessageList("OrderBuy :",MarketData.code,Account1.Balance.count,BuyPrice);
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,BuyPrice,0);
}
//매수포지션이면
if (Account1.Balance.position == 2)
{
var SellPrice = MarketData1.current;
//루프 3번 돌면서 1틱씩 감소
for (var i = 1; i <= 3; i++)
{
t1 = MarketData1.GetTickSize(SellPrice);
t2 = MarketData1.GetTickSize(SellPrice-t1);
if (t1 == t2)
SellPrice = SellPrice-t1;
else
SellPrice = SellPrice-t2;
}
Main.MessageList("OrderSell :",MarketData.code,Account1.Balance.count,SellPrice);
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,SellPrice,0);
}
}
else //주식선물이 아니면 시장가
{
if (Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code,Account1.Balance.count,0,1);
}
if (Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code,Account1.Balance.count,0,1);
}
}
req = req-1
if (req >= 0)
{
Account1.SetBalance(req);
if (Account1.Balance.count > 0)
{
Main.ReqMarketData(Account1.Balance.code);
}
}
else
{
Main.MessageList("끝");
}
}
}
즐거운 하루되세요
> 영원한자유 님이 쓴 글입니다.
> 제목 : 주식선물 종가청산 로직 검토부탁드립니다.
> 주식선물의 경우 장종료후 시장가가 없습니다.
장종료후 종가청산을 어떻게 해야할까요?
3시 36분에 지정가로 청산 가능한지 궁금합니다.