답변완료
종목검색 후 자동매매(3) _ 검색종목의 선별작업
안녕하세요.
약 5년전에(2018년5월) 질문드리고 다시 돌아왔습니다. ^^;;
요점을 간단하게 말씀드리면,
아래의 방법이 파워종목검색식으로 종목을 검색하고, 확장차트를 생성한 다음에, 시스템식으로 시그널이 발생하면 바로바로 매수하는 로직인데요.
여기서 발전해서 종가에 매수를 하려고 합니다.
15시10분에 파워종목검색식으로 종목을 검색하고, , 확장차트를 생성한 다음에, 시스템식으로 시그널이 발생하는데요.
약 20개 종목에서 동시에 시그널이 발생하고 있습니다.
이 중에서 특정 선별조건으로(예, RSI가 가장 큰 순으로) 5개 종목만 골라서 매수하려고 하는데,
이 부분을 예스스팟에서 구현할 수 있을까요?
언제나 감사드립니다.
수고하세요.
######################################################################### #########################################################################
1. 2분간격으로 사용자 종목검색을 지속적으로 수행
2. 새로 검색된 종목에 대해 차트 생성, 기존 검색된 차트는 유지
3. 종목검색에서 새로 파악된 종목을 종목차트로 시스템 적용
4. 생성된 차트에 시스템 적용
5. 차트 생성이 50개가 되면 새 종목 추가 완료
아래 내용은 다른분이 이전에 질문한 답변입니다.
여기에서 파워종목검색이 2분간격시간에 따라 추가되는 종목에 대한 추가 매수는 어떻게 하면 좋을까요?
var ItemList;
var Count;
var ReqCount;
function Main_OnStart()
{
Main.MessageLog("스팟시작");
Main.MessageLog("종목검색시작");
Main.ReqPowerSearch("전략1");
}
function Main_OnRcvItemList(aItemList, nCount)
{
ItemList = aItemList;
Count = nCount;
Main.SetTimer(1, 1000);
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
if (nEventID == 1)
{
var StopSet = new SystemStopInfo(new StopLoss(4, CALCMETHOD_PERCENT, 0xFFDA93),
new StopTrailing(2, 5, CALCMETHOD_PERCENT, 0),
//new StopProfitTarget(10, CALCMETHOD_PERCENT, 0xFFDA93),
//new StopInactivity(0.5, 6, CALCMETHOD_PERCENT, 0xFFDA93),
new StopEndOfDay(151500));
var ChartSet = new ReqChartItem(ItemList[ReqCount],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet);
var SystemSet = new SystemInfo("10전략1", YL_TYPE_NORMAL, null, null, null);
Main.ReqChartEx(ChartSet,SystemSet);
Main.MessageLog("확장차트생성_"+ItemList[ReqCount]);
ReqCount = ReqCount+1;
if (ReqCount == Count)
{
Main.KillTimer(1);
Main.MessageLog("종목검색완료");
}
}
}
//신호발생
function Main_OnRiseSignal(ChartEx, Signal)
{
//신호발생 종목에 대해 잔고셋팅
Account1.SetBalance(Main.GetOrderCode(Signal.code),0);
//매수신호이고 잔고가 없을때만 매수
if (Signal.signalKind == 1 && Account1.Balance.count == 0)
{
Account1.OrderBuy(Main.GetOrderCode(Signal.code),Math.floor(100000/ChartEx.GetClose(1,0)),0,1);
Main.MessageLog("매수주문");
}
if (Signal.signalKind == 2)
{
//전체미체결주문 갯수
var num = Account1.GetTheNumberOfUnfills();
//전체 미체결수 만큼 루프를 돌면서
for (var i = 0; i < num; i++)
{
//미체결을 하나씩 셋팅하고
Account1.SetUnfill(i);
//미체결종목이 신호종목과 같고 미체결수량이 있으면
if (Account1.Unfill.code == Main.GetOrderCode(Signal.code) && Account1.Unfill.count > 0)
{
Account1.OrderCancel(Account1.Unfill.orderNum);
}
}
//잔고수량만큼만 매도
if (Account1.Balance.count > 0)
{
Account1.OrderSell(Main.GetOrderCode(Signal.code),Account1.Balance.count,0,1);
Main.MessageLog("매도주문");
}
}
}
######################################################################### #########################################################################
관리자에 의해 수식작성 QnA로 이동되었습니다
안녕하세요.
HMA 수식을 공부하게 되었습니다.
키움수식
a=wavg(2*wavg(scr,len/2)-wavg(scr,len), floor(sqrt(len)));
이베스트증권에서는 상기 수식에서 에러가 발행하네요.
floor(sqrt(len)));
"수식1에 다음과같은 오류가 있습니다.
floor이(가) 정의되지 않았습니다.
가능하시면 부탁드립니다.
행복한 주말 되십시오