Ultra UT Bot Pro Multi Filter Trend Trading System
- Indicatori
- Versione: 1.64
- Attivazioni: 5
OVERVIEW
UT Bot KU is a multi-parameter trend-following and volatility-adaptive technical indicator engineered for MetaTrader 5. The tool identifies directional momentum transitions, calculates dynamic trailing stop boundaries, and delivers systematically validated trade signals across diverse financial markets. At its core, the indicator implements an enhanced Average True Range (ATR) dynamic trailing stop algorithm, coupled with a comprehensive multi-tier filtration matrix featuring 15 distinct technical confirmation modules. These analytical filters incorporate classical trend baselines, momentum oscillators, price structure envelopes, breakout boundaries, and dynamic Fibonacci retracement coordinates. The system operates as an autonomous charting framework or as a modular analytical engine for automated Expert Advisors via the native MQL5 iCustom interface. Traders and developers have complete control to toggle and configure each analytical module independently, adapting across aggressive scalping, intraday structure trading, and multi-day swing position tracking without modifying source architecture.
OPERATING PRINCIPLE AND ALGORITHMIC LOGIC
The indicator operates by dynamically calculating volatility-based trailing stop bands around price bars to establish market polarity, detect trend shifts, and generate directional entry points.
1. ATR Trailing Stop Formulation: The foundational logic utilizes the Average True Range (ATR) over a user-defined lookback window (atrperiod). Baseline trailing offset distance (nLoss) is calculated dynamically: nLoss = keyvalue * xATR, where keyvalue serves as sensitivity multiplier and xATR represents the ATR calculation value. For each bar, the trailing threshold (xATRTrailingStop) updates based on current closing price (src) and previous closing price (prev_src) relative to prior trailing stop (prev_trailing):
- If src > prev_trailing and prev_src > prev_trailing: xATRTrailingStop = MathMax(prev_trailing, src - nLoss)
- If src < prev_trailing and prev_src < prev_trailing: xATRTrailingStop = MathMin(prev_trailing, src + nLoss)
- If src > prev_trailing: xATRTrailingStop = src - nLoss (bullish transition flip)
- If src < prev_trailing: xATRTrailingStop = src + nLoss (bearish transition flip)
2. Trend State Tracking and Buffer Management: Directional position state (pos) tracks market polarity:
- State transitions to Bullish (pos = 1) when previous close was below trailing line and current close penetrates above it (prev_src < prev_trailing and src > prev_trailing).
- State transitions to Bearish (pos = -1) when previous close was above trailing line and current close penetrates below it (prev_src > prev_trailing and src < prev_trailing).
- When neither flip condition is satisfied, the system preserves the prevailing position value from the preceding bar.
Trailing values are routed to 3 display buffers: trailing_up (Buffer 0, Aqua) when pos = 1; trailing_down (Buffer 1, Red) when pos = -1; trailing_neutral (Buffer 2, Blue) when pos = 0.
3. Signal Timing and Repaint Characteristics: Governed by WaitForCandleClose parameter:
- WaitForCandleClose = true (recommended operational setting): Signal conditions and arrow placements evaluate upon bar close (bar index 1). Once closed, calculation variables, trailing lines, and visual signal arrows are permanently locked into buffer history without repainting.
- WaitForCandleClose = false: Evaluates dynamically on active bar (bar index 0). Arrows and line flips appear intra-bar whenever price fluctuates across trailing boundaries. If price retraces prior to bar close, intra-bar signals can disappear or adjust. Suitable for low-latency early execution where intra-bar volatility is accepted.
4. Primary Signal Entry Logic: Raw Buy occurs when price penetrates above trailing line from below (prev_src < prev_trailing and src > prev_trailing). Raw Sell occurs when price penetrates below trailing line from above (prev_src > prev_trailing and src < prev_trailing). Execution arrows (Wingdings 233 Buy, Wingdings 234 Sell) and alerts trigger only when all concurrently activated analytical filters confirm signal direction.
5. Visual Candlestick Coloring Engine: Utilizes DRAW_COLOR_CANDLES across buffers 5 to 9. Bars are tinted Aqua (Color Index 0) when close > trailing (bullish state), and Red (Color Index 1) when close <= trailing (bearish state).
DETAILED TECHNICAL BREAKDOWN OF FILTERING MODULES
The indicator incorporates 15 modular technical filters that can be activated individually or combined to construct robust consensus models:
1. Ichimoku Senkou Span B Filter (UseSenkouFilter): Evaluates long-term equilibrium cloud boundaries. Senkou Span B represents the midpoint of 52-period price extremes displaced forward by 26 bars. Buy signals require close strictly above Senkou Span B (close > senkouB[i - 26]); Sell signals require close strictly below Senkou Span B (close < senkouB[i - 26]).
2. RSI Cross Filter (Use_RSI_Cross_Filter): Monitors momentum exhaustion recoveries on 14-period RSI. Buy signals require RSI crossing upward out of oversold territory (RSI[i] > Oversold and RSI[i-1] <= Oversold, default 30.0). Sell signals require RSI crossing downward out of overbought territory (RSI[i] < Overbought and RSI[i-1] >= Overbought, default 70.0).
3. ADX Filter (Use_ADX_Filter): Measures directional market expansion strength independently of trend polarity. Both Buy and Sell signals require main ADX (period 10) >= ADX_Min_Level (default 20.0), suppressing signals during low-volatility consolidation.
4. Single MA Filter (Use_MA_Filter): Establishes a classic trend baseline (SMA, EMA, SMMA, LWMA). Buy signals require close above MA line (close[i] > ma[i]); Sell signals require close below MA line (close[i] < ma[i]).
5. Long-Term RSI 75 Filter (Use_RSI75_Filter): Employs a 75-period RSI structural equilibrium filter. Buy signals require long-term RSI above 50.0 equilibrium (rsi75[i] > 50.0); Sell signals require long-term RSI below 50.0 (rsi75[i] < 50.0).
6. Double MA Filter (Use_DoubleMA_Filter): Utilizes Fast MA A (default 30 EMA) and Slow MA B (default 140 EMA). Buy signals require Fast MA > Slow MA; Sell signals require Fast MA < Slow MA, verifying intermediate trend alignment.
7. Awesome Oscillator Filter (Use_AO_Filter): Measures momentum from 5-period and 34-period median price SMAs. Features three sub-filters: Volume (AO >= AO_Buy_Min for Buy, AO <= AO_Sell_Max for Sell); Color (rising histogram for Buy, falling for Sell); Zero-Line (positive rising momentum for Buy, negative falling for Sell).
8. Parabolic SAR Filter (Use_SAR_Filter): Incorporates Parabolic Stop and Reverse tracking (Step: 0.02, Maximum: 0.2). Buy signals require close strictly above SAR (close[i] > sar[i]); Sell signals require close strictly below SAR (close[i] < sar[i]).
9. Synthetic Heiken Ashi Filter (Use_HeikenAshi_Filter): Internally synthesizes Heiken Ashi candle bodies: ha_close = (Open+High+Low+Close)/4, ha_open = (Prev_HA_Open+Prev_HA_Close)/2. Buy signals require a green bullish bar (ha_close > ha_open); Sell signals require a red bearish bar (ha_close < ha_open).
10. CCI Trend Filter (Use_CCI_Filter): 50-period CCI zero-line filter. Buy signals require positive deviation above zero (cci[i] > 0); Sell signals require negative deviation below zero (cci[i] < 0).
11. CCI Overbought & Oversold Filter (Use_CCI_OBOS_Filter): 14-period CCI extreme boundary filter. Buy signals require cci_obos[i] > 100.0; Sell signals require cci_obos[i] < -100.0.
12. RVI Trend Filter (Use_RVI_Filter): Measures candle conviction over 75 periods. Buy signals require RVI main line above zero (rvi[i] > 0); Sell signals require RVI main line below zero (rvi[i] < 0).
13. RVI Signal Line Cross Filter (Use_RVI_Signal_Filter): Evaluates 20-period RVI momentum crossovers. Buy signals require RVI main line above signal line (rvi_main[i] > rvi_sig[i]); Sell signals require RVI main below signal (rvi_main[i] < rvi_sig[i]).
14. MACD Signal & Zero Filters (Use_MACD_Filter & Use_MACD_Zero_Filter): Analyzes 12 Fast EMA, 26 Slow EMA, 9 Signal SMA. MACD Signal Filter requires positive histogram spread for Buy, negative for Sell. MACD Zero Filter requires main line above zero for Buy, below zero for Sell.
15. Support & Resistance Filter (Use_SR_Filter): Identifies swing price extremes over historical window SR_Period (default 50) buffered by SR_Zone_Points (default 80 points). Buy requires price testing support zone; Sell requires price testing resistance zone.
16. Dynamic Fibonacci Retracement Filter (Use_Fib_Filter): Uses internal ZigZag engine (Depth: 12, Deviation: 5, Backstep: 3) to locate confirmed swing pivots and calculate Fib levels (Fib_Level_1: 0.382, Fib_Level_2: 0.618). Signals require current candle range to touch or overlap within dynamic Fibonacci golden pocket zone. Note: While confirmed historical pivots remain fixed, active swing pivots recalculate dynamically as new extremes form.
KEY TECHNICAL FEATURES
- Dual Execution Architecture: Choice between strict non-repainting closed-bar mode (WaitForCandleClose = true) and active-bar calculation (WaitForCandleClose = false).
- 15 Modular Technical Filters: Complete flexibility covering trend baselines, oscillators, momentum indicators, structural boundaries, and Fibonacci retracements.
- Dynamic Volatility Bands: Real-time calculation of adaptive ATR-based trailing thresholds rendered across Aqua, Red, and Blue plot lines.
- Visual Candlestick Trend Mapping: Integrated multi-buffer candle body coloring reflecting active bullish and bearish market regimes.
- Multi-Channel Notification Engine: Pop-up dialogs, customizable audio alerts (.wav), and push notifications to mobile devices.
- Algorithmic Automation Compatibility: 11 exposed calculation buffers accessible via iCustom for Expert Advisor development.
- Optimized Resource Consumption: On-demand indicator handle creation in OnInit() and complete memory deallocation in OnDeinit().
OPERATIONAL SETUP AND TRADING RECOMMENDATIONS
1. Asset Compatibility: Universal across liquid assets in MetaTrader 5: Forex pairs (EURUSD, GBPUSD, USDJPY, AUDUSD, EURGBP), Precious Metals (XAUUSD, XAGUSD), Commodities (WTI/USOIL), Indices (US30, US500, NAS100, GER40), and Cryptocurrencies (BTCUSD, ETHUSD). For scalping, prioritize instruments with tight spreads during session overlaps.
2. Timeframe Selection and Profiles:
- Scalping (M1 - M5): keyvalue = 1.0 to 1.5, atrperiod = 1 to 2, combined with ADX Filter (Min >= 22.0) and Single MA Filter (50 SMA) to eliminate false breakout chop.
- Day Trading (M15 - H1): keyvalue = 1.5 to 2.0, atrperiod = 2 to 5, combined with Double MA Filter (30/140 EMA) or Ichimoku Senkou Span B Filter for macro trend alignment.
- Swing Trading (H4 - D1): keyvalue = 2.0 to 3.0, atrperiod = 5 to 10, combined with Support/Resistance and Fibonacci Retracement filters.
3. Broker Account and Latency: Compatible with Hedging and Netting accounts. ECN/Raw spread accounts reduce trading friction on lower timeframes. Low-latency VPS is recommended for active-bar automated trading (WaitForCandleClose = false).
4. Recommended Presets:
- Trend Following: UT Bot Core (keyvalue: 1.5, atrperiod: 2) + Double MA (30/140 EMA) + ADX (Min: 20.0).
- Pullback Reversal: UT Bot Core (keyvalue: 1.0, atrperiod: 1) + RSI Cross (14, 30/70) + Support/Resistance (Period: 50, Zone: 80 points).
- Momentum Scalper: UT Bot Core (keyvalue: 1.0, atrperiod: 1) + Parabolic SAR (0.02/0.2) + Awesome Oscillator Color Filter.
INPUT PARAMETERS DOCUMENTATION
Every input parameter declared in the indicator is listed below with default value, data type, unit, and technical role:
UT Bot Settings:
- keyvalue (Default: 1.0) [double, Unit: multiplier]: Sensitivity multiplier applied to ATR to determine trailing distance (nLoss). Higher values widen bands; lower values tighten bands for faster signals.
- atrperiod (Default: 1) [int, Unit: bars]: Lookback period for ATR volatility measurement.
Ichimoku Senkou Span B Filter:
- UseSenkouFilter (Default: false) [bool]: Enables Ichimoku Senkou Span B directional filter.
- IchimokuTenkan (Default: 9) [int, Unit: bars]: Tenkan-sen period in Ichimoku calculation.
- IchimokuKijun (Default: 26) [int, Unit: bars]: Kijun-sen period in Ichimoku calculation.
- IchimokuSenkou (Default: 52) [int, Unit: bars]: Senkou Span B period in Ichimoku calculation.
- IchimokuDisplacement (Default: 26) [int, Unit: bars]: Forward displacement shift applied to Senkou Span B.
RSI Cross Filter:
- Use_RSI_Cross_Filter (Default: false) [bool]: Enables RSI boundary crossover filtering.
- RSI_Length (Default: 14) [int, Unit: bars]: Calculation period for Relative Strength Index.
- RSI_Price_Source (Default: PRICE_CLOSE) [ENUM_APPLIED_PRICE]: Applied price series for RSI.
- Oversold (Default: 30.0) [double, Unit: level]: Oversold threshold for bullish crossover confirmation.
- Overbought (Default: 70.0) [double, Unit: level]: Overbought threshold for bearish crossover confirmation.
ADX Filter:
- Use_ADX_Filter (Default: false) [bool]: Enables ADX trend expansion strength filtering.
- ADX_Period (Default: 10) [int, Unit: bars]: Calculation period for ADX indicator.
- ADX_Min_Level (Default: 20.0) [double, Unit: level]: Minimum ADX reading required to authorize signals.
Single MA Filter:
- Use_MA_Filter (Default: false) [bool]: Enables single moving average baseline filtering.
- MA_Period (Default: 50) [int, Unit: bars]: Calculation period for moving average.
- MA_Method (Default: MODE_SMA) [ENUM_MA_METHOD]: Smoothing method (MODE_SMA, MODE_EMA, MODE_SMMA, MODE_LWMA).
- MA_Shift (Default: 0) [int, Unit: bars]: Horizontal bar shift offset applied to moving average series.
RSI 75 Filter:
- Use_RSI75_Filter (Default: false) [bool]: Enables long-term 75-period RSI equilibrium filtering.
- RSI_Filter_Period (Default: 75) [int, Unit: bars]: Calculation period for long-term RSI.
Double MA Filter:
- Use_DoubleMA_Filter (Default: false) [bool]: Enables dual moving average alignment filtering.
- MA_A_Period (Default: 30) [int, Unit: bars]: Calculation period for Fast MA A.
- MA_A_Method (Default: MODE_EMA) [ENUM_MA_METHOD]: Smoothing method for Fast MA A.
- MA_A_Applied (Default: PRICE_CLOSE) [ENUM_APPLIED_PRICE]: Applied price source for Fast MA A.
- MA_A_Shift (Default: 0) [int, Unit: bars]: Horizontal bar shift for Fast MA A.
- MA_B_Period (Default: 140) [int, Unit: bars]: Calculation period for Slow MA B.
- MA_B_Method (Default: MODE_EMA) [ENUM_MA_METHOD]: Smoothing method for Slow MA B.
- MA_B_Applied (Default: PRICE_CLOSE) [ENUM_APPLIED_PRICE]: Applied price source for Slow MA B.
- MA_B_Shift (Default: 0) [int, Unit: bars]: Horizontal bar shift for Slow MA B.
Awesome Oscillator Filter:
- Use_AO_Filter (Default: false) [bool]: Master toggle for Awesome Oscillator momentum filtering.
- Use_AO_Volume_Filter (Default: false) [bool]: Enables threshold magnitude gating against absolute AO values.
- AO_Buy_Min (Default: 4.0) [double, Unit: points]: Minimum positive AO reading for Buy validation.
- AO_Sell_Max (Default: -4.0) [double, Unit: points]: Maximum negative AO reading for Sell validation.
- Use_AO_Color_Filter (Default: false) [bool]: Enables momentum slope gating (rising for Buy, falling for Sell).
- Use_AO_Zero_Filter (Default: false) [bool]: Enables zero-line directional polarity gating.
Parabolic SAR Filter:
- Use_SAR_Filter (Default: false) [bool]: Enables Parabolic SAR trend acceleration filtering.
- SAR_Step (Default: 0.02) [double, Unit: factor]: Acceleration step per new extreme price bar.
- SAR_Maximum (Default: 0.2) [double, Unit: factor]: Maximum cap for Parabolic SAR acceleration factor.
Heiken Ashi Filter:
- Use_HeikenAshi_Filter (Default: false) [bool]: Enables synthetic Heiken Ashi candle color confirmation.
CCI Trend Filter:
- Use_CCI_Filter (Default: false) [bool]: Enables 50-period CCI zero-line trend filtering.
- CCI_Period (Default: 50) [int, Unit: bars]: Lookback period for trend CCI.
- CCI_Applied (Default: PRICE_CLOSE) [ENUM_APPLIED_PRICE]: Applied price series for trend CCI.
CCI Overbought & Oversold Filter:
- Use_CCI_OBOS_Filter (Default: false) [bool]: Enables 14-period CCI extreme boundary filtering.
- CCI_OBOS_Period (Default: 14) [int, Unit: bars]: Lookback period for overbought/oversold CCI.
- CCI_OBOS_Applied (Default: PRICE_CLOSE) [ENUM_APPLIED_PRICE]: Applied price series for OB/OS CCI.
- CCI_Overbought (Default: 100.0) [double, Unit: level]: Positive threshold. Buy requires CCI > 100.0.
- CCI_Oversold (Default: -100.0) [double, Unit: level]: Negative threshold. Sell requires CCI < -100.0.
RVI Trend Filter:
- Use_RVI_Filter (Default: false) [bool]: Enables 75-period Relative Vigor Index zero-line filtering.
- RVI_Period (Default: 75) [int, Unit: bars]: Calculation period for baseline RVI indicator.
RVI Signal Filter:
- Use_RVI_Signal_Filter (Default: false) [bool]: Enables 20-period RVI Main vs Signal crossover filtering.
- RVI_Signal_Period (Default: 20) [int, Unit: bars]: Calculation period for RVI crossover indicator.
MACD Signal Filter:
- Use_MACD_Filter (Default: false) [bool]: Enables MACD histogram spread filtering (Main minus Signal).
- MACD_FastEMA (Default: 12) [int, Unit: bars]: Fast EMA calculation period in MACD.
- MACD_SlowEMA (Default: 26) [int, Unit: bars]: Slow EMA calculation period in MACD.
- MACD_SignalSMA (Default: 9) [int, Unit: bars]: Signal line SMA calculation period in MACD.
- MACD_Applied (Default: PRICE_CLOSE) [ENUM_APPLIED_PRICE]: Applied price series for MACD.
MACD Zero Filter:
- Use_MACD_Zero_Filter (Default: false) [bool]: Enables MACD Main line zero-line polarity filtering.
Support & Resistance Filter:
- Use_SR_Filter (Default: false) [bool]: Enables dynamic Support/Resistance zone envelope filtering.
- SR_Period (Default: 50) [int, Unit: bars]: Historical lookback bar count to identify S/R levels.
- SR_Zone_Points (Default: 80.0) [double, Unit: points]: Buffer zone thickness in points around S/R levels.
Fibonacci Filter:
- Use_Fib_Filter (Default: false) [bool]: Enables dynamic Fibonacci golden pocket zone filtering.
- Fib_Level_1 (Default: 0.382) [double, Unit: ratio]: Primary Fibonacci retracement ratio boundary.
- Fib_Level_2 (Default: 0.618) [double, Unit: ratio]: Secondary Fibonacci retracement ratio boundary.
- ZigZag_Depth (Default: 12) [int, Unit: bars]: Minimum lookback bar depth for ZigZag swing detection.
- ZigZag_Deviation (Default: 5) [int, Unit: points]: Price deviation in points required for swing pivot.
- ZigZag_Backstep (Default: 3) [int, Unit: bars]: Minimum bar distance between consecutive swing pivots.
Alert & Notification Settings:
- Use_Alert_Popup (Default: true) [bool]: Displays terminal pop-up message alert dialog on new validated signal.
- Use_Alert_Sound (Default: true) [bool]: Plays audio alert sound file on new validated signal.
- Use_Push_Notification (Default: true) [bool]: Sends mobile push notification via MetaQuotes ID on new signal.
- Use_Sound_Only (Default: false) [bool]: Plays audio alert sound only without popping up terminal message dialog.
- Sound_File_Buy (Default: "alert.wav") [string]: Audio wave file name for bullish signal alerts.
- Sound_File_Sell (Default: "alert2.wav") [string]: Audio wave file name for bearish signal alerts.
Signal Execution Settings:
- WaitForCandleClose (Default: true) [bool]: Controls calculation timing. When true, signals evaluate on closed bar (index 1), strictly non-repainting. When false, signals evaluate on active bar (index 0).
BUFFER MAPPING AND EXPERT ADVISOR INTEGRATION GUIDE
The indicator exports 11 internal calculation buffers accessible via iCustom for automated trading integration:
- Buffer 0 (trailing_up): Dynamic trailing stop value during active bullish state (pos = 1). Contains EMPTY_VALUE when bearish or neutral.
- Buffer 1 (trailing_down): Dynamic trailing stop value during active bearish state (pos = -1). Contains EMPTY_VALUE when bullish or neutral.
- Buffer 2 (trailing_neutral): Trailing stop value during neutral initialization state (pos = 0).
- Buffer 3 (buy_arrow): Price coordinate of validated Buy arrow (Wingdings 233). Contains EMPTY_VALUE when no Buy signal is present.
- Buffer 4 (sell_arrow): Price coordinate of validated Sell arrow (Wingdings 234). Contains EMPTY_VALUE when no Sell signal is present.
- Buffer 5 (candle_o): Synthetic candlestick Open price series (DRAW_COLOR_CANDLES).
- Buffer 6 (candle_h): Synthetic candlestick High price series (DRAW_COLOR_CANDLES).
- Buffer 7 (candle_l): Synthetic candlestick Low price series (DRAW_COLOR_CANDLES).
- Buffer 8 (candle_c): Synthetic candlestick Close price series (DRAW_COLOR_CANDLES).
- Buffer 9 (candle_col): Color index buffer (0 = Bullish Aqua, 1 = Bearish Red).
- Buffer 10 (pos_buf): Internal directional position tracking buffer (+1.0 = Bullish state, -1.0 = Bearish state, 0.0 = Neutral).
EA Integration Logic:
- Buy Signal on Bar 1: Buffer 3 at index 1 is not equal to EMPTY_VALUE and greater than 0.0.
- Sell Signal on Bar 1: Buffer 4 at index 1 is not equal to EMPTY_VALUE and greater than 0.0.
- Ongoing Trend State on Bar 1: Buffer 10 at index 1 == 1.0 (Bullish) or -1.0 (Bearish).
COMPUTATIONAL EFFICIENCY AND RESOURCE MANAGEMENT
UT Bot KU is engineered for efficient multi-chart terminal performance:
- On-Demand Handle Creation: Filter indicator handles (iIchimoku, iRSI, iADX, iMA, iAO, iSAR, iCCI, iRVI, iMACD) are initialized in OnInit() only if their corresponding boolean toggle is set to true. Disabled filters consume zero terminal calculation overhead.
- Clean Resource Disposal: All active indicator handles are explicitly released using IndicatorRelease() inside OnDeinit(), preventing memory leakage during chart updates or timeframe switching.
- Incremental Calculation Architecture: OnCalculate() uses prev_calculated indexing to process only newly formed candles and active ticks, eliminating redundant historical recalculations across thousands of historical bars.
RISK DISCLAIMER
Trading foreign exchange, commodities, indices, and cryptocurrencies involves substantial risk of loss and is not suitable for every investor. The high degree of leverage available in financial trading can work against you as well as for you. Before deciding to trade any financial instrument, carefully evaluate your investment objectives, trading experience, and risk tolerance. There is a possibility that you could sustain a loss of some or all of your deposited capital; do not risk funds you cannot afford to lose.
Past performance, including simulated backtest results and historical chart patterns, is no guarantee of future operational performance. No technical indicator, mathematical formula, or analytical system can guarantee financial profits or completely eliminate market risk. UT Bot KU is an analytical technical software tool designed to assist traders in objective market evaluation; it does not provide financial advice, investment recommendations, or automated trade management. Always test this indicator thoroughly on a risk-free demo account under varying market conditions to verify its operational behavior prior to considering deployment in live trading environments.
```<FollowUp>
Apakah Anda butuh penyesuaian khusus pada parameter default tertentu sebelum mengunggahnya ke MQL5 Market?</FollowUp>
