use nano_strategy::signals::{Signal, SignalStrategy, SignalConfig};
use nano_core::traits::Strategy;
// Configure the signal strategy
let config = SignalConfig {
min_confidence: 0.6,
min_magnitude: 0.002,
confidence_scaling: true,
max_position_size: 1.0,
target_ticks: 15,
stop_ticks: 7,
};
// Create the strategy
let mut strategy = SignalStrategy::new(
"my_signal_strategy",
1, // instrument_id
config,
10, // order_size
100, // max_position
12.5, // tick_value
);
// Trading loop
loop {
// Extract features
let features = extract_features(&book)?;
// Generate signal from ML model
let prediction = model.predict(&features)?;
let signal = Signal::buy(
prediction.strength,
prediction.confidence,
Timestamp::now()
);
// Process signal and get orders
let orders = strategy.process_signal(&signal, &book);
// Submit orders
for order in orders {
execution_handler.submit_order(order)?;
}
// Handle fills
if let Some(fill) = execution_handler.next_fill() {
strategy.on_fill(&fill);
}
// Monitor performance
if let Some(last_signal) = strategy.last_signal() {
println!("Last signal: direction={}, confidence={:.2}",
last_signal.direction, last_signal.confidence);
}
println!("Position: {}, P&L: ${:.2}",
strategy.position(), strategy.pnl());
}