수고하십니다.
[668] 종목 검색후 자동 매매관련 하여 5분 마다 검색하여 종목이 있을 시
금일 예수금 가능금액으로 10등분 하여 매수 할 수 있는 방법이 있는지 궁금합니다.
있다면 수식을 부탁드립니다.
답변 1
예스스탁
예스스탁 답변
2014-10-01 18:34:28
안녕하세요
예스스탁입니다.
아래식 참고하셔서 수정보완해 사용하시기 바랍니다.
주문을 위해서는 검색뿐만 아니라 주문가격지정을 위해 해당 종목의 시세데이타도 필요합니다.
그러므로 종목검색 후에 종목객체를 생성해서 주문을 집행하게 됩니다.
수식은 아래 흐름으로 동작합니다.
5분단위로 사용자검색조건 실행하고
검색이 완료되어 검색된 종목이 있으면 잔고에 없는 종목에 한해서
1초단위로 해당종목의 종목객체를 생성해서 매도5호가로 주문을 집행합니다.
예수금은 스팟시작시에 예수금을 가져와 10%의 금액으로 주문합니다.
스크립트 객체화면에는 계좌객체(Account1)만 추가하시면 됩니다.
var EntryMoney;
var ItemList,Count;
//스팟시작
function Main_OnStart()
{
//타이머설정
Main.SetTimer(1, 300000);//간격(300초 5분)
EntryMoney = Math.floor(Account1.GetBalanceETCinfo(0)*10);
}
function Main_OnTimer(nEventID)
{
//타이머동작하면 사용자검색조건 실행
if (nEventID == 1)
{
Main.ReqPowerSearch("Stest");
Req = 0;
}
if (nEventID == 2 && Req < Count)
{
Main.ReqMarketData(ItemList[Req], 0, 0);
Req = Req+1;
Main.MessageList(ItemList[Req-1],Req);
}
}
//종목검색이 완료
function Main_OnRcvItemList(aItemList, nCount)
{
//검색종목수가 1개 이상이면
if (nCount >= 1)
{
ItemList = aItemList;
Count = nCount;
//잔고셋팅해서 보유종목이 아니면
Account1.SetBalanceItem(ItemList[0],0);
Main.MessageList(ItemList,Count,Account1.Balance.count);
if (Account1.Balance.count == 0)
{
//종목객체 생성 요청
Req = 1;
Main.ReqMarketData(ItemList[0], 0, 0);
Main.SetTimer(2, 1000);//간격(1초)
}
}
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
var Ob = MarketData;
var EntryVol = 0;
//1주 단위일 경우
if (Ob.tradeUnit == 1)
EntryVol = Math.floor(EntryMoney/Ob.current);
//10주 단위일 경우
if (Ob.tradeUnit == 10)
EntryVol = Math.floor(Math.floor(Math.floor(EntryMoney/Ob.Ask(5))/10)*10);
if (EntryVol > 0)
{
Account1.OrderBuy(Ob.code,EntryVol,Ob.Ask(5),0);
Main.RemoveMarketData(Ob);
}
}
즐거운 하루되세요
> 큰상 님이 쓴 글입니다.
> 제목 : 글번호 [668] 종목 검색후 자동 매매관련 문의 입니다.
> 수고하십니다.
[668] 종목 검색후 자동 매매관련 하여 5분 마다 검색하여 종목이 있을 시
금일 예수금 가능금액으로 10등분 하여 매수 할 수 있는 방법이 있는지 궁금합니다.
있다면 수식을 부탁드립니다.