커뮤니티

계속 시그널 수신....

프로필 이미지
클릭한번
2014-11-27 10:05:39
509
글번호 80829
답변완료
////////////////// 변수 선언 생략 //////////////////////////// function Main_OnStart() { Main.MessageLog("프로그램 실행"); Start = 0; now = new Date(); //날짜 객체 생성 month = now.getMonth()+1; // 날짜 "월" 가져오기 Hours = now.getHours(); // 날짜 "시" 가져오기 Minutes = now.getMinutes(); // 날짜 "분" 가져오기 // 날짜 구분 if( month >= 5 && month <= 7 ) { for( i=3; i<=152; i++ ) { Data[i] = Excel.GetData(1,"AD"+i); Data1[i] = Excel.GetData(1,"AI"+i); Data2[i] = Excel.GetData(1,"AJ"+i); Data3[i] = Excel.GetData(1,"Z"+i);// 예상 주가 상승 마지노선 } } // 날짜 구분 if문 1번 끝 else if( month >= 8 && month <= 10 ) { for( i=3; i<=152; i++ ) { Data[i] = Excel.GetData(1,"AE"+i); Data1[i] = Excel.GetData(1,"AI"+i); Data2[i] = Excel.GetData(1,"AJ"+i); Data3[i] = Excel.GetData(1,"Z"+i);// 예상 주가 상승 마지노선 } } // 날짜 구분 if문 2번 끝 else if( (month >= 11 && month <= 12) || (month == 13) ) { for( i=3; i<=153; i++ ) { Data[i] = Excel.GetData(1,"A"+i); Data1[i] = Excel.GetData(1,"B"+i); } Main.MessageLog("날짜 분류 확인"); } // 날짜 구분 if문 3번 끝 else if( month >= 2 && month <= 4 ) { for( i=3; i<=152; i++ ) { Data[i] = Excel.GetData(1,"AG"+i); Data1[i] = Excel.GetData(1,"AI"+i); Data2[i] = Excel.GetData(1,"AJ"+i); Data3[i] = Excel.GetData(1,"Z"+i);// 예상 주가 상승 마지노선 } } // 날짜 구분 if문 4번 끝 }// OnStart 함수 끝!! function Chart1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("시그널 수신"); Skind = IncompleteSignal.signalKind; // 완성 신호의 종류 Scout = IncompleteSignal.count; // 주문수량 Scode = IncompleteSignal.code; // 완성 신호의 종목코드 if( Skind == 1 && Start == 0 ) { Start = 1; Main.ReqMarketData(IncompleteSignal.code,300,60);// 약 1년 이상 데이터 생성 Main.MessageLog("종목 객체 생성"); } else if ( Skind == 2 ) { SellOrder(MarketData, Account); Main.MessageLog("매도 주문 함수 실행 완료"); } }// 시그널 함수 끝!! function Main_OnRcvMarketData(MarketData) { MarketCategory = MarketData.category; Current = MarketData.current; // 종목 현재가 for( i=3; i<=152; i++ ) { // 가치,제품,뉴스 점수 적용 if( Data[i] >= 75 && Data1[i] >= 75 ) { Main.MessageLog("가치 점수 확인"); N = MarketChart(MarketCategory,MarketData); //통합 수급차트 함수 호출 BuyOrder(MarketData, Account);// 주문 사용자 함수 호출 Main.MessageLog("매수 주문 함수 실행 완료"); break; } } }// 마켓데이터 수신 함수 끝!! 1. OnRiseIncompleteSignal로 계속 수신을 받으면서 OnRcvMarketData함수 안에 있는거를 적용할려고 하는데 오류는 없는데 계속~~~"시그널 수신" 메시지만 뜨네요.. 이게 시그널 수신을 계속 받으니깐 OnRcvMarketData함수를 실행하는데 방해하는건가요?? 2. OnRiseIncompleteSignal로 계속 수신을 받으면서 OnRcvMarketData함수 안에 있는거를 사용하고 싶은데 어떻게 해야 될까요??ㅠㅠㅠ
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-11-27 17:19:39

