Order Management & Validation Guide

๐Ÿ“‹ Overview

RedFox Copier Pro includes sophisticated order management to prevent duplicates, validate orders before execution, and enforce risk limits. This ensures clean, controlled trading without manual intervention.

Key Features:

  • Duplicate order prevention (same symbol/direction)

  • Order validation (SL/TP/lot size checks)

  • Position limits (max orders per symbol/total)

  • Pending order management

  • Risk exposure limits


๐Ÿ”’ Duplicate Prevention

1. AllowDuplicateOrders

AllowDuplicateOrders = true | false

Controls whether multiple orders on same symbol/direction are allowed.


Behavior: Blocks new orders if existing order on same symbol + direction exists.

Example:

Current Orders:
- EURUSD BUY @ 1.0850 (open)

New Signal: EURUSD BUY @ 1.0860
Result: โš ๏ธ Blocked
EA Logs: "Duplicate order detected - EURUSD BUY already exists"

When to use:

  • Signal provider sends same signal multiple times

  • Prevent over-exposure on one symbol/direction

  • Clean trading with one position per direction

Pros:

  • โœ… Prevents accidental duplicate positions

  • โœ… Controls risk exposure

  • โœ… Cleaner order management

Cons:

  • โŒ Can't add to winning positions (pyramiding)

  • โŒ Misses additional signals on same direction


true (Allow Duplicates)

Behavior: Opens every signal regardless of existing orders.

Example:

Current Orders:
- EURUSD BUY @ 1.0850 (open)

New Signal: EURUSD BUY @ 1.0860
Result: โœ… Opens new order
Now have: 2 EURUSD BUY orders

When to use:

  • Pyramiding strategy (add to winners)

  • Layer orders feature enabled

  • Signal provider rarely duplicates

Warning: Can lead to over-exposure if not controlled with position limits!


๐Ÿ“Š Position Limits

2. MaxOrdersPerSymbol

MaxOrdersPerSymbol = 0  // 0 = unlimited, >0 = max orders per symbol

Controls maximum orders on each symbol (both directions combined).

Example with MaxOrdersPerSymbol = 2:

Current Orders:
- GBPUSD BUY @ 1.2700
- GBPUSD SELL @ 1.2750

New Signal: GBPUSD BUY @ 1.2680
Result: โš ๏ธ Blocked
EA Logs: "Max orders per symbol reached (2/2) - GBPUSD"

Configuration Examples:

Conservative (1 order):

MaxOrdersPerSymbol = 1
AllowDuplicateOrders = false
// Result: Only 1 position per symbol (BUY or SELL)

Moderate (3 orders):

MaxOrdersPerSymbol = 3
AllowDuplicateOrders = true
// Result: Up to 3 orders per symbol

Aggressive (10 orders):

MaxOrdersPerSymbol = 10
// Result: Multiple positions, pyramiding allowed

Unlimited:

MaxOrdersPerSymbol = 0
// Result: No limit (use with caution!)

When to use:

  • Prevent over-concentration on one symbol

  • Limit risk per instrument

  • Professional risk management


3. MaxTotalOrders

MaxTotalOrders = 0  // 0 = unlimited, >0 = max total orders across all symbols

Controls maximum total orders across entire account.

Example with MaxTotalOrders = 10:

Current Orders:
- EURUSD BUY
- GBPUSD SELL
- XAUUSD BUY
... (total: 10 orders)

New Signal: USDJPY BUY
Result: โš ๏ธ Blocked
EA Logs: "Max total orders reached (10/10)"

Configuration by Account Size:

Small Account ($500-$2,000):

MaxTotalOrders = 5
// Reason: Limited margin, focus on quality

Medium Account ($2,000-$10,000):

MaxTotalOrders = 15
// Reason: More capacity, diversification

Large Account ($10,000+):

MaxTotalOrders = 30
// Reason: Professional diversification

