예스스탁
예스스탁 답변
2013-08-07 18:15:12
안녕하세요
예스스탁입니다.
스팟에서 종목검색은 파워종목검색을 사용합니다.
그러므로 종목검색 식 자체는 예스랭귀지로 작성하셔야 합니다.
스팟에서는 종목검색 후에 종목코드만 리턴받을수 있습니다.
예스랭귀지로 종목검색을 작성하신 후에
[3202] 파워종목검색에서 검색식의 주기등을 구성하신 후에
조건을 저장하시면 사용자 검색조건으로 등록이 됩니다.
스팟에서는 이렇게 등록된 사용자 검색조건을 검색하게 됩니다.
파워종목검색 사용법은 아래 링크 참고하시기 바랍니다.
https://www.yesstock.com/YesTrader/Manual/YesTrader4.0Help/More_Power.htm
아래는 스팟수식입니다.
식상 주문을 위해 계좌객체가 필요합니다.
스크립트 객체화면에서 계좌객체 추가하신 후에
속성에서 객체명은 Account1로 지정하시고 계좌 지정하시면 됩니다.
주석 참고하셔서 수정 보완해 사용하시기 바랍니다.
기본 흐름은 아래와 같습니다.
1. 스팟 처음 실행시에 파워종목의 사용자검색조건에 대해 종목검색을 요청
2. 검색이 완료되어 검색된 종목리스트가 넘어오면
3. 해당 종목들에 대해 종목객체를 요청하고
4. 요청한 종목객체가 생성완료되면
5. 생성완료 순서대로 배열방에 종목코드, 현재가, 주문수량단위를 저장하고
6. 모든 종목에 대해 종목객체의 생성이 완료되면
7. 각 종목의 현재가를 비교해 상위 5개에 대해 예수금/n 만큼 씩 주문입니다.
var List;
var ListCnt;
var RcvCount;
var ItemCode = new Array(200);
var ItemPrice = new Array(200);
var ItemUnits = new Array(200);
var RcvCount = 0;
var Ymoney;
//스팟 첫 실행시
function Main_OnStart()
{
// 파워종목검색의 사용자검색조건 검색 요청
Main.ReqPowerSearch("test Search")
//예수금 저장
Ymoney = Account1.GetBalanceETCinfo(0);
}
//종목검색 완료되어 리스트(검색된 종목코드) 수신
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목코드를 저장
List = aItemList;
//검색된 종목수 저장
ListCnt = nCount;
//종목코드 디버깅창에 출력
Main.MessageList("전체종목코드",List);
//검색된 종목에 대해 종목객체 요청
for (var i = 0; i < nCount; i++)
{
Main.ReqMarketData(List[i], 0, 0);
}
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
//생성 횟수 카운트
RcvCount = RcvCount+1;
//생성된 순서로 1번방부터 종목코드 저장
ItemCode[RcvCount] = MarketData.code;
//생성된 순서로 1번방부터 현재가 저장
ItemPrice[RcvCount] = MarketData.current;
ItemUnits[RcvCount] = MarketData.tradeUnit;
//값저장 후 해당 종목객체는 삭제
Main.RemoveMarketData(ItemCode[RcvCount]);
//생성횟수와 해당 종목의 코드와 현재가, 매매단위를 디버깅창에 출력
Main.MessageList("생성순번",RcvCount,"종목코드",ItemCode[RcvCount],"현재가",ItemPrice[RcvCount],"주문수량단위",ItemUnits[RcvCount]);
//검색된 종목에 대해 모두 종목객체가 생성되었다면
if (RcvCount == ListCnt)
{
//현재가가 큰 종목순으로 상위 5개 주문
for (var ii = 1; ii <= 5; ii++)
{
var HH = -1;
var Hi = -1;
//각 종목이 현재가를 비교해 가장 큰 종목 선택
for (var iii = 1; iii <= RcvCount; iii++)
{
if (ItemPrice[iii] > HH)
{
HH = ItemPrice[iii];
Hi = iii;
}
}
//매수주문
if (Hi > -1)
{
//수량 계산
var vol;
if (ItemUnits[Hi] == 1) //1주단위이면
vol = Math.floor((Ymoney/5)/ItemPrice[Hi]);
if (ItemUnits[Hi] == 10)//10주 단위이면
vol = Math.floor(((Ymoney/5)/ItemPrice[Hi])/10)*10;
//시장가로 매수주문
Main.MessageList("순번",ii,"매수주문종목",ItemCode[Hi],"현재가",ItemPrice[Hi],"주문수량단위",ItemUnits[Hi]);
//디버깅창에 매수 종목의 코드와 현재가,주문수량 표시
Account1.OrderBuy(ItemCode[Hi], vol, 0,1);
//해당 종목의 종목코드와 현재가는 다음순위를 찾기위해 -1로 지정
ItemCode[Hi] = -1;
ItemPrice[Hi] = -1;
}
}
}
}
즐거운 하루되세요
> HI_welife 님이 쓴 글입니다.
> 제목 : 예스스팟을 이용한 종목검색
> 안녕하세요
예스스팟을 이용해보고싶은데 전혀 감이 잡히지 않아서 문의 드립니다.
예스스팟에 종목을 검색하고 검색중 상위 5개의 종목을 예탁금 1/n 해서
매매가 가능한가요?
가능하다면 간략한 수식 부탁드립니다. ㅠㅠ