I wish I could identify where's the fail from to correct it. Any ideas ?
Your ea is clearly tuned to the tick generating algo.
When testing on real ticks, a spread may change within a minute bar, whereas when generating ticks within a minute, a spread fixed in the appropriate bar is used.
If the Market Depth is displayed for a symbol, the bars are built strictly according to the last executed trade price (Last). Otherwise, the tester first attempts to build the bars by Last prices, and in case of their absence, uses Bid ones. OnTick event is triggered on all ticks regardless of whether the Last price is present or not.
Please note that trading operations are always performed by Bid and Ask prices even if the chart is built by Last prices. For example, if an Expert Advisor working on bar open prices receives a signal at Last price, it performs a trade at another price (Bid or Ask depending on the direction). If "Every tick" mode is used, the bars are built by Bid prices, while trades are performed by Bid and Ask ones. The Ask price is calculated as Bid + fixed spread of a corresponding minute bar.
If a symbol history has a minute bar with no tick data for it, the tester generates ticks in the "Every tick"
mode. This allows testing the EA on a certain period in case a broker's
tick data is insufficient. If a symbol history has no minute bar but
the appropriate tick data for the minute is present, these ticks are
ignored. The minute data is considered more reliable.
So what should I change ?
- Spread fix ? It is.
- Use last price for signal ? I don't use ticks to get a signal.
- Historical data 100% : so i can consider no ticks are rebuild ?
If that was the case then the results had to be roughly similar and this is clearly not the case.
My advice would be to design your ea around live markets and not around the tester.
Who told you that ?
Do you have a source ?
Experience comes with practice, not with back testing... that can last forever and is completely rigged, and unnecessary.