Manual Trade Entry System - User Guide

Overview

The Manual Trade Entry system allows you to manually inject trade opportunities that the bot will monitor and execute automatically, without waiting for normal signal generation. This is perfect for when you spot opportunities during manual market review that you don't want the bot to miss.

How It Works

🔄 Automatic Hot-Reload

  • Add entries to settings/manual_trade_symbols.yaml while the bot is running
  • Changes are picked up automatically within 30 seconds (next processing cycle)
  • No restart required!

🎯 Trade Execution Flow

  1. You add a trade entry to the YAML file
  2. Bot detects the new entry on next cycle (≤30 seconds)
  3. Bot validates:
    • Symbol exists in bot's trading list
    • No running orders for that symbol
    • Price conditions met (if threshold configured)
  4. Bot executes trade automatically
  5. Entry removed from YAML file after successful execution (prevents duplicates)

Configuration File Location

settings/manual_trade_symbols.yaml

Field Reference

Symbol (Required)

  • Trading pair in exchange-specific format
  • Examples: BTCUSDT, ETHUSDT, 1000PEPEUSDT
  • Must match exactly how it appears in your bot's symbol list

Price (Required)

  • 0 = Bot fetches and uses current market price (recommended)
  • > 0 = Use this specific price as entry reference
  • When set to 0, the bot will:
    • Fetch current market price
    • Update this field in the YAML with the fetched price
    • Use this price for threshold calculations on subsequent cycles

Direction (Required)

  • Long = Buy/long position
  • Short = Sell/short position

Amount (Required)

  • 0 = Use bot's default position sizing
  • > 0 = Override with specific amount (in quote currency)
  • Examples:
    • 1000.0 = $1000 position size
    • 2500.5 = $2500.50 position size

ExecuteThresholdPerfect (Required)

  • 0 = Execute immediately (no price movement required)
  • > 0 = Wait for price to move by this percentage before executing
  • For LONG positions: Waits for price to DROP by this %
  • For SHORT positions: Waits for price to RISE by this %

Timestamp (Optional)

  • Use null or omit the field entirely
  • Bot automatically sets this when processing the entry
  • Can be used in future for expiry validation

Usage Examples

Example 1: Immediate Entry (Spot an opportunity NOW)

Trades:
  - Symbol: 'BTCUSDT'
    Price: 0                      # Use current price
    Direction: Long               # Go long
    Amount: 0                     # Use default sizing
    ExecuteThresholdPerfect: 0    # Execute immediately
    Timestamp: null

Use Case: You spot BTC breaking out and want to enter now.


Example 2: Buy the Dip (5% pullback strategy)

Trades:
  - Symbol: 'ETHUSDT'
    Price: 0                      # Bot will fetch current price (e.g., $3000)
    Direction: Long
    Amount: 1000                  # $1000 position
    ExecuteThresholdPerfect: 5    # Wait for 5% drop (execute at ~$2850)
    Timestamp: null

Use Case: ETH looks strong but slightly overextended. You want to buy if it pulls back 5%.


Example 3: Aggressive Dip Buy (10% retracement)

Trades:
  - Symbol: '1000PEPEUSDT'
    Price: 0
    Direction: Long
    Amount: 2000                  # $2000 position
    ExecuteThresholdPerfect: 10   # Wait for 10% drop
    Timestamp: null

Use Case: PEPE is pumping hard. You want to accumulate if there's a significant pullback.


Example 4: Short the Pump (Wait for 3% rise)

Trades:
  - Symbol: 'SOLUSDT'
    Price: 0                      # Bot fetches current price (e.g., $100)
    Direction: Short              # Short position
    Amount: 1500
    ExecuteThresholdPerfect: 3    # Execute when price rises 3% (to ~$103)
    Timestamp: null

Use Case: SOL looks overextended. You want to short if it pumps another 3%.


Example 5: Multiple Entries at Different Levels

Trades:
  # Immediate entry
  - Symbol: 'BTCUSDT'
    Price: 0
    Direction: Long
    Amount: 500
    ExecuteThresholdPerfect: 0    # Enter now
    Timestamp: null

  # Add more on 5% dip
  - Symbol: 'BTCUSDT'
    Price: 0
    Direction: Long
    Amount: 1000
    ExecuteThresholdPerfect: 5    # Add to position on 5% dip
    Timestamp: null

  # Add even more on 10% dip
  - Symbol: 'BTCUSDT'
    Price: 0
    Direction: Long
    Amount: 1500
    ExecuteThresholdPerfect: 10   # Heavy accumulation on 10% dip
    Timestamp: null

Use Case: Dollar-cost averaging into BTC at multiple price levels.


Important Notes

DO's

  • ✅ Keep the file valid YAML (proper indentation, no syntax errors)
  • ✅ Use null for Timestamp (not None)
  • ✅ Use Long or Short for Direction (not 0 or 1)
  • ✅ Verify symbol names match your exchange format exactly
  • ✅ Wait at least 30 seconds after adding entries for bot to pick them up

DON'Ts

  • ❌ Don't use None for Timestamp (use null or omit it)
  • ❌ Don't use 0 or 1 for Direction (use Long or Short)
  • ❌ Don't add entries for symbols the bot isn't monitoring
  • ❌ Don't edit the file while bot is saving (rare race condition risk)

🔒 Safety Features

  • No duplicate executions: Entries are removed after execution
  • No conflicts: Won't execute if symbol already has running orders
  • Price validation: Automatically fetches and updates prices when set to 0
  • Timestamp tracking: Bot tracks when each entry was created

📊 Monitoring

Check the logs to see when entries are processed:

  • logs/orders.YYYY-MM-DD.log - All trade executions (JSON format)
  • logs/trade_summary.YYYY-MM-DD.log - High-level summaries
  • logs/debug.YYYY-MM-DD.log - Detailed processing (if debug mode enabled)

Workflow Example

Step 1: You're reviewing charts and spot ETHUSDT breaking resistance

# Add to manual_trade_symbols.yaml
Trades:
  - Symbol: 'ETHUSDT'
    Price: 0
    Direction: Long
    Amount: 1000
    ExecuteThresholdPerfect: 0
    Timestamp: null

Step 2: Save the file (bot still running)

Step 3: Within 30 seconds, bot will:

  • Load the file
  • Fetch current ETH price (e.g., $3000)
  • Update Price field to 3000 in the YAML
  • Set Timestamp to current time
  • Check if ETHUSDT bot has no running orders
  • Execute the trade
  • Remove the entry from YAML

Step 4: Check logs to confirm execution

✅ Trade executed successfully for ETHUSDT
💾 Manual trades config updated and saved (executed trades removed)

Pro Tips

💡 For volatile markets: Use higher thresholds (10-20%) to catch better entries

💡 For immediate opportunities: Use ExecuteThresholdPerfect: 0 and Amount: 0 for quick entries with standard sizing

💡 For scaling in: Add multiple entries with increasing thresholds for the same symbol

💡 For risk management: Use specific amounts instead of 0 to control position sizes precisely

💡 For multiple symbols: Group similar strategies together in the YAML for easier management


Remember: This system is designed to complement your manual analysis, not replace it. Use it wisely to capture opportunities the bot might miss during its normal signal generation cycles! 🚀

📎 Related Topics