Работа завершена
Техническое задание
I need an Expert Advisor that works in strategy tester and in live trading on a Metatrader 4 terminal. I would like this job to be done through the "Job service".
The task will be to read signal from a csv file and to execute orders when one or several new signals are detected. The file is updated daily but the EA must performs its check every 5 minutes.
How it works ?
Let's take an example to see how it works.
Content of the file the 2015-01-01:
Date,Pair,PriceLimit,PositionType
File is empty, there is no signal and no position that need to be open.
Content of the file the 2015-01-02:
Date,Pair,PriceLimit,PositionType 2015-01-02,EURUSD,1.17545,1 2015-01-02,EURGBP,0.77877,-1 2015-01-02,USDJPY,120.132,1
The 2nd of January the EA must open 3 positions :
- long EURUSD with limit at $1.17545 plus an offset
- short EURGBP with limit at $0.77877 plus an offset
- long USDJPY with limit at $120.132 plus an offset
The offset is a value that comes from an external variable. It can be positive or negative depending on the type of the position : long or short.
Lot size must be calculated so that the margin is equal to 1/3 of the balance the EA can trade with (see bellow in Volume Of The Position).
Content of the file the 2015-01-15:
Date,Pair,PriceLimit,PositionType 2015-01-02,EURUSD,1.17545,1 2015-01-02,EURGBP,0.77877,-1 2015-01-02,USDJPY,120.132,1 2015-01-15,EURUSD,1.18325,1 2015-01-15,EURGBP,0.79877,-1 2015-01-15,USDCHF,1.06877,-1
The 15th of January the EA :
- must close the USDJPY (long) position at market price
- and open a new USDCHF (short) position with a limit at 1.06877 plus an offset
- the EURUSD (long) and EURGBP (short) positions remains open
Same rules as above apply for the offset and the lot size.
Content of the file the 2015-01-19:
Date,Pair,PriceLimit,PositionType 2015-01-02,EURUSD,1.17545,1 2015-01-02,EURGBP,0.77877,-1 2015-01-02,USDJPY,120.132,1 2015-01-15,EURUSD,1.18325,1 2015-01-15,EURGBP,0.79877,-1 2015-01-15,USDCHF,1.06877,-1 2015-01-19,AUDUSD,0.82287,1 2015-01-19,USDJPY,119.225,-1 2015-01-19,USDCHF,0.99885,-1
The 19th of january the EA :
- close the EURUSD and EURGBP position at market price
- and open two new positions : AUDUSD (long) and USDJPY (short) with 1/3 of the capital each and at limited price +/- offset (same as above)
- the USDCHF (short) position remains open
Same rules as above apply for the offset and the lot size.
Number of positions
In this exemple the file
structure correspond to a strategy that trade with 3 positions at a time
but the EA must be able to handle a file with only one
position at a time, or with two positions at a time or even with four positions at a time. No more.
Exemple with a strategy that trade with only one position at a time :
Date,Pair,PriceLimit,PositionType 2015-01-02,EURUSD,1.17545,1 2015-01-15,EURGBP,0.79877,-1 2015-01-19,USDCHF,0.99885,-1
The currency pair can be the same and the signal alternate between long and short:
Date,Pair,PriceLimit,PositionType 2015-01-02,EURUSD,1.17545,1 2015-01-15,EURUSD,1.20877,-1 2015-01-19,EURUSD,1.15885,1
Exemple with a strategy that trade with 2 positions:
Date,Pair,PriceLimit,PositionType 2015-01-02,EURUSD,1.17545,1 2015-01-02,EURGBP,0.77877,-1 2015-01-15,EURUSD,1.18325,1 2015-01-15,USDCHF,1.06877,-1 2015-01-19,AUDUSD,0.82287,1 2015-01-19,USDJPY,119.225,-1
And so on for the strategy that trade with four positions.
What is a signal ?
A signal is an information in the file that point to a currency pair (i.e. EURUSD) for which no position is actually open in the direction specify by the column PositionType (long : 1 or short : -1).Opening And Closing A Position
One position must be open if a signal is detected for the day of the current bar (it must works in Strategy Tester with a csv file that contain the history of signals over several years)
Opening a new position would automatically close an existing position, except for the n first positions opened after the EA is launch.
Opening a new position and closing an existing position should trigger a popup window with trading information.
The order to open a position (long or short) must be done at a limited price : the limited price is calculated from the column "PriceLimit" of the csv file plus or minus an offset that should be settable as an external variable. The offset must be positive of negative whether the position type is long or short.
Example :
- if PriceLimit to open a short position on EURUSD is $1.17555 and the offset is 10pips then the price limit must be $1.17545 (i.e. 1.17555 - 10)
- if PriceLimit to open a long position on EURUSD is $1.17555 and the offset is 10pips then the price limit must be $1.17565 (i.e. 1.17565 + 10)
The order to close a position (long or short) must be done at market price.
There is no take profit nor stop loss.
All opened position must be closed automatically when EA is shut down.
If an error occurs when opening or closing a position, the EA should display a window with the error information and retry the attempt.
Volume Of The Position
I would like an external variable that define the % of the account balance the EA can use to open positions.
Example :
My account balance is $1000 and the variable is set to 80% so the EA must have $800 to trade with.
Total margin must be equal to 100% of the account balance the EA can trade with (i.e. $800).
The size of each position must depend of the number of position in the strategy (i.e. in the file).
- for a one position strategy the margin of the position must correspond to 100% of the account balance the EA can trade with (i.e. $800 * 1)
- for a two positions strategy the margin of each must correspond to 50% of the account balance the EA can trade with (i.e. $800 * 0.5)
- for a tree positions strategy the margin of each must correspond to 33.33% of the account balance the EA can trade with (i.e. $800 * 0.33)
- for a four position strategy the margin of each must correspond to 25% of the account balance the EA can trade with (i.e. $800 * 0.25)
Error Handling
The EA should control only its own positions and shouldn't deal with positions opened manually or by other EAs.
If there are any errors, it must print a message describing the error.
Important
The EA should verify the csv file for new signal every 5 minutes.
The EA should be able to run in strategy tester with a csv file that contain several years of signal.
The EA should be able to work with multi-currency, includind the BTC/USD pair at FXOpen.
When runing the EA on a real account, it should create a button on the chart, which permits trading.
Few Questions
How the program will be checked? Will you get a demo version?
Will you get the source code of the program, and if so, when - after the complete
payment or right away?
How long will be the technical support and on what terms? Will the fix of errors (discrepancies from the algorithm) be done free of charge? How much will small improvements cost?
What electronic payment systems does the developer use? is euro accepted for currency ?