커뮤니티
예스스팟 Q&A
답변완료
디버깅 방법 문의
안녕하세요?
스팟에서 종목검색하여 매수주문을 냈는데,
주문상태가 '오류발생'이라고 나오는데
원인을 알 수 없네요?
원인파악하려면 어떻게 해여하죠?
스팟에서 디버깅하려면 어떻게 해야하나요?
2020-06-17
3577
글번호 225241
tktmsl 님에 의해서 삭제되었습니다.
2020-06-16
22
글번호 225240
답변완료
기존의 파워종목검색 자동매매 수식에 정정주문 추가 부탁드립니다.
이전에 게시판에서 올려주신 아래 수식을 수정, 보완 하여 매매를 하고 있습니다.
1. 2분간격으로 사용자 종목검색을 지속적으로 수행
2. 새로 검색된 종목에 대해 차트 생성, 기존 검색된 차트는 유지
3. 종목검색에서 새로 파악된 종목을 확장차트로 시스템 적용
4. 확장 차트 생성은 50개 이하로 제한
여기에 자동정정주문 기능을 추가하려고 하는데 잘 안되서 수식 부탁 드립니다.
매수 매도 공통적으로
지정가로 주문이 나간 후 미체결시 60초 후에 현재가 정정주문
다시 60초 후에 상대1호가 정정주문
(수식이 복잡하면 60초 후에 상대 1호가 정정 주문으로라도
작성 꼭 부탁드립니다.)
항상 감사합니다.
즐거운 한 주 되세요~
var 검색주기 = 120;//120초
var ItemList = [],CT = [];
var HHMMSS,req;
function Main_OnStart()
{
CTcnt = 0;
Main.SetTimer(1, 5000);
Main.MessageList("start");
}
function Main_OnTimer(nEventID)
{
var d = new Date();
HHMMSS = d.getHours()*10000+d.getMinutes()*100+d.getSeconds();
//9시 이후에 2분간격으로 종목검색 확장차트가가 50개 이하일때 반복적으로 검색
if (nEventID == 1 && HHMMSS >= 090000 && CT.length < 50)
{
Main.KillTimer(1);
Main.MessageList("종목검색 요청");
Main.ReqPowerSearch("전략1");
}
}
function Main_OnRcvItemList(aItemList, nCount)
{
Main.MessageList("종목검색 완료 nCount : ",nCount);
if (nCount > 0)
{
ItemList = [];
//첫검색일때
if (CT.length == 0)
{
ItemList = aItemList;
}
else //두번쨰 이후(차트가 만들어진 종목을 제외하고 새로운 종목만 집계)
{
for (var i = 0; i < nCount; i++ )
{
var add = true;
for (var x = 0; x < CT.length; x++ )
{
if (aItemList[i] == CT[x].GetCode(1))
{
add = false;
}
}
if (add == true)
{
ItemList.push(aItemList[i]);
}
}
}
Main.MessageList("종목검색 완료 ItemList :",ItemList.length);
//집계된 종목이 1개 이상이면 순차적으로 차트객체 요청
if (ItemList.length > 0 && CT.length < 50)
{
req = 0;
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[req],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet);
var SystemSet = new SystemInfo("10전략1", YL_TYPE_NORMAL, null, null, StopSet);
Main.MessageList("현재차트갯수 : ",CT.length);
Main.MessageList(req,"차트객체요청 : ",ItemList[req]);
Main.ReqChartEx(ChartSet,SystemSet);
}
else
{
if (CT.length < 50)
{
Main.SetTimer(1, 검색주기*1000);//120초
}
}
}
}
function Main_OnRcvChartEx(ChartEx)
{
if (ItemList[req] == ChartEx.GetCode(1))
{
CT[CTcnt] = ChartEx;
Main.MessageList(CTcnt,"차트객체생성 : ",CT[CTcnt].GetCode(1));
CTcnt = CTcnt +1;
req = req + 1;
if (req < ItemList.length && CT.length < 50)
{
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[req],3,CHART_PERIOD_MINUTE,5000,CHART_REQCOUNT_BAR,false,StopSet);
var SystemSet = new SystemInfo("10전략1", YL_TYPE_NORMAL, null, null, StopSet);
Main.MessageList("현재차트갯수 : ",CT.length);
Main.MessageList(req,"차트객체요청 : ",ItemList[req]);
Main.ReqChartEx(ChartSet,SystemSet);
}
else
{
Main.MessageList("Search1 차트객체요청종료");
//만들어진 차트가 50개 이하이면
if (CT.length < 50)
{
Main.SetTimer(1, 검색주기*1000);//120초
}
}
}
}
//신호발생
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("매도주문");
}
}
}
2020-06-13
3877
글번호 225239
답변완료
비트코인의 종목이름이 어떻게 되는지요?
var ChartSet = new ReqChartItem("btc_KRW_Bithumb",5,CHART_PERIOD_MINUTE,1000,CHART_REQCOUNT_BAR,false,false);
라고 했더니
TypeError: "2" 는 조회대상 종목이 아닙니다. 라고 나타납니다.
2020-06-10
3616
글번호 225238
답변완료
DLL은 여전히 지원하지 않는지요
매뉴얼에 DLL확장 제공 예정이라고만 써있고 현재까지 변동이 없는데
현재도 이 상태인지 알고싶습니다.
또는, 예스스팟 외부와 TCP든 HTTP든 통신이 가능한 방법이 없는지 알고싶습니다.
예스트레이더에서 시스템트레이딩을 통해 체결되는 상황을 외부로 통지해주려는 것이 목적입니다.
2020-06-08
3612
글번호 225237
영원한자유 님에 의해서 삭제되었습니다.
2020-06-13
17
글번호 225236
답변완료
종목의 전일 값 참조
계좌에 있는 종목들의 전일 고가나 저가를 참조할 수 있는지 궁금합니다.
2020-06-01
3360
글번호 225233
답변완료
ODBC 패스워드
안녕하세요?
스팟에서 데이터베이스 객체를 사용하고 있습니다.
원격 데이터베이스를 연결할 때는 항상 패스워드 입력창이 나오던데, 매번 입력하지 않도록 저장하는 방법은 없나요?
2020-05-31
3742
글번호 225232
답변완료
당일 매수종목과 전일 보유종목 다른 매도전략
금일 매수된 현물 주식은 손절 -5프로 적용하고
전일 매수됬던 현물 주식은 손절 -3프로 매도 하는
로직이 가능한지 궁금합니다.
매수는 다른 별개 로직으로 매수합니다.
감사합니다.
2020-05-28
3449
글번호 225231
데칸 님에 의해서 삭제되었습니다.
2020-05-20
3
글번호 225220