안녕하세요 예스스탁입니다. 아래내용 적용해 보시기 바랍니다. Obj에 저장된 객체는 디버깅창에 출력되는데 MarketData는 말씀하신 에러가 납니다. OnRcvMarketData에서 이벤트가 발생하면 해당 종목객체가 MarketData에 담겨져서 오는데 OnRcvMarketData이벤트안에서만 사용할수 있습니다. OnRcvMarketData안에서만 사용되는 지역변수에 값이 저장된다고 보시면 됩니다. 그러므로 아래식과 같이 특정 변수(전역)에 수신받은 종목객체를 저장해서 사용하셔야 합니다. 종목객체는 한번 수신되서 변수에 저장이 되면 해당 변수가 해당종목의 종목객체가 되고 실시간으로 자동 업데이트 됩니다. var Obj; function Main_OnStart() { Main.ReqMarketData("00000000", 0, 0); //연결선물지수 } function Main_OnRcvMarketData(MarketData) { Obj = MarketData; Main.SetTimer(1, 3000) } function Main_OnTimer(nEventID) { if (nEventID == 1) { Main.MessageList("Obj",Obj); Main.MessageList("MarketData",MarketData); } } 즐거운 하루되세요 > 클릭한번 님이 쓴 글입니다. > 제목 : 계속 시그널 수신.... > ////////////////// 변수 선언 생략 //////////////////////////// function Main_OnStart() { Main.MessageLog("프로그램 실행"); Start = 0; now = new Date(); //날짜 객체 생성 month = now.getMonth()+1; // 날짜 "월" 가져오기 Hours = now.getHours(); // 날짜 "시" 가져오기 Minutes = now.getMinutes(); // 날짜 "분" 가져오기 // 날짜 구분 if( month >= 5 && month <= 7 ) { for( i=3; i<=152; i++ ) { Data[i] = Excel.GetData(1,"AD"+i); Data1[i] = Excel.GetData(1,"AI"+i); Data2[i] = Excel.GetData(1,"AJ"+i); Data3[i] = Excel.GetData(1,"Z"+i);// 예상 주가 상승 마지노선 } } // 날짜 구분 if문 1번 끝 else if( month >= 8 && month <= 10 ) { for( i=3; i<=152; i++ ) { Data[i] = Excel.GetData(1,"AE"+i); Data1[i] = Excel.GetData(1,"AI"+i); Data2[i] = Excel.GetData(1,"AJ"+i); Data3[i] = Excel.GetData(1,"Z"+i);// 예상 주가 상승 마지노선 } } // 날짜 구분 if문 2번 끝 else if( (month >= 11 && month <= 12) || (month == 13) ) { for( i=3; i<=153; i++ ) { Data[i] = Excel.GetData(1,"A"+i); Data1[i] = Excel.GetData(1,"B"+i); } Main.MessageLog("날짜 분류 확인"); } // 날짜 구분 if문 3번 끝 else if( month >= 2 && month <= 4 ) { for( i=3; i<=152; i++ ) { Data[i] = Excel.GetData(1,"AG"+i); Data1[i] = Excel.GetData(1,"AI"+i); Data2[i] = Excel.GetData(1,"AJ"+i); Data3[i] = Excel.GetData(1,"Z"+i);// 예상 주가 상승 마지노선 } } // 날짜 구분 if문 4번 끝 }// OnStart 함수 끝!! function Chart1_OnRiseIncompleteSignal(IncompleteSignal) { Main.MessageLog("시그널 수신"); Skind = IncompleteSignal.signalKind; // 완성 신호의 종류 Scout = IncompleteSignal.count; // 주문수량 Scode = IncompleteSignal.code; // 완성 신호의 종목코드 if( Skind == 1 && Start == 0 ) { Start = 1; Main.ReqMarketData(IncompleteSignal.code,300,60);// 약 1년 이상 데이터 생성 Main.MessageLog("종목 객체 생성"); } else if ( Skind == 2 ) { SellOrder(MarketData, Account); Main.MessageLog("매도 주문 함수 실행 완료"); } }// 시그널 함수 끝!! function Main_OnRcvMarketData(MarketData) { MarketCategory = MarketData.category; Current = MarketData.current; // 종목 현재가 for( i=3; i<=152; i++ ) { // 가치,제품,뉴스 점수 적용 if( Data[i] >= 75 && Data1[i] >= 75 ) { Main.MessageLog("가치 점수 확인"); N = MarketChart(MarketCategory,MarketData); //통합 수급차트 함수 호출 BuyOrder(MarketData, Account);// 주문 사용자 함수 호출 Main.MessageLog("매수 주문 함수 실행 완료"); break; } } }// 마켓데이터 수신 함수 끝!! 1. OnRiseIncompleteSignal로 계속 수신을 받으면서 OnRcvMarketData함수 안에 있는거를 적용할려고 하는데 오류는 없는데 계속~~~"시그널 수신" 메시지만 뜨네요.. 이게 시그널 수신을 계속 받으니깐 OnRcvMarketData함수를 실행하는데 방해하는건가요?? 2. OnRiseIncompleteSignal로 계속 수신을 받으면서 OnRcvMarketData함수 안에 있는거를 사용하고 싶은데 어떻게 해야 될까요??ㅠㅠㅠ