Why use this?

  • Margin management (prevent margin call)

  • Focus on best signals only

  • Reduce complexity

  • Server performance (too many orders = lag)


4. MaxOrdersPerDirection

MaxOrdersPerDirection = 0  // Max orders per direction (BUY or SELL) per symbol

Controls maximum orders per symbol AND direction.

Example with MaxOrdersPerDirection = 2:

MaxOrdersPerDirection = 2
AllowDuplicateOrders = true

Current: EURUSD BUY (2 orders)
New Signal: EURUSD BUY
Result: โš ๏ธ Blocked ("Max orders per direction reached - EURUSD BUY")

New Signal: EURUSD SELL
Result: โœ… Allowed (different direction)

Strategy Example (Hedging):

MaxOrdersPerSymbol = 6
MaxOrdersPerDirection = 3
AllowDuplicateOrders = true

// Can have: 3 BUY + 3 SELL on same symbol = 6 total

โœ… Order Validation

5. MinLot / MaxLot

MinLot = 0.01  // Minimum lot size
MaxLot = 10.0  // Maximum lot size (per order)

Purpose: Validate calculated lot size before opening order.

Example:

MinLot = 0.01
MaxLot = 0.50

Scenario 1: Calculated lot = 0.005
Result: โš ๏ธ Adjusted to 0.01 (minimum)

Scenario 2: Calculated lot = 0.25
Result: โœ… Accepted

Scenario 3: Calculated lot = 1.50
Result: โš ๏ธ Adjusted to 0.50 (maximum)

When to adjust:

Broker Limits:

ECN Broker: MinLot = 0.01, MaxLot = 100
Standard Broker: MinLot = 0.10, MaxLot = 50
Cent Account: MinLot = 0.01, MaxLot = 1000

Risk Management:

Conservative: MaxLot = 0.20
Moderate: MaxLot = 0.50
Aggressive: MaxLot = 2.0

Note: This limit is per order. If you open 3 orders per signal (3 TP levels), each can be up to MaxLot.


6. MinSLPips / MaxSLPips

MinSLPips = 5    // Minimum SL distance
MaxSLPips = 500  // Maximum SL distance

(Covered in SL/TP Configuration doc - see 03_SL_TP_CONFIGURATION.md)

Purpose: Reject orders with SL outside acceptable range.

Example:

MinSLPips = 10
MaxSLPips = 200

Signal: GBPUSD BUY, SL = 5 pips
Result: โš ๏ธ Rejected ("SL too tight - 5 pips < minimum 10 pips")

Signal: EURUSD BUY, SL = 300 pips
Result: โš ๏ธ Rejected ("SL too wide - 300 pips > maximum 200 pips")

7. SkipOrderWithoutTP

SkipOrderWithoutTP = true | false

Purpose: Enforce TP requirement on all orders.

When true (Recommended):

Signal: XAUUSD BUY @ 2650, SL: 2630, TP: (none)
Result: โš ๏ธ Skipped
EA Logs: "Order skipped - No TP level found"

When false:

Signal: XAUUSD BUY @ 2650, SL: 2630, TP: (none)
Result: โœ… Opens without TP (manual exit required)

When to use:

  • true: Automated trading, no manual intervention

  • false: You manually manage exits via Telegram commands


โฑ๏ธ Pending Orders Management

8. AllowPendingOrders

AllowPendingOrders = true | false

Controls whether EA opens pending orders (Buy Stop, Sell Limit, etc.).


true (Allow Pending Orders)

Behavior: Opens pending orders when signal specifies entry price.

Signal Example:

๐Ÿ“Š EURUSD BUY STOP @ 1.0900
Current Price: 1.0850
SL: 1.0850
TP: 1.0950

EA Action:

Opens: Buy Stop pending order @ 1.0900
Triggers when: Price reaches 1.0900

When to use:

  • Signal provider sends breakout strategies

  • Want automated entry at specific levels

  • Professional pending order strategies


false (Block Pending Orders)

