매매 시그널 작성하는 것 시도하려고하는데요.
쓱 둘러보니 봉단위 코딩이 가능한것 같은데.
일별 거래량으로 조건을 설정하다가 조건이 충족된 기업들 중에서
오후 2시까지의 거래량이 충족됐을때 매매 시그널을 발동시키고싶은데,
이런 코딩이 가능한가요?
답변 1
예스스탁
예스스탁 답변
2021-05-28 16:22:51
안녕하세요
예스스탁입니다.
스팟 자체에서 종목검색식을 작성하지는 않습니다.
종목검색식을 예스랭귀지로 작성하신 후에
예스트레이더의 [3202] 파워종목검색화면이나
NH트레이더의 [5202] 종목검색화면에서
첨부된 그림과 같이 해당 종목검색식을 이용해 사용자검색조건으로 저장 후에
스팟에서 해당 사용자검색조건명을 지정해서 검색하게 됩니다.
종목검색화면에서 사용자검색조건을 등록하는 부분은
프로그램 도움말에서 종목검색화면에 대한 내용 참고하시기 바랍니다.
1. 예스랭귀지 종목검색식
input : 당일거래량(1000000);
if V >= 당일거래량 then
find(1);
2 스팟수식
스크립트 객체화면설정
계좌객체 추가 -> 속성에서 객체명 Account1,계좌번호 지정
var 금액 = 1000000;
var List = [],req;
//스팟시작
function Main_OnStart()
{
Main.MessageList("Spot Start");
//60초 타이머 실행
Main.SetTimer(1, 60000);//1번 타이머
}
function Main_OnTimer(nEventID)
{
var d = new Date();
var HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//1번타이머가 동작하고 14시 이후이면
if (nEventID == 1 && HHMMSS >= 140000 )
{
//1번 타이머 종료
Main.KillTimer(1);
//종목검색 실행
Main.MessageList("종목검색 요청");
Main.ReqPowerSearch("사용자검색조건명");
}
//2번타이머 동작
if (nEventID == 2 )
{
//타이머 종료
Main.KillTimer(2);
//다음종목 다시 요청
Main.ReqMarketData(List[req]);
}
}
//종목검색 완료
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("종목검색 완료");
//검색된 종목이 1개 이상이면
if (nCount >= 1)
{
//배열변수 리스트에 검색된 종목코드 저장
List = aItemList;
//검색된 종목 중 첫번쨰 종목의 종목객체 요청
req = 0;
Main.ReqMarketData(List[req]);
}
}
//종목검색 수신
function Main_OnRcvMarketData(MarketData)
{
if (MarketData.code == List[req])
{
//매도5호가
var OP = MarketData.Ask(5);
//수량계산
var vol = Math.floor(금액/OP);
//매수주문
Account1.OrderBuy(MarketData.code, vol,OP,0);
//req는 1증가
req = req+1;
//요청갯수가 리스트갯수보다 작으면
if (req < List.length)
{
//다음종목 종목객체 요청
var S = Main.ReqMarketData(List[req]);
//시간제한에 걸리면
if (S == -1)
{
//15초 타이머 실행
Main.SetTimer(2, 15000);//2번 타이머
}
}
else //아니면
{
Main.MessageList("주문 종료");
//리스트의 종목에 대해 모두 주문했으면 종료
}
}
}
즐거운 하루되세요
> 부처스탁 님이 쓴 글입니다.
> 제목 : 일봉 및 시간별 봉 데이터를 활용해서 시그널을 짜고싶은데
> 매매 시그널 작성하는 것 시도하려고하는데요.
쓱 둘러보니 봉단위 코딩이 가능한것 같은데.
일별 거래량으로 조건을 설정하다가 조건이 충족된 기업들 중에서
오후 2시까지의 거래량이 충족됐을때 매매 시그널을 발동시키고싶은데,
이런 코딩이 가능한가요?