65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { apiRequest } from "@/lib/queryClient";
|
|
|
|
export type StrategyFrequencyUnit = "days" | "minutes";
|
|
|
|
export type StrategyStartRequest = {
|
|
strategy_name: string;
|
|
sip_amount: number;
|
|
sip_frequency: {
|
|
value: number;
|
|
unit: StrategyFrequencyUnit;
|
|
};
|
|
mode: "LIVE" | "PAPER";
|
|
initial_cash?: number;
|
|
};
|
|
|
|
export type StrategyActionResponse = {
|
|
status: string;
|
|
run_id?: string | null;
|
|
message?: string;
|
|
redirect_url?: string | null;
|
|
broker?: string | null;
|
|
warning?: string;
|
|
};
|
|
|
|
export type StrategyStatusResponse = {
|
|
status?: string;
|
|
last_updated?: string | null;
|
|
last_execution_ts?: string | null;
|
|
next_eligible_ts?: string | null;
|
|
run_id?: string | null;
|
|
can_resume?: boolean;
|
|
can_restart?: boolean;
|
|
config?: {
|
|
strategy?: string | null;
|
|
sip_amount?: number | null;
|
|
sip_frequency?: {
|
|
value?: number | null;
|
|
unit?: StrategyFrequencyUnit | null;
|
|
} | null;
|
|
mode?: string | null;
|
|
broker?: string | null;
|
|
active?: boolean | null;
|
|
} | null;
|
|
};
|
|
|
|
export async function startStrategy(data: StrategyStartRequest): Promise<StrategyActionResponse> {
|
|
const res = await apiRequest("POST", "/strategy/start", data);
|
|
return res.json();
|
|
}
|
|
|
|
export async function stopStrategy(): Promise<StrategyActionResponse> {
|
|
const res = await apiRequest("POST", "/strategy/stop");
|
|
return res.json();
|
|
}
|
|
|
|
export async function resumeStrategy(): Promise<StrategyActionResponse> {
|
|
const res = await apiRequest("POST", "/strategy/resume");
|
|
return res.json();
|
|
}
|
|
|
|
export async function getStrategyStatus(): Promise<StrategyStatusResponse> {
|
|
const res = await apiRequest("GET", "/strategy/status");
|
|
return res.json();
|
|
}
|