feat: WBS-5.3 일일 타이머 트리거 설정 함수 추가
- gdf_06_rebalance.gs: setupDailyRunAllTrigger() 추가 * 매일 16:00 KST run_all 자동 실행 타이머 트리거 등록 * 중복 트리거 자동 삭제 (재실행 시 안전) * listTriggers() 검증 함수 포함 * 사용: GAS 편집기에서 setupDailyRunAllTrigger() 1회 수동 실행 - docs/ROADMAP_WBS.md: WBS-5.3 완료 표시 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -417,3 +417,47 @@ function _rbLimitPrice_(close, action) {
|
||||
if (close <= 0) return 0;
|
||||
return action === "SELL" ? Math.round(close * (1 - RB_LIMIT_PRICE_DISCOUNT)) : Math.round(close);
|
||||
}
|
||||
|
||||
// ── WBS-5.3 일일 자율 실행 타이머 트리거 설정 ─────────────────────────────────
|
||||
|
||||
/**
|
||||
* setupDailyRunAllTrigger()
|
||||
* GAS 편집기에서 수동 1회 실행 → 매일 16:30 run_all 타이머 트리거 등록.
|
||||
* 중복 트리거 방지: 동일 함수명 트리거가 존재하면 먼저 삭제.
|
||||
*/
|
||||
function setupDailyRunAllTrigger() {
|
||||
const TARGET_FN = "run_all";
|
||||
const TRIGGER_HOUR = 16; // 오후 4시 (장 마감 30분 후)
|
||||
|
||||
// 기존 동일 함수 트리거 삭제 (중복 방지)
|
||||
ScriptApp.getProjectTriggers().forEach(t => {
|
||||
if (t.getHandlerFunction() === TARGET_FN) {
|
||||
ScriptApp.deleteTrigger(t);
|
||||
Logger.log("[WBS-5.3] 기존 트리거 삭제: " + TARGET_FN);
|
||||
}
|
||||
});
|
||||
|
||||
// 일일 타이머 트리거 등록 (매일 16:00~17:00 사이 실행)
|
||||
ScriptApp.newTrigger(TARGET_FN)
|
||||
.timeBased()
|
||||
.atHour(TRIGGER_HOUR)
|
||||
.everyDays(1)
|
||||
.inTimezone("Asia/Seoul")
|
||||
.create();
|
||||
|
||||
Logger.log("[WBS-5.3] 일일 트리거 등록 완료: " + TARGET_FN + " @ " + TRIGGER_HOUR + ":00 KST");
|
||||
}
|
||||
|
||||
/**
|
||||
* listTriggers()
|
||||
* 현재 등록된 모든 트리거 목록 출력 (검증용).
|
||||
*/
|
||||
function listTriggers() {
|
||||
ScriptApp.getProjectTriggers().forEach(t => {
|
||||
Logger.log(
|
||||
"trigger: fn=" + t.getHandlerFunction() +
|
||||
" type=" + t.getEventType() +
|
||||
" source=" + t.getTriggerSource()
|
||||
);
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user