가상매매 시간봉 제거
This commit is contained in:
@@ -39,6 +39,8 @@ export interface VirtualTargetLiveState {
|
||||
export function useVirtualTargetLiveStatus(
|
||||
targets: TargetRef[],
|
||||
running: boolean,
|
||||
/** 전략 지정만 된 상태에서도 STOMP·pin으로 업비트 틱 수신 (지표 warm-up 보조) */
|
||||
eagerConnect = true,
|
||||
): VirtualTargetLiveState {
|
||||
const [byMarket, setByMarket] = useState<Record<string, VirtualLiveStatus>>({});
|
||||
const [lastTickAtByMarket, setLastTickAtByMarket] = useState<Record<string, number>>({});
|
||||
@@ -57,7 +59,7 @@ export function useVirtualTargetLiveStatus(
|
||||
|
||||
const recomputeStatus = (market: string) => {
|
||||
const s = stateRef.current[market];
|
||||
if (!s || !running) return;
|
||||
if (!s) return;
|
||||
const now = Date.now();
|
||||
if (s.lastTickAt != null && now - s.lastTickAt <= STALE_MS) {
|
||||
if (s.status !== 'live') patchMarket(market, { status: 'live' });
|
||||
@@ -71,17 +73,18 @@ export function useVirtualTargetLiveStatus(
|
||||
};
|
||||
|
||||
useEffect(() => {
|
||||
if (!running) {
|
||||
const activeMarkets = targets
|
||||
.filter(t => t.strategyId != null)
|
||||
.map(t => t.market);
|
||||
|
||||
const active = running || (eagerConnect && activeMarkets.length > 0);
|
||||
if (!active) {
|
||||
stateRef.current = {};
|
||||
setByMarket({});
|
||||
setLastTickAtByMarket({});
|
||||
return;
|
||||
}
|
||||
|
||||
const activeMarkets = targets
|
||||
.filter(t => t.strategyId != null)
|
||||
.map(t => t.market);
|
||||
|
||||
for (const market of activeMarkets) {
|
||||
if (!stateRef.current[market]) {
|
||||
stateRef.current[market] = { status: 'connecting', lastTickAt: null };
|
||||
@@ -129,7 +132,7 @@ export function useVirtualTargetLiveStatus(
|
||||
offConn();
|
||||
clearInterval(staleId);
|
||||
};
|
||||
}, [targets, running]);
|
||||
}, [targets, running, eagerConnect]);
|
||||
|
||||
return { statusByMarket: byMarket, lastTickAtByMarket };
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user