커뮤니티

예스스팟 편집기가 켜져있냐 꺼져있냐에 따라 실행결과가 다릅니다.

프로필 이미지
오전만트레이딩
2025-12-20 18:38:27
69
글번호 229231
답변완료

코딩을 몰라서 AI와 대화해서 겨우겨우 코드를 다 짰는데 프로그램이 될 때도 있고 안될때도 있어서 의아했습니다.

코드는 아래와 같습니다.

image.png

// =========================================================

// [텍스트 버전] 연결 실패 경고 기능 추가

// =========================================================

var CHECK_INTERVAL = 1000;

var last_count = -1;

function Main_OnStart()

{

Main.MessageList("시스템 시작 (DB 연결 시도중...)");

// 1. 초기 데이터 개수 파악

var sql = "COUNT(*) FROM trade_signals";

var cond = DataBase1.Select(sql, "TradingDB");

if (cond == true)

{

try {

DataBase1.MoveFirst();

var cnt = DataBase1.GetFieldValue(0);

if (!isNaN(cnt)) {

last_count = Number(cnt);

Main.MessageList("DB 연결 성공. 현재 데이터: " + last_count + "개");

Main.MessageList("실시간 감시를 시작합니다.");

}

} catch (e) {

Main.MessageList("초기 데이터 읽기 오류 (0개로 설정)");

last_count = 0;

}

// 연결 성공 시에만 타이머 시작

Main.SetTimer(1, CHECK_INTERVAL);

}

else

{

// ★ 여기가 문제입니다. 이 메시지가 뜨면 ODBC 연결 설정 확인이 필요합니다.

Main.MessageList("[오류] DB 연결 실패. DSN 이름(tradingdb)을 확인하세요.");

Main.MessageList("타이머가 시작되지 않았습니다.");

}

}

image.png

1번은 스팟편집기 실행 -> 전략 실행(성공) -> 편집기 종료 -> 연결 끊김(실패)

2번은 스팟편집기 종료된 채로 전략 실행(실패)

3번은 스팟편집기 실행 후 전략 실행(성공)

스팟 편집기 유무에 따라 전략실행이 좌우되는게 맞는지 뭔가 잘못된건지 궁금해서 글을 올립니다.

답변 1
프로필 이미지

예스스탁 예스스탁 답변

2025-12-24 09:32:02

안녕하세요 예스스탁입니다. var cond = DataBase1.Select(sql, "TradingDB"); 탭타이틀이 지정되면 해당 값은 편집기의 실행결과창에 표시를 하게 되는데 편집기가 실행되어 있지 않으면 해당 함수가 false를 리턴하게 됩니다. 실행결과창에 출력은 확인 용도이므로 필요시에는 이름을 지정하시고 편집기를 실행해 출력하시고 불필요시에는 해당 타이틀을 지정을 삭제하시면 됩니다. 즐거운 하루되세요