Tâche terminée
![](https://c.mql5.com/i/avatar/avatar_na2.png)
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Spécifications
Me and my friend had a bet that a strategy he heard about does not not work. I have code logic for my EA in Python and It does not work. But my friend claim I code it wrong said it should be built in MT4 because they is the FX standards.
I can provide the source code in Python. The EA is quite simple. In each tick it check each currency and decides check if the current order is filled if the order is filled the EA submits a new Stop Order for the currency.
I would like the source code of the final product for me to compile and execute
Here is the logic of the EA. There are no indicators. The logic is a bit complex, but the math is very simple. Basically it enters a trade. If the trade goes again you it enters a short position. Keeps entering addtional long and short positions until the trade either hits the stop loss or profit target. The stop loss for the buy trade is the profit target for the sell trade. Also the stop loss for the sell trade is the profit target for the buy trade. So this means when a stop loss or profit target is hit all the trades close together.
What make it a bit more complex is he wants to test the stratgy with a bullish and bearish strategies and want to test for multiple currencies at one.
The solution will need the following inputs.
Tickers:
- This is a list of tickers to execute the strategy on. Each ticker should be separated by as space.
Pip Units:
- this is number of pips the profit target and stop loss. This is a space separated list as each ticker will have a different profit target and stop loss value.
Lot Units:
- this is the number of lots the to be used by the ticker. This is a space separated list as each ticker will have a different lot size value.
Directions:
- this will specify if the the ticker is to be trade Bullish, Bearish or Both. This is a space separated list as each ticker could be traded Bullish, Bearish or Both.
Bullish Magic Numbers:
- This is the magic number used by the ticker when trading the Bullish Strategy. This is a list because each ticker will have its own magic number.
Bearish Magic Numbers:
- This is the magic number used by the ticker when trading the Bearish Strategy. This is a list because each ticker will have its own magic number.
Trade Units:
- This is the scaling table used to know how big position to open based on the trading rules. Again this is a space separated list of floating point numbers.
Take Profit Ratio
- This is the take profit relative to the pip units. This is a space separated list as each ticker will have it's own ratio.
Stop Loss Ratio
- This is the stop loss relative to the pip units. This is a space separated list as each ticker will have it's own ratio.
During the initialization these inputs will need to be converted in to arrays.
There will need to be a loop on the OnTick event where it loops through each ticker. With in the loop it will do the following
Get the Bullish strategy Magic Number for the current Ticker in the loop from the array
If Has Open Positions
- Count the number of Open Positions for the Magic Number
- While counting the open positions for the magic number. Get the Profit Target, Stop Loss of the first Open Position
- Set the max of returned Profit Target and Stop Loss as Profit Target
- Set the min of returned Profit Target and Stop Loss as Stop Loss
- Set the entry price as the stop loss + (pip units * (stop loss ratio + 1))
- Set the hedge price as the stop loss + (pip units * (stop loss ratio))
If No Open Positions and Has Unfilled Orders
- Count the number of Unfilled Orders for the Magic Number \
- While counting the unfilled positions for the magic number. Get the Stop Price, Profit Target of the first unfilled Order
- Set the max of returned Profit Target and Stop Loss as Profit Target
- Set the min of returned Profit Target and Stop Loss as Stop Loss
- Set the entry price as the stop loss + (pip units * (stop loss ratio + 1))
- Set the hedge price as the stop loss + (pip units * (stop loss ratio))
If there are no open positions and has unfilled order
- should check the Stop Price is no more than 1 pip away from current price.
- If the current price is more than one pip away from the stop price should cancel the unfilled order. The unfilled order count should be reduced by one.
If there are no open positions and no unfilled orders.
- The Entry Price should be calculated point above the current price.
- It will calculate the Take Profit as Entry Price + (pip units * take profit ratio).
- It will calculate the Hedge Price as Entry Price - pip units
- It will calculate the Stop Loss as Entry Price - (pip units * stop loss ratio)
If there are no unfilled orders will
- This ensures there is never more than one unfilled order per magic number
- The trade quantity should be calculated as the lot units * trade unnts
- If the number of current open position is positive will open a buy stop order
- If the number of current open position is negative will open a sell stop order
Each Order that is executed will be a Stop Order with a Ticker, Stop Price, Quantity, Take Profit, Stop Loss, Magic Number.
where
- Quantity is the the opening units and the is times minus 1 for sell stop
- Stop Price is the Entry Price for Buy Stop and Hedge Price for Sell Stop
- The Take Profit and Stop Loss are swapped around for Sell Stop trades
The logic above is for a bullish strategy and want to repeat for a bearish strategy but in reverse.
Also would like on the chart white circle and squares for buy and sell for open bullish strategy positions with blue lines connecting to the close point. Fore the bearish strategy would like red line connecting to the target. But what ever you think looks good.
The strategy should be quite simple there is not complex math. However the Inputs have to be loaded into arrays and the arrays need to be accessed to get the values. But that is about it.