예스스탁
예스스탁 답변
2015-07-28 16:27:23
안녕하세요
예스스탁입니다.
2가지만 수정하시면 됩니다.
1.
타이머에서 1초는 1000입니다.
타이머가 1분간격으로 동작하시면 60000으로 지정하시면 됩니다.
2
매수체결에 매도로 지정이 되어 있습니다.
//매수 체결일 경우
if (NotifyFill.orderKind == 2)
2로 변경하시면 됩니다.
3. 수정한 식입니다.
//각 주문을 매수/매도 5호가로 주문내게 수정했습니다.
//Account1 (시스템 거래)
//Account2 (손매매)
//Account3 (앞의 두계좌 연동),
//아래는 1분 단위로 Account1계좌를 원장과 동기화하는 내용입니다
function Main_OnStart()
{
Main.SetTimer(1, 60000);
}
function Main_OnTimer(nEventID)
{
if(nEventID == 1)
{
//Main.MessageList("타이머 발생");
Main.RefreshAccount(Account1.number);
}
}
//체결이벤트 발생
function Main_OnNotifyFill(NotifyFill)
{
// Account1이나 Account2에서 체결이 발생하면
if (NotifyFill.accountNum == Account1.number || NotifyFill.accountNum == Account2.number)
{
//매도 체결일 경우
if (NotifyFill.orderKind == 1)
{
//선물인 경우
if (NotifyFill.code == Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매수5호가로 매도주문
Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,MarketData1.Bid(5),0);
}
//선물이 아닐경우(선옵계좌이므로 이경우 옵션종목)
if (NotifyFill.code != Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매수5호가로 매도주문
Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,Option.GetBidByCode(NotifyFill.code,5),1);
}
}
//매수 체결일 경우
if (NotifyFill.orderKind == 2)
{
//선물인 경우
if (NotifyFill.code == Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매도5호가로 매수주문
Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,MarketData1.Ask(5),0);
}
//선물이 아닐경우(선옵계좌이므로 이경우 옵션종목)
if (NotifyFill.code != Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매도5호가로 매수주문
Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,Option.GetAskByCode(NotifyFill.code,5),1);
}
}
}
}
즐거운 하루되세요
> 왼손잡이 님이 쓴 글입니다.
> 제목 : 문의 드립니다.
>
수고하십니다.
서로 다른 컴퓨터에서 발생한 신호를 동일하게 유지 하고 싶습니다.
1. 갑 이라는 컴퓨터 A계좌(account 1 or account2) 에서 발생한 신호 또는 잔고 확인후
2. 을 이라는 컴퓨터 B계좌(account 3) 에서 동일하게 잔고 또는 동일하게 매매하고 싶습니다.
답변을 찾아보니 이래저래 찾아보니 ..아래와 같이 구현하면 가능할런지요?
그럼 좋은 답변 부탁드리겠습니다.
============================================================================================
//각 주문을 매수/매도 5호가로 주문내게 수정했습니다.
//Account1 (시스템 거래)
//Account2 (손매매)
//Account3 (앞의 두계좌 연동),
//아래는 1분 단위로 Account1계좌를 원장과 동기화하는 내용입니다
function Main_OnStart()
{
Main.SetTimer(1, 100)
}
function Main_OnTimer(nEventID)
{
if(nEventID == 1)
{
//Main.MessageList("타이머 발생");
Main.RefreshAccount(Account1.number);
}
}
//체결이벤트 발생
function Main_OnNotifyFill(NotifyFill)
{
// Account1이나 Account2에서 체결이 발생하면
if (NotifyFill.accountNum == Account1.number || NotifyFill.accountNum == Account2.number)
{
//매도 체결일 경우
if (NotifyFill.orderKind == 1)
{
//선물인 경우
if (NotifyFill.code == Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매수5호가로 매도주문
Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,MarketData1.Bid(5),0);
}
//선물이 아닐경우(선옵계좌이므로 이경우 옵션종목)
if (NotifyFill.code != Main.GetOrderCode(MarketData1.code))
{
//체겨수량만큼 매수5호가로 매도주문
Account3.OrderSell(NotifyFill.code, NotifyFill.fillCount,Option.GetBidByCode(NotifyFill.code,5),1);
}
}
//매수 체결일 경우
if (NotifyFill.orderKind == 1)
{
//선물인 경우
if (NotifyFill.code == Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매도5호가로 매수주문
Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,MarketData1.Ask(5),0);
}
//선물이 아닐경우(선옵계좌이므로 이경우 옵션종목)
if (NotifyFill.code != Main.GetOrderCode(MarketData1.code))
{
//체결수량만큼 매도5호가로 매수주문
Account3.OrderBuy(NotifyFill.code, NotifyFill.fillCount,Option.GetAskByCode(NotifyFill.code,5),1);
}
}
}
}