답변완료
[질문]종목검색후 매매수식오류.조회대상아닙니다.
아래 수식은 "종목검색"이후 매매방식의 수식을 그대로 가져왔는데
Main.ReqChartEx(C1,S1); --> 여기서 오류가 나옵니다.
TypeError: "undefined"는 조회대상이 아닙니다
1. 무엇이 잘못되었나요?
2. 종목검색후 --> 차트생성에서 차트가 화면에 팝업?으로 나오는건지요? 아니면 차트보기를 클릭해야만 차트를 볼 수 있는건지요?
3. 파워종목검색의 경우 실시간으로 종목이 신규로 나오는 것이 아닌지요? 검색을 클릭하면 그때 다시 종목이 신규로 업데이트 됩니다. 무엇이 문제인가요?
참고로 위 오류가 뜨지만, 차트보기 누르면 주식 매수/매도 매매가 진행됩니다..
var List;
var ListCnt;
var ReqCount;
//스팟 첫 실행시
function Main_OnStart()
{
// 파워종목검색의 test Search라는 이름의 사용자검색조건 검색 요청
Main.ReqPowerSearch("test Search")
}
//종목검색 완료되어 리스트(검색된 종목코드) 수신
function Main_OnRcvItemList(aItemList, nCount)
{
//검색된 종목코드를 저장
List = aItemList;
//검색된 종목수 저장
ListCnt = nCount;
Main.SetTimer(1,2000);//2 타이머
ReqCount = 0;
}
function Main_OnTimer(nEventID)
{
//2초 단위로 한종목씩 차트 생성
if (nEventID == 1)
{
//요청이 검색된 종목수 만큼 되었으면 터이머 종료
if (ReqCount == ListCnt)
Main.KillTimer(1);
//ReqCount번째 종목요청
//종목검색 후 종목코드가 aItemList에 배열로 담겨오는데 [0]번방 부터 요청
//차트설정 : 연결선물,1분봉,5000개, 수정주가X, 갭보정X
var C1 = new ReqChartItem(List[ReqCount],1,CHART_PERIOD_DAILY,5000,CHART_REQCOUNT_BAR,false,false);
//시스템 설정
var S1 = new SystemInfo("Stochastics K_D");
//C1차트설정, S1시스템설정으로 첫번째 종목 차트 생성
Main.ReqChartEx(C1,S1);
ReqCount = ReqCount+1;//요청횟수 1증가
}
}
#생성된 차트에서 신호가 발생하면
function Main_OnRiseSignal(ChartEx, Signal)
{
//매수신호 발생하면 매수주문
if (Signal.signalKind == 1)
{
Account1.OrderBuy(Main.GetOrderCode(ChartEx.code),1,0,1);
}
//청산신호 발생하면 매도주문
if (Signal.signalKind == 2)
{
Account1.OrderSell(Main.GetOrderCode(ChartEx.code),1,0,1);
}
}
2015-10-13
2276
글번호 223689
답변완료
질문입니다.
안녕하세요. 질문이 있습니다.
파일을 첨부하려고 했지만 마땅치 않아 맨아래에 코드복사하여 올리겠습니다.
function C1_OnRiseSignal(Signal)
{
여기에서 'Signal.count'란 걸 썼습니다.
}
function Main_OnOrderResponse(OrderResponse)
{
그 후에 이곳에서 MesssageList안에 'Signal.count'를 넣었는데,
Signal이 not define 되었다고 나옵니다.
}
function Main_OnNotifyFill(NotifyFill)
{
이곳도 마찬가지로 MesssageList안에 'Signal.count'를 넣었는데,
Signal이 not define 되었다고 나옵니다.
}
Signal.count를 다른 함수안에서도 사용할 수 있는 방법이 없을까요?
그리고, 하나 더 질문이 있는데 혹시 MessageList안에서 +와 ,의 쓰임은 어떤 차이가 있나요?
답변 부탁드리겠습니다.
[코드]
var Start;
var fillcountSum = 0;
function Main_OnStart()
{
Main.MessageList("시작",getTHHMMSS());
//잔고, 미체결수량 확인 사용자함수
BalanceAndUnfill();
Start = 0;
}
function C1_OnRiseSignal(Signal)
{
var dayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 0);
var dayma2 = C2.GetIndicatorData("이동평균 5_20_60", 2, 0);
var dayma3 = C2.GetIndicatorData("이동평균 5_20_60", 3, 0);
var predayma1 = C2.GetIndicatorData("이동평균 5_20_60", 1, 1);
var slowK = C2.GetIndicatorData("Stochastics", 1, 0);
if (Signal.signalKind == 1
&& dayma1 > dayma2 && dayma2 > dayma3
&& dayma1 > predayma1
&& slowK >= 50)
{
Position = 1;
BID = A1.OrderBuy(Signal.code, Signal.count, SSE.Ask(2), 0);
Start = 1;
Main.MessageList("신호완성/", Signal.signalKind, ".매수주문:", getTHHMMSS()
, "주문수량[", Signal.count, "] 주문식별번호[", BID, "]");
}
if (Signal.signalKind == 2 && Start == 1)
{
Position = -1;
SID = A1.OrderSell(Signal.code, Signal.count, SSE.Bid(2), 0);
Main.MessageList("신호완성/", Signal.signalKind, ".매도주문:", getTHHMMSS()
, "주문수량[", Signal.count, "] 주문식별번호[", SID, "]");
}
}
//각 경우에 주문 응답
function Main_OnOrderResponse(OrderResponse)
{
fillcountSum = 0;
if (Position == 1 && OrderResponse.orderID == BID)
{
BNum = OrderResponse.orderNum;
Main.MessageList("OnOrdRes_매수주문응답:", getTHHMMSS()
, "주문수량[" + Signal.count + "] 누적체결수량[0]"
, " 주문식별번호[", BID, "]", " 주문번호["
, OrderResponse.orderNum, "]");
}
if (Position == -1 && OrderResponse.orderID == SID)
{
SNum = OrderResponse.orderNum;
Main.MessageList("OnOrdRes_매도주문응답:", getTHHMMSS()
, "주문수량[" + Signal.count + "] 누적체결수량[0]"
, " 주문식별번호[", SID, "]", " 주문번호["
, OrderResponse.orderNum, "]");
}
}
//각 경우에 주문 체결
function Main_OnNotifyFill(NotifyFill)
{
if (Position == 1 && NotifyFill.orderNum == BNum)
{
fillcountSum = fillcountSum + NotifyFill.fillCount;
Main.MessageList("OnNotify_매수주문체결:", getTHHMMSS()
, "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum
, "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호["
, NotifyFill.orderNum, "]");
}
if (Position == -1 && NotifyFill.orderNum == SNum)
{
fillcountSum = fillcountSum + NotifyFill.fillCount;
Main.MessageList("OnNotify_매도주문체결:", getTHHMMSS()
, "주문수량[" + Signal.count + "] 누적체결수량[", fillcountSum
, "] 체결수량[", NotifyFill.fillCount, "]", " 주문번호["
, NotifyFill.orderNum, "]");
}
}
2015-10-02
2262
글번호 223678