예스스탁
예스스탁 답변
2014-07-08 10:29:38
안녕하세요
예스스탁입니다.
1.
종목객체가 완료가 되면 1초뒤에 다음 종목을 요청하므로
첫번째 차트가 생성되지 않았습니다.
차트객체의 생성을 종목객체가 만들어 지는 것을 알려주는
function Main_OnRcvMarketData(MarketData) 이벤트에서
하셔야 합니다.
2.
아래식 참고하시기 바랍니다.
var List = new Array(100);
var ListCnt; //관심종목의 수
var RcvCount; //종목객체 생성종목의 수
//종목객체를 저장할 배열변수
var SymBol = new Array(100);
//매수주문금액
var BuyMoney = 1000000;
//매수수량저장
var BuyVol = new Array(100);
function Main_OnStart()
{
//스팟실행시 지정한 이름의 관심종목을 호출
//관심종목의 종목수
ListCnt = Main.GetItemCountOfInterest("거래_단봉")
Main.MessageList("전체종목수",ListCnt);
//차례대로 배열변수 List에 저장( 최대 100종목)
for(var i = 0; i < ListCnt; i++)
{
List[i] = Main.GetItemCodeInInterest("거래_단봉", i);
Main.MessageList("거래_단봉",List[i]);
}
Main.ReqMarketData(List[0],50,0);
Start = false
RcvCount = 0;
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
//생성 종목수 카운트
RcvCount = RcvCount+1;
//배열변수 SymBol의 RcvCount방에 현재 수신된 종목객체 저장
SymBol[RcvCount] = MarketData;
Main.MessageList(RcvCount,"번째 종목생성",MarketData.name);
//다음 순번 종목객체 요청
if (RcvCount < ListCnt)
{
Main.SetTimer(1, 1000);
}
//차트 설정
var ChartSet = new ReqChartItem(SymBol[RcvCount].code,5,CHART_PERIOD_SECOND,
500,CHART_REQCOUNT_BAR, false, false);
//시스템 설정
var SystemInputSet = new Array(new YLInputVar("p1", "80"),new YLInputVar("p2", "160"));
var SystemSet = new SystemInfo("현물_4분",YL_TYPE_NORMAL,SystemInputSet);
Main.ReqChartEx(ChartSet,SystemSet);
//종목객체가 모두 생성되면(종목검색으로 나온 종목수와 생성횟수가 같을때)
if (RcvCount == ListCnt)
{
Main.KillTimer(1);
Start = true;
Main.MessageList("종목생성완료",Start);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.ReqMarketData(List[RcvCount],50,0);
//차트설정 4분봉 500바
}
}
function Main_OnRiseSignal(ChartEx, Signal)
{
for (var i = 1; i <= RcvCount; i++)
{
if (SymBol[i].code == ChartEx.GetCode(1))
{
if (Signal.signalKind == 1)
{
BuyVol[i] = 0;
if (SymBol[i].tradeUnit == 1)
BuyVol[i] = Math.floor(BuyMoney/SymBol[i].Ask(5) );
else
BuyVol[i] = Math.floor((BuyMoney/SymBol[i].Ask(5) )/SymBol[i].tradeUnit)*10;
Account1.OrderBuy(Signal.code,BuyVol[i],SymBol[i].Ask(5),0);
}
if (Signal.signalKind == 1)
Account1.OrderSell(Signal.code,BuyVol[i],SymBol[i].Bid(5),0);
}
}
}
즐거운 하루되세요
> somun 님이 쓴 글입니다.
> 제목 : 수식 검토
> 안녕하세요
아래는 현물 관심종목그룹을 불러내서 종목과 차트를 생성하는 내용입니다.
그런데
1. 관심종목중에서 1번째 종목의 차트생성이 안되네요
아무리 봐도 알 수가 없네요 ㅜ
2. 생성된 관심종목의 차트에서
시스템 신호에 따른 매수와 청산식까지 마저 완성해주시면 고맙겠습니다.
var List = new Array(100);
var ListCnt; //관심종목의 수
var RcvCount; //종목객체 생성종목의 수
//종목객체를 저장할 배열변수
var SymBol = new Array(100);
//주문여부를 저장할 배열변수
var Buy = new Array(100);
//매수주문금액
var BuyMoney = 1000000;
function Main_OnStart()
{
//스팟실행시 지정한 이름의 관심종목을 호출
//관심종목의 종목수
ListCnt = Main.GetItemCountOfInterest("거래_단봉")
Main.MessageList("전체종목수",ListCnt);
//차례대로 배열변수 List에 저장( 최대 100종목)
for(var i = 0; i < ListCnt; i++)
{
List[i] = Main.GetItemCodeInInterest("거래_단봉", i);
Main.MessageList("거래_단봉",List[i]);
}
Main.ReqMarketData(List[0],50,0);
Start = false
RcvCount = 0;
}
//요청한 종목객체가 생성되면
function Main_OnRcvMarketData(MarketData)
{
//생성 종목수 카운트
RcvCount = RcvCount+1;
//배열변수 SymBol의 RcvCount방에 현재 수신된 종목객체 저장
SymBol[RcvCount] = MarketData;
Main.MessageList(RcvCount,"번째 종목생성",MarketData.name);
//다음 순번 종목객체 요청
if (RcvCount < ListCnt)
{
Main.SetTimer(1, 1000);
}
//종목객체가 모두 생성되면(종목검색으로 나온 종목수와 생성횟수가 같을때)
if (RcvCount == ListCnt)
{
Main.KillTimer(1);
Start = true;
Main.MessageList("종목생성완료",Start);
}
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
Main.ReqMarketData(List[RcvCount],50,0);
for (var i = 1; i <= RcvCount; i++)
{
//차트설정 4분봉 500바
var ChartSet = new ReqChartItem(List[i],4,CHART_PERIOD_MINUTE,
500,CHART_REQCOUNT_BAR, false, false);
}
//시스템 설정
var SystemInputSet = new Array(new YLInputVar("p1", "80"),new YLInputVar
("p2", "160"));
var SystemSet = new SystemInfo("현물_4분",YL_TYPE_NORMAL,SystemInputSet);
Main.ReqChartEx(ChartSet,SystemSet);
}
}