Behavior: Skips all pending order signals.

Signal Example:

GBPUSD SELL LIMIT @ 1.2800 (pending)

EA Action:

โš ๏ธ Skipped
EA Logs: "Pending orders are disabled"

When to use:

  • Only want market execution

  • Don't trust pending order signals

  • Reduce complexity


9. TimeOrderNext

TimeOrderNext = 10  // Seconds to wait between orders on same symbol

Purpose: Prevent rapid-fire duplicate orders from signal provider.

Example with TimeOrderNext = 10:

10:00:00 - EURUSD BUY signal โ†’ โœ… Opens
10:00:03 - EURUSD BUY signal โ†’ โš ๏ธ Blocked ("Too soon, wait 7 more seconds")
10:00:15 - EURUSD BUY signal โ†’ โœ… Opens (10 seconds passed)

Configuration:

Strict (30 seconds):

TimeOrderNext = 30
// Prevents signal spam effectively

Moderate (10 seconds):

TimeOrderNext = 10
// Balance between protection and responsiveness

Permissive (3 seconds):

TimeOrderNext = 3
// Quick signals allowed

Disabled:

TimeOrderNext = 0
// No time restriction (risky!)

When to use:

  • Signal provider sometimes duplicates

  • Telegram connectivity issues cause message repeats

  • Protect against network glitches


๐ŸŽฏ Risk Exposure Validation

10. MaxRiskPerTrade

MaxRiskPerTrade = 1.0  // Maximum % of balance to risk per trade

(Covered in Lot Size & Risk Management doc - see 01_LOT_SIZE_AND_RISK_MANAGEMENT.md)

Purpose: Limit risk amount per order.

Example:

Balance: $10,000
MaxRiskPerTrade: 2%
Max Risk Amount: $200 per order

Signal: GBPUSD BUY, SL 100 pips
Calculated lot: 0.25 (risks $250)
Result: โš ๏ธ Adjusted to 0.20 lot (risks $200)

11. MaxTotalRiskPercent

MaxTotalRiskPercent = 10.0  // Maximum % of balance at risk across all orders

Purpose: Limit total exposure across all open orders.

Example:

Balance: $10,000
MaxTotalRiskPercent: 10%
Max Total Risk: $1,000

Current Orders:
- EURUSD: Risking $300
- GBPUSD: Risking $400
- XAUUSD: Risking $250
Total Risk: $950

New Signal: USDJPY (would risk $200)
Result: โš ๏ธ Blocked ("Total risk would exceed 10% limit")

Configuration:

Conservative:

MaxTotalRiskPercent = 5%
MaxRiskPerTrade = 1%
// Max 5 trades at once (5 ร— 1% = 5%)

Moderate:

MaxTotalRiskPercent = 10%
MaxRiskPerTrade = 1%
// Max 10 trades at once

Aggressive:

MaxTotalRiskPercent = 20%
MaxRiskPerTrade = 2%
// Max 10 trades at once (10 ร— 2% = 20%)

Why important:

  • Prevents over-exposure during high signal volume

  • Drawdown protection

  • Forces position selectivity


๐Ÿ’ผ Real-World Configuration Examples

Example 1: Conservative Single Position

Goal: Only one position per symbol, strict limits.

Configuration:

AllowDuplicateOrders = false
MaxOrdersPerSymbol = 1
MaxTotalOrders = 5
MaxRiskPerTrade = 1%
MaxTotalRiskPercent = 5%
TimeOrderNext = 30
SkipOrderWithoutTP = true

Result:

  • Max 5 symbols traded

  • 1 position per symbol

  • 1% risk each = 5% total exposure

  • No duplicates possible


Example 2: Pyramiding Strategy

Goal: Add to winners, up to 3 positions per symbol.

Configuration:

AllowDuplicateOrders = true
MaxOrdersPerSymbol = 3
MaxOrdersPerDirection = 3
MaxTotalOrders = 15
MaxRiskPerTrade = 1%
MaxTotalRiskPercent = 15%
TimeOrderNext = 60

