@@ -81,6 +81,42 @@ cmd_predict() {
8181 run_py " ${ROOT_DIR} /main.py" buddy --config " ${CONFIG_FILE} " --granularity " ${granularity} " " ${inst_args[@]+" ${inst_args[@]} " } " " ${args[@]+" ${args[@]} " } "
8282}
8383
84+ cmd_chat () {
85+ local granularity=" M5"
86+ local instrument=" "
87+ local args=()
88+
89+ # Default Buddy chat to planner mode unless the user explicitly overrides it.
90+ export BUDDY_CHAT_MODE=" ${BUDDY_CHAT_MODE:- planner} "
91+
92+ if [[ $# -gt 0 && ! " $1 " =~ ^- ]]; then
93+ instrument=" $1 "
94+ shift
95+ fi
96+
97+ while [[ $# -gt 0 ]]; do
98+ case " $1 " in
99+ -i|--instrument) instrument=" $2 " ; shift 2 ;;
100+ -g|--granularity) granularity=" $2 " ; shift 2 ;;
101+ -c|--candles) args+=(--candles " $2 " ); shift 2 ;;
102+ -x|--execute) args+=(--execute); shift ;;
103+ --no-execute) args+=(--no-execute); shift ;;
104+ --dry-run) args+=(--dry-run); shift ;;
105+ -v|--verbose) args+=(--verbose); shift ;;
106+ --model-path) args+=(--model-path " $2 " ); shift 2 ;;
107+ --all-features) args+=(--all-features); shift ;;
108+ --no-all-features) args+=(--no-all-features); shift ;;
109+ * ) args+=(" $1 " ); shift ;;
110+ esac
111+ done
112+
113+ local inst_args=()
114+ if [[ -n " ${instrument} " ]]; then
115+ inst_args=(--instrument " ${instrument} " )
116+ fi
117+ run_py " ${ROOT_DIR} /main.py" buddy-chat --config " ${CONFIG_FILE} " --granularity " ${granularity} " " ${inst_args[@]+" ${inst_args[@]} " } " " ${args[@]+" ${args[@]} " } "
118+ }
119+
84120cmd_train () {
85121 local granularity=" H1" # Default to H1 to match config_improved_H1.yaml
86122 local args=()
@@ -184,7 +220,16 @@ cmd_monitor() {
184220 run_py " ${ROOT_DIR} /main.py" monitor --config " ${CONFIG_FILE} " " ${args[@]+" ${args[@]} " } "
185221}
186222
187- cmd_status () { run_py " ${ROOT_DIR} /main.py" model-status --config " ${CONFIG_FILE} " ; }
223+ cmd_status () {
224+ local args=()
225+ while [[ $# -gt 0 ]]; do
226+ case " $1 " in
227+ --decisions) args+=(--decisions); shift ;;
228+ * ) args+=(" $1 " ); shift ;;
229+ esac
230+ done
231+ run_py " ${ROOT_DIR} /main.py" model-status --config " ${CONFIG_FILE} " " ${args[@]+" ${args[@]} " } "
232+ }
188233cmd_promote () { run_py " ${ROOT_DIR} /main.py" promote-model --config " ${CONFIG_FILE} " ; }
189234cmd_loop () { run_py " ${ROOT_DIR} /main.py" buddy --config " ${CONFIG_FILE} " --loop --candles 2000; }
190235
@@ -225,6 +270,7 @@ main() {
225270 local cmd=" $1 " ; shift
226271 case " ${cmd} " in
227272 predict|p) cmd_predict " $@ " ;;
273+ chat|c|buddy-chat) cmd_chat " $@ " ;;
228274 train|t) cmd_train " $@ " ;;
229275 train-joint|tj) cmd_train_joint " $@ " ;;
230276 retrain-all|ra) cmd_retrain_all " $@ " ;;
@@ -233,7 +279,7 @@ main() {
233279 test) cmd_test " $@ " ;;
234280 journal|j) cmd_journal " $@ " ;;
235281 find|f) cmd_find " $@ " ;;
236- status|s) cmd_status ;;
282+ status|s) cmd_status " $@ " ;;
237283 promote) cmd_promote ;;
238284 loop|l) cmd_loop ;;
239285 monitor|m) cmd_monitor " $@ " ;;
@@ -242,6 +288,7 @@ Buddy v2.2.0 - FX Trading Assistant
242288
243289COMMANDS:
244290 predict [PAIR] [-x] Run prediction (default), -x to execute trade
291+ chat [PAIR] Start Buddy conversational chat REPL
245292 train -i PAIR Train models for instrument
246293 train-joint Train all scanner pairs jointly (default: 15 pairs)
247294 retrain-all Retrain all pairs
@@ -250,7 +297,7 @@ COMMANDS:
250297 test Run test prediction
251298 journal [-u] [-d N] View/update trade journal
252299 monitor Show monitoring dashboard and alerts
253- status Show model status
300+ status [--decisions] Show model status
254301 loop Run continuous prediction loop
255302
256303OPTIONS:
@@ -274,6 +321,8 @@ MONITOR OPTIONS:
274321
275322EXAMPLES:
276323 ./bin/Buddy EUR_USD # Predict EUR/USD
324+ ./bin/Buddy chat EUR_USD # Start Buddy chat on EUR/USD
325+ ./bin/Buddy status --decisions # Show persisted trade/no-trade decisions
277326 ./bin/Buddy EUR_USD -x # Predict and execute
278327 ./bin/Buddy train -i EUR_USD # Train model for EUR/USD
279328 ./bin/Buddy train-joint # Train all 15 scanner pairs
0 commit comments