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 | falseControls whether multiple orders on same symbol/direction are allowed.
false (Recommended - Default)
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 ordersWhen 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 symbolControls 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 symbolAggressive (10 orders):
MaxOrdersPerSymbol = 10
// Result: Multiple positions, pyramiding allowedUnlimited:
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 symbolsControls 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 qualityMedium Account ($2,000-$10,000):
MaxTotalOrders = 15
// Reason: More capacity, diversificationLarge Account ($10,000+):
MaxTotalOrders = 30
// Reason: Professional diversificationWhy 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 symbolControls 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 = 1000Risk Management:
Conservative: MaxLot = 0.20
Moderate: MaxLot = 0.50
Aggressive: MaxLot = 2.0Note: 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 | falsePurpose: 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 interventionfalse: You manually manage exits via Telegram commands
โฑ๏ธ Pending Orders Management
8. AllowPendingOrders
AllowPendingOrders = true | falseControls 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.0950EA Action:
Opens: Buy Stop pending order @ 1.0900
Triggers when: Price reaches 1.0900When 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 symbolPurpose: 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 effectivelyModerate (10 seconds):
TimeOrderNext = 10
// Balance between protection and responsivenessPermissive (3 seconds):
TimeOrderNext = 3
// Quick signals allowedDisabled:
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 ordersPurpose: 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 onceAggressive:
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 = trueResult:
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 = 60Result:
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 = 5Result:
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 = 60Result:
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 = falseResult:
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 secondGood:
TimeOrderNext = 10-30โ Mistake 4: MaxLot Too High
Bad:
Balance: $1,000
MaxLot = 10.0
// Result: One order risks entire account + margin callGood:
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
$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 #12345678Order 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:
/statusEA 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 = trueStep 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