Result:

  • Can open 3 BUY + 3 SELL per symbol = 6 total per symbol

  • Up to 15 total orders (5 symbols ร— 3 orders)

  • Each risks 1%, max 15% total exposure


Example 3: High Volume Trading

Goal: Trade many signals, diversified portfolio.

Configuration:

AllowDuplicateOrders = false
MaxOrdersPerSymbol = 2
MaxTotalOrders = 30
MaxRiskPerTrade = 0.5%
MaxTotalRiskPercent = 10%
TimeOrderNext = 5

Result:

  • Up to 30 orders (15 symbols ร— 2)

  • Low risk per trade (0.5%)

  • Controlled total exposure (10%)


Example 4: Strict Risk Management

Goal: Absolute control, no exceptions.

Configuration:

AllowDuplicateOrders = false
MaxOrdersPerSymbol = 1
MaxOrdersPerDirection = 1
MaxTotalOrders = 8
MaxRiskPerTrade = 1%
MaxTotalRiskPercent = 8%
MinLot = 0.01
MaxLot = 0.30
MinSLPips = 10
MaxSLPips = 150
SkipOrderWithoutTP = true
TimeOrderNext = 60

Result:

  • Every limit enforced

  • Maximum protection

  • Clean, controlled trading


Example 5: Aggressive Scalping

Goal: Many quick trades, accept more orders.

Configuration:

AllowDuplicateOrders = true
MaxOrdersPerSymbol = 5
MaxTotalOrders = 50
MaxRiskPerTrade = 0.5%
MaxTotalRiskPercent = 15%
TimeOrderNext = 3
AllowPendingOrders = false

Result:

  • High frequency trading

  • Many small positions

  • Market orders only

  • Fast execution


โš ๏ธ Common Mistakes

โŒ Mistake 1: Unlimited Everything

Bad:

AllowDuplicateOrders = true
MaxOrdersPerSymbol = 0  // Unlimited!
MaxTotalOrders = 0      // Unlimited!
MaxTotalRiskPercent = 0 // No limit!

Risk: 50+ orders on one symbol, 100% account risk, margin call!

Good:

Set ALL limits appropriately based on account size

โŒ Mistake 2: Conflicting Settings

Bad:

AllowDuplicateOrders = false  // Block duplicates
MaxOrdersPerSymbol = 5         // But allow 5 per symbol?
// Conflict: Can only have 1 per direction, so max 2 total (BUY + SELL)

Good:

AllowDuplicateOrders = true
MaxOrdersPerSymbol = 5
// Now makes sense: Up to 5 orders per symbol

โŒ Mistake 3: No Time Buffer

Bad:

TimeOrderNext = 0
// Result: Signal repeats โ†’ 10 duplicate orders in 1 second

Good:

TimeOrderNext = 10-30

โŒ Mistake 4: MaxLot Too High

Bad:

Balance: $1,000
MaxLot = 10.0
// Result: One order risks entire account + margin call

Good:

Balance: $1,000
MaxLot = 0.10-0.20  // Proportional to account

โŒ Mistake 5: Ignoring Total Risk

Bad:

MaxRiskPerTrade = 2%
MaxTotalOrders = 50
MaxTotalRiskPercent = 0  // No total limit!
// Result: 50 ร— 2% = 100% risk possible!

Good:

MaxRiskPerTrade = 2%
MaxTotalOrders = 10
MaxTotalRiskPercent = 20%  // Enforces 2% ร— 10 = 20% max

โœ… Best Practices

โœ… 1. Always Set All Limits

Minimum required:

MaxOrdersPerSymbol = (value)
MaxTotalOrders = (value)
MaxLot = (value)
MaxTotalRiskPercent = (value)
TimeOrderNext = (value > 0)

โœ… 2. Start Conservative

First week:

