Enhancements to an EA as a preliminary to regular job requirements.

指定

Here are the details of the new Project that you will be required to deliver.

As described below, the code for a live system already exists, but has been built in an ad hoc form by an inexperienced coder. The job is to enhance this code to provide a more professional product.

Part 1: Enhance existing code for Limit order strategy

There are a couple of repeating errors that could certainly be ironed out with an experienced MT4 programmer. In addition we think that it is likely the code could be written with better attention to threading and speed of operation.

Part 2: Minor redesign in order to become more modular.

It is our goal to allow multiple signal strategies to drop into the same execution framework. But this would require a more explicit separation between Signal and Execution Processes in the code. We want an environment that would become a generic Execution environment for multiple Signal strategies (not necessarily simultaneously).

Part 3: Add a ‘Main’ screen to accommodate live reporting for multiple symbols simultaneously.

This is an additional component which is able to bring together up to 20 simultaneous symbols and visualize their risk and margin requirements as well as other details.

Part 4: Accommodate the possibility of Partial Fills and multiple trades.

The current system has an assumption of a single lot size and complete fills at all times. But this may not always be the case. We will need extra logic to allow for these possibilities.


And here is the brief specification of the existing system that will give you an idea of the underlying system, describing each element of the existing code base.


Ultra-simple random Buy/Sell strategy, which places and modifies limit orders based upon a simple assessment of volatility and spread.

Introduction

Here we are simply generating a random Binary +1/-1 signal which drives Buy and Sell trades to our new trading venues via FIX connections. The purpose of this exercise is purely to test the trading environment with very small and consistent sizes, in particular testing a variety of Order types – Market Orders and Limit, Pending Orders – as well as the ability to rapidly modify the Order details according to a simple set of market conditions.

The Market Conditions that we monitor are:

1.       Recent Market Spreads: as measured by average prevailing spreads once per second during the last x seconds.

2.       Recent Market Volatility: as measured by the absolute recent distance travelled by the Market mid during the last y seconds.

3.       Recent Market Move: as measured by the net distance travelled in the last z seconds, either in the direction of the Order being attempted or against the Order

Finally there is a simple function which combines these measures to determine exactly where we should place the Limit orders and when we should use a Market order. In general we would prefer to use Limit orders since they should provide cheaper execution costs, but we are happy to use a Market order if the market has started to move a long way in one direction.

Explanation

There are 10 elements to the Random Strategy, labelled as such in the MT4 code:

Element 1: Computes a couple of elements of live on tick data.

Very simple.

Element 2: Computes Order accounting and logging ... what orders do we have open at the moment?

We need to know whether we have any open orders at the moment, since if we have a signal, it will determine our next actions. Also, if there has been a live Order recently closed, it gives us an opportunity to log the details of the last trade. In addition, this code determines whether the order is still ‘In-bounds’ for a Limit style or should be sent to the market as a Market order.

Element 3: Check for Orders to Close; this is only triggered in the non-standard situation since normally orders close by TP/SL which are modifying all the time.

Since this signal is very simple it only allows for a single order to be open, in a particular symbol, at any one time. If for any reason this is not true, we just exit all orders and start again from zero. So this is a safety step.

Element 4: Modifying or closing expired Working Orders.

This segment of code is always working with Working, market orders that are live in the market. In the current, very simple strategy, we simply let the orders sit in the market for a period. Then after a while, say 30 seconds, they Expire. At this point, if they are within a certain distance of the market at expiry, we add a limit order and constantly modify to try to exit with a limit strategy. However, if they move ‘out-of-bounds’, we hit the market with a Market order.

Element 5: Random Trading Signal: Generates the random Buy or Sell signal at a consistent time interval

On each tick we first check whether there is a Signal already live. If there is no live signal, we trigger a short routine to ‘toss a coin’ and generate a +1 or 0 outcome, dependant upon whether MathRand() gives an odd or even outcome.

Within the routine we also monitor the nextSignalCalcTime, which is the trigger to hunt for a new random outcome.  Finally we also report the current state of the signal, with reference to the live order information. Hence a signal is “IN_PENDING”, “IN_WORKING” or “OUT_PENDING”.

Element 6: Computes the Number of Lots that we want to place in this Order

Simply finds the Lot size from the Input menu and ensures that we have enough margin in place.

 

Element 7: Opening  orders, if we have a Signal but no Order out there yet

If there is a Signal available, but no Trade, this element creates the Order details for a new limit order trade. It uses the function “makeReplacementRates” to calculate the point where we would like to place the order.

Element 8: Modifying  orders , if we already have a Pending Order out there

Having first placed the order we are likely to Modify it very slightly on almost every new incoming tick while it is IN_BOUNDS, that is within the limit of the initial starting state. This is done with the “makeReplacementRates” function and is crucial to the use of pending limit orders.  If the order moves out-of-bounds, we will exit it through a Market Order.

Element 9: Finds details of the most recent closed order...

This is just a tiny function to provide last Trade details for reporting.

 

 

Element 10: Variable update

Records the values of some variables to the global environment.

Element 11: Reports a few details as comments to the screen

This is just a tiny element for reporting.

 

Element 12: Make the market environment assessment, Volatility (mileage) and Spread Liquidity.

This is an On.Timer function that runs in the background to make our ongoing assessment of the volatility and spread environment. It updates two global variables, namely spreadAvg and mileage. This is just a call to the makeReplaceRates function described in element 14.

 

Element 13: Function which finds the mileage and average spread values, using arrays  

