예스스탁
예스스탁 답변
2020-09-17 15:48:04
안녕하세요
예스스탁입니다.
1
HHMMSS >= 093000 && HHMMSS1 < 0930
수시에서 HHMMSS이 시간을 6자리로 리턴합니다.
HHMMSS1이 너무 작은값보다 작게 되어 있어
검색이 동작하지 않았습니다.
아래와 같이 6자리로 지정하셔야 합니다.
HHMMSS >= 093000 && HHMMSS1 < 093000
2
수식에서 동일 이벤트는 하나만 사용하셔야 합니다.
작성하신 수식에 function Main_OnTimer(nEventID) 이벤트가 2번 사용되어 있습니다.
하나의 이벤트안에 내용을 모두 넣으셔야 합니다.
3
차트객체에서 종목코드를 가져오는 함수는 ChartEx.GetCode(1)입니다.
4
var List;
var ListCnt;
var ReqCount;
var HHMMSS,HHMMSS1;
//스팟 첫 실행시
function Main_OnStart()
{
Main.MessageLog("시작"); //시작 메세지 출력
Main.SetTimer(1,60000);
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var d = new Date();
HHMMSS1 = HHMMSS;
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
Main.MessageLog(HHMMSS);
if (HHMMSS >= 093000 && HHMMSS < 193000) // 0930시 파워검색 실시
{
Main.ReqPowerSearch("분봉장중단타1.5");
Main.MessageList("파워검색시작");
Main.KillTimer(1);
}
}
if (nEventID == 2) //2초 단위로 한종목씩 차트 생성
{
if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료
Main.KillTimer(2);
//ReqCount번째 종목요청
//종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청
//차트설정 :종목, 주기 분봉, 조회건수 1500
var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false);
//시스템 설정
var S1 = new SystemInfo("feel29na_ver_1.0");
//C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성
Main.ReqChartEx(C1,S1);
ReqCount = ReqCount+1;//요청횟수 1증가
}
}
function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신
{
List = aItemList; //검색된 종목코드를 저장
ListCnt = nCount; //검색된 종목수 저장
Main.SetTimer(2,2000);//2초 타이머
ReqCount = 0;
}
//생성된 차트에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호완성 출력
Main.MessageLog("신호발생");
//매수신호 발생하면 매수주문
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1);
Main.MessageLog("매수");
}
//청산신호 발생하면 매도주문
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(ChartEx.GetCode(1)),1,0,1);
Main.MessageLog("매수청산");
}
}
즐거운 하루되세요
> feel29na 님이 쓴 글입니다.
> 제목 : 시스템 수식 수정 문의
> 0915시에 "분봉장중단타1.5" 파워검색 실시 후 나온 종목들에 대해 시스템을 실행하려고 합니다.
아래와 같이 코딩했는데... 어디가 문제인지 모르겠습니다. ㅜㅡ
var List;
var ListCnt;
var ReqCount;
var HHMMSS,HHMMSS1;
//스팟 첫 실행시
function Main_OnStart()
{
Main.MessageLog("시작"); //시작 메세지 출력
Main.SetTimer(1,60000);
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var d = new Date();
HHMMSS1 = HHMMSS;
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
if (HHMMSS >= 093000 && HHMMSS1 < 0930) // 0930시 파워검색 실시
{
Main.ReqPowerSearch("분봉장중단타1.5");
Main.MessageLog("파워검색시작");
Main.KillTimer(1);
}
}
}
function Main_OnRcvItemList(aItemList, nCount) //종목검색 완료되어 리스트(검색된 종목코드) 수신
{
List = aItemList; //검색된 종목코드를 저장
ListCnt = nCount; //검색된 종목수 저장
Main.SetTimer(2,2000);//2초 타이머
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 2) //2초 단위로 한종목씩 차트 생성
{
if (ReqCount == ListCnt) //요청이 검색된 종목수 만큼 되었으면 터이머 종료
Main.KillTimer(2);
//ReqCount번째 종목요청
//종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청
//차트설정 :종목, 주기 분봉, 조회건수 1500
var C1 = new ReqChartItem(List[ReqCount], 1, CHART_PERIOD_MINUTE, 1500, CHART_REQCOUNT_BAR, false, false);
//시스템 설정
var S1 = new SystemInfo("feel29na_ver_1.0");
//C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성
Main.ReqChartEx(C1,S1);
ReqCount = ReqCount+1;//요청횟수 1증가
}
}
//생성된 차트에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호완성 출력
Main.MessageLog("신호발생");
//매수신호 발생하면 매수주문
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1);
Main.MessageLog("매수");
}
//청산신호 발생하면 매도주문
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1);
Main.MessageLog("매수청산");
}
}