Техническое задание
📋 PROJECT OVERVIEW
EA Concept:
A sophisticated EURUSD trading robot based on Wyckoff Method principles, specifically detecting Spring & Upthrust patterns with advanced risk management and hedging capabilities.
🎯 CORE TRADING RULES
1. PATTERN DETECTION SYSTEM
Spring Pattern (Long Entry):
CONDITIONS: 1. Identify Support Level (recent swing low) 2. Price breaks BELOW support by 8 pips 3. Quick recovery ABOVE support in same H4 bar 4. Volume spike on break + recovery 5. Close above previous close
Upthrust Pattern (Short Entry):
CONDITIONS: 1. Identify Resistance Level (recent swing high) 2. Price breaks ABOVE resistance by 8 pips 3. Quick rejection BELOW resistance in same H4 bar 4. Volume spike on break + rejection 5. Close below previous close
2. MARKET CONTEXT FILTERS
Accumulation Phase Detection:
bool isAccumulationPhase() { // Check last 34 H4 bars - Price range < 1.2 * ATR(14) // Sideways action - Current volume > 1.5 * average volume // Volume spike - Was previous downtrend (close[10] < close[30]) }
Trend Filter (EURUSD Optimized):
bool isTrendFilterOK(direction)
{
// Use H4 timeframe for responsiveness
- EMA(34) and EMA(8) for trend direction
- ADX(14) > 22 for trend strength
- +DI/-DI for momentum confirmation
// EURUSD specific: Allow counter-trend in weak trends
if(!strongTrend) return true; // Sideways OK for both
} ⚙️ TECHNICAL IMPLEMENTATION
1. INITIALIZATION SETUP
int OnInit() { // Trade setup trade.SetExpertMagicNumber(MagicNumber); trade.SetDeviationInPoints(15); trade.SetTypeFilling(ORDER_FILLING_FOK); // EURUSD pip calculation PipSize = (digits == 3 || digits == 5) ? _Point * 10 : _Point; }
2. MAIN EXECUTION FLOW
void OnTick()
{
// Only process on new H4 bar
if(currentBar == lastBar) return;
// Update indicators
UpdateATR();
UpdateDailyReset();
// Manage existing positions
manageOpenPositions();
// Check new entries
if(shouldEnterTrade(LONG)) enterLongTrade();
if(shouldEnterTrade(SHORT)) enterShortTrade();
} 3. ENTRY DECISION TREE
bool shouldEnterTrade(direction) { // Risk Management if(!riskManagementOK()) return false; // Market Conditions if(!eurusdMarketConditionsOK()) return false; // News Filter if(isEURUSDNewsTime()) return false; // Trade Limits if(!checkTradeLimits()) return false; // Trend Filter if(!isTrendFilterOK(direction)) return false; // Hedging Check if(!EnableHedging && hasOppositePosition(direction)) { if(CloseOppositeOnSignal) closeOppositePositions(direction); else return false; } // Pattern Detection if(direction == LONG) return detectSpringPattern(true) && bullishConfirmation(); else return detectSpringPattern(false) && bearishConfirmation(); }
📊 INDICATOR CONFIGURATION
Required Indicators:
// Trend & Momentum - iMA(PERIOD_H4, 34, 0, MODE_EMA, PRICE_CLOSE) // Main trend - iMA(PERIOD_H4, 8, 0, MODE_EMA, PRICE_CLOSE) // Fast trend - iADX(PERIOD_H4, 14, PRICE_CLOSE, MODE_MAIN) // Trend strength - iADX(PERIOD_H4, 14, PRICE_CLOSE, MODE_PLUSDI) // Bull momentum - iADX(PERIOD_H4, 14, PRICE_CLOSE, MODE_MINUSDI) // Bear momentum // Oscillators - iRSI(PERIOD_H4, 11, PRICE_CLOSE) // Faster RSI for EURUSD - iStochastic(PERIOD_H4, 11, 3, 3, MODE_SMA, STO_LOWHIGH) - iWPR(PERIOD_H4, 14) // Williams %R // Volatility & Volume - iATR(PERIOD_D1, 14) // Daily volatility - CopyTickVolume() // Volume analysis
🎯 PATTERN DETECTION ALGORITHMS
Support/Resistance Detection:
double findSupportLevel() { // Scan last 21 H4 bars for swing lows for(int i = 3; i <= 15; i++) { if(low[i] < low[i-1] && low[i] < low[i-2] && low[i] < low[i+1] && low[i] < low[i+2] && close[i] > low[i] + 5*PipSize) // Confirmation return low[i]; } return 0; }
Spring Pattern Logic:
bool detectSpringPattern(bool forLongTrade)
{
level = forLongTrade ? findSupport() : findResistance();
// Break level condition
if(forLongTrade)
breakLevel = low[1] < level - 8*PipSize;
else
breakLevel = high[1] > level + 8*PipSize;
// Quick recovery condition
if(forLongTrade)
quickRecovery = close[0] > level && close[0] > close[1];
else
quickRecovery = close[0] < level && close[0] < close[1];
// Volume confirmation
volumeOK = volume[1] > volume[2] * 1.2 && volume[0] > volume[2] * 0.8;
return (breakLevel && quickRecovery && volumeOK);
} 💰 RISK MANAGEMENT SYSTEM
Position Sizing:
double calculateLotSize() { riskMoney = AccountBalance() * RiskPercent / 100; // EURUSD specific pip value (~$8.5 per lot) pipValue = 8.5; lot = riskMoney / (StopLossPips * pipValue); // Normalize to broker requirements lot = MathFloor(lot / lotStep) * lotStep; return MathMax(lot, minLot); }
Trade Management:
void manageOpenPositions()
{
for(each position)
{
// Breakeven Logic
if(profitPips >= BreakEvenTriggerPips && SL not set)
move SL to open + BreakEvenPlusPips;
// Trailing Stop
if(profitPips >= TrailStartPips)
move SL to currentPrice - TrailStopPips (for longs);
// Time-based Exit
if(positionAge > MaxHoldDays)
close position;
}
} 🛡️ SAFETY MECHANISMS
News Filter Implementation:
bool isEURUSDNewsTime() { // Major EURUSD Events - ECB Thursdays (11:00-13:00 GMT) - Fed Wed/Thu (18:00-20:00 GMT) - NFP Fridays (12:00-14:00 GMT) - CPI Days (12:00-14:00 GMT) return isAnyOfTheseEventsActive(); }
Market Condition Checks:
bool eurusdMarketConditionsOK()
{
// Spread check
if(spread > 0.0002) return false;
// Volatility check
if(dailyATR < 0.0004) return false;
// Volume check
if(currentVolume < 100) return false;
return true;
} 📈 PERFORMANCE OPTIMIZATION TIPS
EURUSD-Specific Tweaks:
-
Use H4 timeframe - Perfect balance between noise and signal quality
-
34 EMA - EURUSD respects this level exceptionally well
-
8-pip spring depth - Optimized for EURUSD typical noise
-
Faster RSI (11) - More responsive to EURUSD momentum shifts
Execution Optimizations:
-
Process only on new H4 bars - Reduces CPU usage
-
Pre-calculate indicators - Store in arrays for faster access
-
Batch position management - Process all positions in single loop
🐛 DEBUGGING & MONITORING
Essential Debug Outputs:
void enterLongTrade() { Print("EURUSD LONG: ", ask, " | SL:", sl, " | TP:", tp, " | Lots:", lots); // Log pattern details for analysis Print("Spring detected at support: ", supportLevel); Print("Volume spike: ", volume[0], " vs ", volume[1]); }
Key Metrics to Monitor:
-
Pattern detection accuracy
-
News filter effectiveness
-
Trend filter performance
-
Risk management triggers
-
Trade duration statistics
🚀 DEPLOYMENT CHECKLIST
Pre-Live Testing:
-
2-3 month demo testing
-
Forward test on multiple brokers
-
Verify news filter during major events
-
Test hedging functionality
-
Confirm risk limits work correctly