MaxTotalOrders = 5
MaxRiskPerTrade = 0.5%
MaxTotalRiskPercent = 2.5%

Then gradually increase if comfortable.

โœ… 3. Match Account Size

Account Size
Max Total Orders
Max Risk/Trade
Max Total Risk

$500-$2K

5

1%

5%

$2K-$10K

10-15

1-2%

10-15%

$10K+

20-30

1-2%

15-20%

โœ… 4. Test Configuration

  • Run on demo for 2 weeks

  • Monitor order count, exposure, behavior

  • Adjust limits based on signal frequency

โœ… 5. Document Your Limits

Configuration Notes:
Date: 2024-10-28
MaxTotalOrders: 10 (account size: $5,000)
MaxOrdersPerSymbol: 2 (diversification)
MaxTotalRiskPercent: 10% (conservative)
Review Date: 2024-11-15

๐Ÿ” EA Logging Examples

Order Accepted:

========== ORDER VALIDATION PASSED ==========
Symbol: EURUSD
Direction: BUY
Lot: 0.15
SL: 50 pips (within 5-200 range)
TP: 100 pips
Risk: $150 (1.5% of balance)
Total Risk: $450 (4.5% of balance)
Orders on EURUSD: 1/3
Total Orders: 5/15
==============================================

Order Rejected (Duplicate):

โš ๏ธ ORDER REJECTED: Duplicate order
Symbol: GBPUSD BUY
Reason: AllowDuplicateOrders = false
Existing order: GBPUSD BUY #12345678

Order Rejected (Position Limit):

โš ๏ธ ORDER REJECTED: Position limit reached
Symbol: XAUUSD
Current orders on XAUUSD: 3/3 (MaxOrdersPerSymbol)

Order Rejected (Total Risk):

โš ๏ธ ORDER REJECTED: Total risk limit
Current Total Risk: $950 (9.5%)
This Order Would Risk: $100
Total Would Be: $1,050 (10.5%)
MaxTotalRiskPercent: 10%

๐Ÿ“Š Monitoring Your Orders

Telegram Command:

/status

EA Response:

๐Ÿ“Š ACCOUNT STATUS
Balance: $10,000
Total Orders: 8/15
Total Risk: $720 (7.2%)

EURUSD: 2 orders (BUY, SELL)
GBPUSD: 1 order (BUY)
XAUUSD: 3 orders (BUYร—2, SELLร—1)
USDJPY: 2 orders (SELLร—2)

Max Total Risk: 10%
Available Risk: $280 (2.8%)

๐Ÿš€ Quick Start Guide

Step 1: Determine Your Risk Profile

Conservative: Smaller limits, strict validation Aggressive: Higher limits, more flexibility

Step 2: Set Core Limits

// Position Limits
MaxTotalOrders = ?
MaxOrdersPerSymbol = ?

// Risk Limits
MaxRiskPerTrade = ?
MaxTotalRiskPercent = ?

// Lot Limits
MaxLot = ?

Step 3: Configure Duplicate Handling

AllowDuplicateOrders = ?
TimeOrderNext = ?

Step 4: Enable Validation

MinSLPips = 10
MaxSLPips = 200
SkipOrderWithoutTP = true

Step 5: Test & Monitor

  • Run on demo

  • Check EA logs for rejections

  • Adjust limits if too strict/loose


๐Ÿ“ž FAQ

Q: Orders not opening at all? A: Check logs for rejection reasons. Likely exceeding MaxTotalOrders or MaxTotalRiskPercent.

Q: Too many duplicate orders? A: Set AllowDuplicateOrders = false and TimeOrderNext = 30.

Q: EA only opens 1 order per symbol? A: Increase MaxOrdersPerSymbol and set AllowDuplicateOrders = true.

Q: Can I have different limits per symbol? A: Not directly. Use separate EA instances or file config feature.


Remember: Proper order management is key to long-term profitability. Better to miss a trade than blow your account! ๐ŸŽฏ

Last updated