Author of the idea — John Smith, author of the MQL5 code — barabashkakvn.
An assistant Expert Advisor. Only CLOSING positions:

Positions are moved to Breakeven, Stop Loss is calculated based on the StopATR_auto indicator, positions are closed at the intersection of two MAs (Moving Averages).
In order to provide conditions for the EA operation, you should add the compiled StopATR_auto indicator file to the folder MQL5\Indicators\Downloads:
//+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- ... //--- create handle of the indicator iCustom handle_iCustom=iCustom(m_symbol.Name(),TimeFrame,"Downloads\\StopATR_auto", CountBarsForAverage, Target );
Although this Expert Advisor only closes positions, I have added a small code part for opening positions:
//+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(MQLInfoInteger(MQL_DEBUG) || MQLInfoInteger(MQL_PROFILER) || MQLInfoInteger(MQL_TESTER) || MQLInfoInteger(MQL_OPTIMIZATION)) { static long counter=-50; static bool trade_buy=true; if(counter==0) m_trade.Buy(m_symbol.LotsMin()); else if(counter%1500==0) { if(RefreshRates()) { if(trade_buy) { OpenBuy(m_symbol.LotsMin()); trade_buy=false; } else { OpenSell(m_symbol.LotsMin()); trade_buy=true; } } else counter=counter-9; } counter++; } //---
This unit only works when you test or optimize this Expert Advisor. Buy or Sell is opened after every 1,500 ticks.