• Get access

Need an Expert Advisor for MT4 based on multiple standard moving averages

2020.02.13 Experts

Job finished

Execution time 9 days
Feedback from employee
Good customer. Very clear task description.
Feedback from customer
Elena coded an EA for me. Great communication, finished ahead of deadline and the EA met my requirements on the first try. Excellent Developer.

Specification

Trading Idea

It is a simple daily break-out system, based on how far price has been moving away from the opening price each day.

This EA is to be based on three moving averages to develop a trade signal. The moving averages operate on daily OHLC values. A value is calculated from the moving averages that establishes a buy limit price and sell limit price for the day. The buy limit is above the opening price and the sell limit is below the opening price. These limit values are not sent to the broker as limit orders, but held by the EA until the buy/sell trigger occurs then market orders sent to broker.

The buy and sell triggers will come from the closing price of the last bar. The timeframe of the bar is dependent on the chart that the EA is attached to.If either limit is triggered during that day and a position is opened, a trailing stop will be used to close the position. The trailing stop will always move based on close of 1 minute bars. If the position is not closed by the trailing stop, the EA is to close the order at the end of the day. It is possible that both buy and sell limits will be hit in a day, but the stop loss will be between them so there will only be one open position at a time.

The Indicators

  1. MA_Open is the moving average of the daily open prices
  2. MA_High is the moving average of the daily high prices
  3. MA_Low is the moving average of the daily low prices
  4. Avg_Up = MA_High - MA_Open
  5. Avg_Down = MA_Open - MA_Low
  6. Excursion = Max(Avg_Up, Avg_Down)
  7. Threshold = Excursion*Multiplier
  8. Buy_Limit = the opening price for the current day plus the value of Threshold
  9. For example, if the opening prices for today is 1.20000 and Threshold = 0.00500 then Buy_Limit = 1.20500.
  10. Sell_Limit = the opening price for the current day minus the value of Threshold
  11. For example, if the opening prices for today is 1.20000 and Threshold = 0.00500 then Sell_Limit = 1.19500.
  12. The Moving Averages are to share the following input variables so that each moving average has the same parameter values exept of the price they operate on (open, high, low).
  13. MA_Period : Default = 10
  14. MA_Shift : Default = 0
  15. MA_Method : Default = Simple
  16. Multiplier is to be set by user : Default = 1.0
Variables Avg_Up and Avg_Down, Excursion, Threshold , Buy_Limit and Sell_Limit are set by the EA and have no user defined parameters.


Rules to Open a New Position

  1. Check for pending orders and open positions. Only place an order to open when no pending orders or open positions exist. There is to be at most one open position at any time.
  2. Place a buy-to-open marked order when the closing price of the most recent 1-minute bar is greater than Buy_Limit.
  3. Place a sell-to-open market order when the closing price of the most recent 1 minute bar is less than Sell_Limit.

Rules to Close a Position

  1. Use a trailing stop loss at a Threshold*Tstop_Modifier
  2. Default value for input variable Tstop_Modifier = 1.0

    1. For example, if a buy order was executed at 1.20500, Threshold is 0.00500, and Tstop_Modifier = 0.5 then the initial value of the trailing stop is to be set at 1.20500 – (0.00500*0.5) = 1.20250

  3. The Trailing Stop is to be limited by input variable Max_SL : Default value = 50. Units are pips. Meaning that the stop loss price will always be 50 pips (the value of Max_SL) or less from the opening trade execution price.
  4. The trailing stop is to be moved based on the closing price of one-minute bars.
  5. Stop Loss cannot be moved towards the loss direction, i.e. the Stop Loss value cannot be increased.
  6. Close the open position using a market order when the close price of the most recent 1 minute bar crosses the stop loss.
  7. Before sending an order to close a position, check the following
    1. There is an open position
    2. The type of position (long or short)
    3. That the order type is the correct type to close close open position
  8. Only send a Market Sell order when there is an open long position and

  9. Only send a Market Buy order when there is an open short position

Other Inputs

  1. MagicNumber : Default = 88991

  2. Lot_Sizing : Menu of Fixed or Proportional. Default to be Fixed

  3. Fixed_Lots : Default = 0.1. This is the number of lots to be bought and sold

  4. Proportional_Pct : Default = 2.0. This is the percent of the account balance to be used as initial margin for the position. Lots are to be calculated from this value, the account balance and the margin required.

Graphical

The following will show on the chart and in the visualization of back tests.

  1. Green solid thin lines at Buy_Limit and Sell_Limit prices for the day

  2. Red solid thin lines at the trailing stop

  3. Green up arrow where buy orders are placed

  4. Red Down arrow where sell orders are placed

  5. Green dashed thin lines between the buy-to-open order and the sell-to-close order

  6. Red dashed thin lines between the sell-to-open order and the buy-to-close order

Error Handling

I don’t know. Apply best practices.

Logging

The EA is to log the following events and values

  1. Order execution time and price

  2. Reason for closing position – “Closed on trailing stop”or “Closed on end of day”.

  3. If Threshold < Threshold_Min

  4. Any errors reported by the trading console or the broker

Other

If possible please keep the onTick actions to a minimum for faster backtesting. I tried to make it so that everything is done on 1 minute or daily values.

Thank you and please me know if you have questions.




Responded

1
Developer 1
2020.02.13
Rating
4.9
(723)
Projects
1126
66%
Arbitration
106
29% / 43%
Overdue
248
22%
Loaded
2
Developer 2
2020.02.13
Rating
5
(9)
Projects
11
27%
Arbitration
0
Overdue
5
45%
Loaded
3
Developer 3
2020.02.13
Rating
4.94
(589)
Projects
1023
74%
Arbitration
78
28% / 44%
Overdue
331
32%
Loaded
4
Developer 4
2020.02.13
Rating
4.63
(40)
Projects
66
26%
Arbitration
11
0% / 82%
Overdue
14
21%
Working
5
Developer 5
2020.02.13
Rating
0
Projects
0
0%
Arbitration
0
Overdue
0
Free
6
Developer 6
2020.02.13
Rating
5
(9)
Projects
11
36%
Arbitration
1
0% / 100%
Overdue
1
9%
Working
7
Developer 7
2020.02.13
Rating
4.87
(63)
Projects
110
49%
Arbitration
16
38% / 13%
Overdue
15
14%
Working
8
Developer 8
2020.02.13
Rating
5
(1)
Projects
1
100%
Arbitration
0
Overdue
0
Free
9
Developer 9
2020.02.13
Rating
0
Projects
0
0%
Arbitration
1
0% / 100%
Overdue
0
Free
10
Developer 10
2020.02.13
Rating
5
(25)
Projects
30
50%
Arbitration
0
Overdue
1
3%
Free
11
Developer 11
2020.02.13
Rating
4.84
(360)
Projects
651
49%
Arbitration
213
55% / 28%
Overdue
138
21%
Loaded
12
Developer 12
2020.02.13
Rating
4.94
(1347)
Projects
1662
57%
Arbitration
86
41% / 29%
Overdue
426
26%
Busy
13
Developer 13
2020.02.13
Rating
4.87
(168)
Projects
387
52%
Arbitration
42
45% / 33%
Overdue
191
49%
Working
14
Developer 14
2020.02.13
Rating
4.92
(200)
Projects
330
65%
Arbitration
9
56% / 0%
Overdue
84
25%
Free
15
Developer 15
2020.02.13
Rating
4.78
(9)
Projects
10
20%
Arbitration
3
33% / 67%
Overdue
2
20%
Free

Project information

Budget
50 - 150 USD
For the developer
45 - 135 USD