예스스탁
예스스탁 답변
2018-05-28 09:36:21
안녕하세요
예스스탁입니다.
올려주신 내용으로 처리하시면 문제가 없을것 같습니다.
지정한 시간에 3계 계좌의 선물잔고를 청산하는 수식입니다.
메인객체에 Main.GetOrderCode라는 함수가 있습니다.
해당 함수를 이용하시면 연결선물의 종목코드가 현재 근월물 코드로 변환해 사용할수 있습니다.
스크립트 객체화면 설정
종목객체추가 --> 속성에서 객체명은 MarketData1, 연결선물로 지정
계좌객체추가 --> 속성에서 객체명은 Account1, 계좌번호 지정
계좌객체추가 --> 속성에서 객체명은 Account2, 계좌번호 지정
계좌객체추가 --> 속성에서 객체명은 Account3, 계좌번호 지정
var A1,A2,A3;
function Main_OnStart()
{
Main.SetTimer(1, 5000);
A1 = false;
A2 = false;
A3 = false;
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1)
{
if (A1 == false && HHMMSS >= 145930)
{
A1 = true;
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5), 0);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, MarketData1.Bid(5), 0);
}
}
if (A2 == false && HHMMSS >= 150000)
{
A2 = true;
Account2.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account2.Balance.count > 0 && Account2.Balance.position == 1)
{
Account2.OrderBuy(Account2.Balance.code, Account2.Balance.count, MarketData1.Ask(5), 0);
}
if (Account2.Balance.count > 0 && Account2.Balance.position == 2)
{
Account2.OrderSell(Account2.Balance.code, Account2.Balance.count, MarketData1.Bid(5), 0);
}
}
if (A3 == false && HHMMSS >= 150030)
{
A3 = true;
Account3.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account3.Balance.count > 0 && Account3.Balance.position == 1)
{
Account3.OrderBuy(Account3.Balance.code, Account3.Balance.count, MarketData1.Ask(5), 0);
}
if (Account3.Balance.count > 0 && Account3.Balance.position == 2)
{
Account3.OrderSell(Account3.Balance.code, Account3.Balance.count, MarketData1.Bid(5), 0);
}
}
if (A1 == true && A2 == true && A3 == true)
{
Main.KillTimer(1);
}
}
}
즐거운 하루되세요
> 새로운세상 님이 쓴 글입니다.
> 제목 : 당일 거래종료시 잔고기준 청산
> 안녕하세요
다음 내용 수식 부탁드립니다.
현재 YT신호 기준으로 연결선물 spot주문이 들어가고 있는데,
YT의 최종 진입기준은 14:50 이전, 마감청산을 제외한 최종 청산기준은 14:55 이전,
장마감시간은 15:00 입니다.
시스템이 여러개라서 14:55 이후 포지션이 시스템에 따라 매수,매도 가 혼재되어 있고,
15:00 에 불필요하게 매수청산,매도청산이 발생합니다. ---> 상쇄 필요
이 문제를 해결하기 위하여
1) 기존 spot 수식 청산수식 부분에 '마켓타임 14:56 이전'을 모두 추가하여,
YT의 마감청산 이전까지만 작동하게 하고
2) 새로운 spot을 추가하여, 14:59:30~15:00:30 에 각 계좌 잔고기준으로
포지션을 일괄청산 하려고 합니다 (매수잔고 or 매도잔고 5호가 청산)
---> 계좌별 선물잔고 마감청산용 수식만 작성
---> 마감시 계좌별 선물잔고 수량은 일정하지 않음
-----------------------------------
1) 위와같은 방식으로, 마감청산시 서로 상쇄될 수 있는 매수청산과 매도청산이
발생하지 않도록 하면 되겠는지요?
2) 위의 내용 2)번의 새로 추가할 spot 수식을 부탁드립니다.
---> 총 운영계좌가 3개인데 1개의 spot으로 가능하다면 더 좋겠습니다
(A계좌 14:59:30 잔고청산 / B계좌 15:00:00 잔고청산 / C계좌 15:00:30 잔고청산)
계좌간 매수,매도 수량은 상쇄하지 않습니다.
---> 계좌잔고 처리가 다소 늦는 경우도 있으므로, 중복주문 발생하지 않아야 합니다.
---> 만약 spot 3개가 필요하다면 예제수식 한개만 부탁드립니다
3) 스팟 설정시 연결선물 종목코드 00000000 으로 되어있는데,
계좌잔고에는 당월물 선물 종목코드가 표시됩니다.
장마감용 spot 적용시, 이로인하여 문제가 발생되지는 않는지도 궁금합니다.
---> 계좌에 다른 파생상품 종목들이 있을 경우를 대비하여
마감시간에 KP200 선물잔고만 마감청산하는 방법이 정확할 것 같기도 합니다.
감사합니다 !!
새로운세상
2018-06-05 06:56:34
안녕하세요
번거로우시겠지만 1688번 '마감청산'과 관련하여
한가지만 추가 질문 드립니다.
아래 작성해주신 수식을 적용해 본 결과 모두 정상으로 작동합니다.
감사드립니다.
한가지 추가하고 싶은 것은
아침에 YT를 접속하면 Main_OnStart가 작동하여
그때부터 5초단위로 체크를 하게 되므로, 실제 작동에 필요한 시간까지
불필요한 부하가 걸릴 수 있는 것 같습니다.
아래 '마감청산'수식이 14시57분부터 작동하도록 부탁드립니다.
확인을 위하여 Main.MessageLog("마감청산 시작"); 을 추가하였는데
메세지가 14시57분이후 발생하면 좋겠습니다.
---> 즉, 14시57분부터 작동 시작
이상입니다
감사합니다 !!
> 예스스탁 님이 쓴 글입니다.
> 제목 : Re : 당일 거래종료시 잔고기준 청산
> 안녕하세요
예스스탁입니다.
올려주신 내용으로 처리하시면 문제가 없을것 같습니다.
지정한 시간에 3계 계좌의 선물잔고를 청산하는 수식입니다.
메인객체에 Main.GetOrderCode라는 함수가 있습니다.
해당 함수를 이용하시면 연결선물의 종목코드가 현재 근월물 코드로 변환해 사용할수 있습니다.
스크립트 객체화면 설정
종목객체추가 --> 속성에서 객체명은 MarketData1, 연결선물로 지정
계좌객체추가 --> 속성에서 객체명은 Account1, 계좌번호 지정
계좌객체추가 --> 속성에서 객체명은 Account2, 계좌번호 지정
계좌객체추가 --> 속성에서 객체명은 Account3, 계좌번호 지정
var A1,A2,A3;
function Main_OnStart()
{
Main.SetTimer(1, 5000);
A1 = false;
A2 = false;
A3 = false;
Main.MessageLog("마감청산 시작");
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (nEventID == 1)
{
if (A1 == false && HHMMSS >= 145930)
{
A1 = true;
Account1.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account1.Balance.count > 0 && Account1.Balance.position == 1)
{
Account1.OrderBuy(Account1.Balance.code, Account1.Balance.count, MarketData1.Ask(5), 0);
}
if (Account1.Balance.count > 0 && Account1.Balance.position == 2)
{
Account1.OrderSell(Account1.Balance.code, Account1.Balance.count, MarketData1.Bid(5), 0);
}
}
if (A2 == false && HHMMSS >= 150000)
{
A2 = true;
Account2.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account2.Balance.count > 0 && Account2.Balance.position == 1)
{
Account2.OrderBuy(Account2.Balance.code, Account2.Balance.count, MarketData1.Ask(5), 0);
}
if (Account2.Balance.count > 0 && Account2.Balance.position == 2)
{
Account2.OrderSell(Account2.Balance.code, Account2.Balance.count, MarketData1.Bid(5), 0);
}
}
if (A3 == false && HHMMSS >= 150030)
{
A3 = true;
Account3.SetBalance(Main.GetOrderCode(MarketData1.code), 0);
if (Account3.Balance.count > 0 && Account3.Balance.position == 1)
{
Account3.OrderBuy(Account3.Balance.code, Account3.Balance.count, MarketData1.Ask(5), 0);
}
if (Account3.Balance.count > 0 && Account3.Balance.position == 2)
{
Account3.OrderSell(Account3.Balance.code, Account3.Balance.count, MarketData1.Bid(5), 0);
}
}
if (A1 == true && A2 == true && A3 == true)
{
Main.KillTimer(1);
}
}
}
즐거운 하루되세요
> 새로운세상 님이 쓴 글입니다.
> 제목 : 당일 거래종료시 잔고기준 청산
> 안녕하세요
다음 내용 수식 부탁드립니다.
현재 YT신호 기준으로 연결선물 spot주문이 들어가고 있는데,
YT의 최종 진입기준은 14:50 이전, 마감청산을 제외한 최종 청산기준은 14:55 이전,
장마감시간은 15:00 입니다.
시스템이 여러개라서 14:55 이후 포지션이 시스템에 따라 매수,매도 가 혼재되어 있고,
15:00 에 불필요하게 매수청산,매도청산이 발생합니다. ---> 상쇄 필요
이 문제를 해결하기 위하여
1) 기존 spot 수식 청산수식 부분에 '마켓타임 14:56 이전'을 모두 추가하여,
YT의 마감청산 이전까지만 작동하게 하고
2) 새로운 spot을 추가하여, 14:59:30~15:00:30 에 각 계좌 잔고기준으로
포지션을 일괄청산 하려고 합니다 (매수잔고 or 매도잔고 5호가 청산)
---> 계좌별 선물잔고 마감청산용 수식만 작성
---> 마감시 계좌별 선물잔고 수량은 일정하지 않음
-----------------------------------
1) 위와같은 방식으로, 마감청산시 서로 상쇄될 수 있는 매수청산과 매도청산이
발생하지 않도록 하면 되겠는지요?
2) 위의 내용 2)번의 새로 추가할 spot 수식을 부탁드립니다.
---> 총 운영계좌가 3개인데 1개의 spot으로 가능하다면 더 좋겠습니다
(A계좌 14:59:30 잔고청산 / B계좌 15:00:00 잔고청산 / C계좌 15:00:30 잔고청산)
계좌간 매수,매도 수량은 상쇄하지 않습니다.
---> 계좌잔고 처리가 다소 늦는 경우도 있으므로, 중복주문 발생하지 않아야 합니다.
---> 만약 spot 3개가 필요하다면 예제수식 한개만 부탁드립니다
3) 스팟 설정시 연결선물 종목코드 00000000 으로 되어있는데,
계좌잔고에는 당월물 선물 종목코드가 표시됩니다.
장마감용 spot 적용시, 이로인하여 문제가 발생되지는 않는지도 궁금합니다.
---> 계좌에 다른 파생상품 종목들이 있을 경우를 대비하여
마감시간에 KP200 선물잔고만 마감청산하는 방법이 정확할 것 같기도 합니다.
감사합니다 !!