We populate various arrays at 1 sec intervals to build up a recent picture of the market environment. In particular these arrays cover the recent spreads and the movements in market mid. We then average and sum these vectors respectively to get our estimates of avgSpread and mileage.

 

Element 14: Function which Creates the updating replace rates

This function is called at each tick by other elements within the OnTick function. It first collects the current market environment from the On.Timer function. These inputs are the avgSpread, mileage and the recent market move. Having sourced these inputs it combines them in a simple x order function to compute the ‘correct’ level to replace the next bid and ask in the market. This function is currently immensely simple but will nevertheless serve to set-up systems to demonstrate our ability to make and take orders over a FIX connection.

 

Element 15: Finds details of the most recent closed order...

 

 



反馈

1
开发者 1
等级
(174)
项目
200
12%
仲裁
39
38% / 33%
逾期
5
3%
空闲
发布者: 2 代码
2
开发者 2
等级
项目
0
0%
仲裁
1
0% / 100%
逾期
0
空闲
3
开发者 3
等级
(23)
项目
45
20%
仲裁
25
28% / 48%
逾期
12
27%
空闲
4
开发者 4
等级
(115)
项目
129
18%
仲裁
11
27% / 55%
逾期
4
3%
空闲
5
开发者 5
等级
(26)
项目
34
26%
仲裁
7
14% / 43%
逾期
7
21%
空闲
6
开发者 6
等级
(58)
项目
76
33%
仲裁
9
78% / 11%
逾期
7
9%
空闲
发布者: 2 代码
相似订单
BUDGET: 100-120 USD - FIXED - includes source code .mq5 + .ex5 I will test demo first on 100$ demo account. If good, I pay. WHAT I WANT: 1. SIGNAL STRENGTH LOGIC: - WEAK SIGNAL = 1 position only. - STRONG SIGNAL = 2,3,4,5 positions (more positions because signal is strong). - Signal strength calculated by indicators. 2. ADAPTIVE TO CAPITAL: - Lot auto = Balance / 100 * 0.01. Example 100$ = 0.01 lot, 300$ = 0.03 lot
I currently use nt8 trading platform. I trade with kelterband channel indicator and 80sma. Would like a custom indicator added to chart trader to get into trade manually when band crosses sma, 3 separate buttons for buy sell close of yellow band, mid band (blue) and 80 sma (purple). also need contract size button and tick offset button. when i enter a trade i want it to trail the band until price hits it and gets me
Platform: MT5 only (no MT4 needed). Deliverable: an MT5 Expert Advisor with full source code (.mq5) that replicates the attached TradingView strategy (Pine Script v6, based on LuxAlgo's "ICT Killzones Toolkit" order blocks) as exactly as possible. Pasting the code into TradingView shows how it operates. I normally trade GBPUSD on the 5-minute chart Expected behavior: - Order block detection must match the Pine code
Requirements Specification: Debug & Error Fixing: Review the entire source code of the MQL expert advisor. Identify and fix all logical errors, bugs, and performance issues that cause trades to close prematurely or yield extremely low profits. Strategy Restructuring & Optimization: Fully analyze and optimize the current entry and exit strategy for USDJPY and GBPUSD. Modify, upgrade, or completely rewrite the entry
Winter 500+ USD
I am looking for an MQL5 developer to independently review an existing EA’s execution and position management logic. The review should focus on duplicate orders, trade isolation by symbol and magic number, broker price and volume constraints, error handling, and recovery after a terminal restart. This order is for an audit report. Please do not modify the source or change the trading strategy. For each finding
Hello, I want to create a custom Expert Advisor (EA) for MetaTrader 5 based on 3 main confirmations: Market Structure & Price Action: Identify high time-frame trend direction (HL/LH). Chart Pattern: Detect classic continuous/reversal patterns (e.g. Cup and Handle, Double Bottom/Top) on trading timeframe. Volume Profile (PoC): Confirm entry when price breaks/retests the Point of Control (PoC) level. Risk Management &
Trading 35+ USD
Project: XAUUSD Gold Trading Robot for MetaTrader 5 I want to develop a fully automated Expert Advisor (EA) for MetaTrader 5, designed exclusively for Gold (XAUUSD) and compatible with the Exness broker. Trading Strategy: Liquidity + CHOCH + Retest Identify important buy-side and sell-side liquidity zones using previous highs and lows, equal highs/lows, and confirmed swing points. Wait for a clear liquidity sweep
Here is a professional, detailed requirements specification draft for your MQL5 freelance order based on your prompt: ​ Strategy Objective: Develop an automated Expert Advisor (EA) featuring a 1:3 Risk-to-Reward ratio optimized for a small starting budget. ​ Core Trading Logic: ​Execute automatic Buy and Sell trades using high-probability entry signals. ​Target a strict 90% theoretical win-rate structure through
MarketMind Breakout Pro XAUUSD H1 — Donchian Breakout EA Project type: Personal EA development and backtesting Platform: MetaTrader 5 Instrument: XAUUSD Timeframe: H1 Strategy: Donchian Channel breakout with EMA 200 Project overview This project evaluates a Donchian breakout trading strategy for XAUUSD on the H1 timeframe. The system uses channel-based breakout conditions and an EMA 200 trend filter. Historical
Hello, I’m looking for an experienced developer to research, build, test, and install a fully automated MetaTrader 5 trading bot for gold, XAUUSD. My total development and installation budget is $300, including all agreed work and fees. My goal is to pass a $100,000 FTMO US Two-Step Standard evaluation and sustainably maintain the funded account. I need a day-trading strategy that can buy in bullish markets and sell

项目信息

预算
50 - 200 USD
截止日期
从 1 到 10 天