HFT Spreader 4 FORTS
This is a high-frequency trading spreader EA designed for the FORTS (Russian derivatives) market. It places buy and sell limit orders on both sides of the order book when the spread is wide enough, and actively manages those orders by canceling and repositioning them as market conditions change. The strategy profits from capturing the spread by being the best bid and best offer in the order book.
Open the interactive view (equity curve, symbol switch)Key facts
Backtest results (H1, about 1 year)
Not backtested yet — this EA could not be converted automatically.
Strategy analysis
Strategy concept: This is a classic market making strategy where the core idea is to simultaneously place orders on both sides of the order book to profit from the bid-ask spread. Entry conditions: When the market spread is greater than or equal to SpreadToPutOrders multiplied by the minimum tick size, the EA places a sell limit order one tick below the Ask and a buy limit order one tick above the Bid, effectively becoming the best bid and best offer in the order book. Exit conditions: After a pending order is filled, the EA places a limit order in the opposite direction at twice the filled volume—one lot to close the existing position and one lot to open a new position in the opposite direction, creating a continuous market-making cycle. Position sizing: Initial lot size is controlled by the Lots parameter, and upon fill, a 2x volume order is placed in the opposite direction (1x to close, 1x to reverse). Money management: There are no stop-loss or take-profit levels configured, and no maximum position limits, making money management quite weak. Order management: The EA continuously monitors whether pending orders need to be moved—if the order price deviates from the current best price by more than one tick, or if the order is the sole best price in the book with a large gap to the next level, it deletes and replaces the order.
Strengths
- Utilizes order book depth data for a refined market-making strategy with clear logic
- Actively manages pending order positions, promptly adjusting to best bid/offer to improve fill rates
- Includes a spread filter mechanism that only places orders when the spread is wide enough, avoiding being trapped in narrow spread conditions
- Automatically closes positions and deletes pending orders in OnDeinit, ensuring no unmanaged positions remain when the EA is removed
Weaknesses
- No stop-loss or take-profit configured, which can lead to significant losses during trending markets
- The 2x volume reverse order mechanism means position size effectively doubles after each fill, creating a risk of uncontrolled position growth
- Potential array out-of-bounds risk in isBestBidOrOfferOnlyMy function when accessing book[index+1] or book[index-1] without boundary checks
- In checkPriceInPendingOrder, OrderSelect is called but the COrderInfo object is not properly initialized via Select/SelectByIndex, which may lead to incorrect data retrieval
- Creating new CTrade objects on every OnBookEvent call for order deletion leads to unnecessary object creation/destruction overhead
Possible improvements
- Add stop-loss, take-profit mechanisms and maximum position limits to prevent unlimited losses in trending markets
- Fix COrderInfo initialization issue to ensure order data is properly loaded after OrderSelect
- Add boundary checks for order book array access to prevent out-of-bounds crashes
- Make CTrade a global or class member variable to avoid frequent object creation and destruction
- Add position sizing limits to prevent the 2x volume reverse order mechanism from causing uncontrolled position growth
Risk assessment
Overall risk: High risk
- No stop-loss configured, trending markets can cause massive losses
- The 2x volume reverse order mechanism can lead to exponential position growth
- Lack of boundary checks on order book array access can cause EA crashes leaving positions unmanaged
- COrderInfo initialization issues may lead to incorrect trading decisions
Evaluation scores
Parameters
| Parameter | Default | Description |
|---|---|---|
Lots | 1 | Lot size per pending order |
SpreadToPutOrders | 4 | Min spread multiplier to trigger pending orders |
Magic | 99 | Magic number for identifying EA orders |
Similar Scalping EAs
Backtests are historical simulations and do not guarantee future results. Not financial advice.