Common Backtesting Mistakes

Case Study: Navigating Pitfalls in Backtesting an Ichimoku Trend Trading Strategy on M15 Time Frame

Let’s embark on a practical example to elucidate common backtesting mistakes associated with an Ichimoku Trend Trading strategy on the M15 time frame. The Ichimoku Cloud, known for its comprehensive trend-following components, adds complexity to the backtesting process. In this case study, we’ll explore the challenges and provide insights into mitigating them.

1. Ichimoku Trend Trading Strategy Implementation

We’ll use a simplified Ichimoku Trend Trading strategy focusing on the cloud’s Kumo (Senkou Span A and Senkou Span B) crossovers. Buy signals will be generated when Senkou Span A crosses above Senkou Span B, indicating a bullish trend, and sell signals vice versa.

2. MT4 Implementation

Below is the MQL4 code for implementing the Ichimoku Trend Trading strategy on the M15 time frame:

// Define Ichimoku parameters
input int tenkanSen = 9;
input int kijunSen = 26;
input int senkouSpanB = 52;

// Define external parameters for backtesting
input double riskPercentage = 2.0; // Fixed percentage of capital to risk

// Define global variables
double capital; // Trading capital
double lotSize; // Calculated position size

//| Expert initialization function |
int OnInit()
// Get initial trading capital
capital = AccountFreeMarginCheck(_Symbol, OP_BUY, 1.0);


//| Expert tick function |
void OnTick()
// Your Ichimoku Trend Trading strategy logic here
// …

// Example: Open a buy order with dynamic position size
if (YourIchimokuBuyCondition)
lotSize = CalculatePositionSize();
OrderSend(_Symbol, OP_BUY, lotSize, Ask, 3, 0, 0, “Buy Order”, 0, 0, Green);

// Example: Open a sell order with dynamic position size
if (YourIchimokuSellCondition)
lotSize = CalculatePositionSize();
OrderSend(_Symbol, OP_SELL, lotSize, Bid, 3, 0, 0, “Sell Order”, 0, 0, Red);

//| Function to calculate dynamic position size |
double CalculatePositionSize()
// Calculate position size based on dynamic formula
double positionSize = (riskPercentage / 100.0);

// Adjust position size based on available margin
double maxLots = AccountFreeMarginCheck(_Symbol, OP_BUY, 1.0) / MarketInfo(_Symbol, MODE_MARGINREQUIRED);

if (positionSize > maxLots)
positionSize = maxLots;


3. Common Backtesting Mistakes in Ichimoku Trend Trading on M15

A. Inadequate Time Frame Selection:

  • Backtesting on the M15 time frame might not capture the strategy’s effectiveness across various market conditions. It’s crucial to consider multiple time frames for a comprehensive evaluation.

B. Overlooking Intrabar Price Movements:

  • The M15 time frame involves more price data within each bar. Ignoring intrabar price movements in backtesting can lead to inaccurate strategy performance assessment.

C. Dynamic Nature of the Cloud:

  • Ichimoku Cloud’s components are dynamic and respond to price movements. Failing to adapt the backtest to these dynamic changes might result in suboptimal strategy outcomes.

4. Example Scenarios

Scenario 1: Inadequate Time Frame Selection

  • Backtesting on M15 shows high profitability. However, the strategy performs poorly on higher time frames, revealing its sensitivity to the selected time frame.

Scenario 2: Overlooking Intrabar Price Movements

  • Ignoring intrabar movements might lead to missed trade opportunities or inaccurate evaluation of entry and exit points.

Scenario 3: Dynamic Nature of the Cloud

  • The Ichimoku Cloud’s dynamic nature might result in missed trends or false signals if the backtest fails to adapt to changing market conditions.

5. Mitigation Strategies

A. Multiple Time Frame Analysis:

  • Complement M15 backtests with analyses on higher time frames to ensure the strategy’s robustness across different periods.

B. Intrabar Price Movements Consideration:

  • Implement a more granular approach by considering intrabar price movements, ensuring accurate representation of strategy performance.

C. Dynamic Cloud Adaptation:

  • Periodically update the strategy parameters to adapt to the dynamic nature of the Ichimoku Cloud during backtesting.

6. Conclusion

This case study highlights the challenges of backtesting an Ichimoku Trend Trading strategy on the M15 time frame. Traders must be mindful of the time frame’s limitations, intrabar price movements, and the dynamic nature of the Ichimoku Cloud. Mitigating these challenges involves a thoughtful approach, including multiple time frame analysis and adapting the strategy to the intricacies of the Ichimoku components.


  • Hosada, G. (1996). “Ichimoku Kinko Hyo: A New Approach to Analyzing Market Trends.”*
Hi, I’m admin

Leave a Reply

Your email address will not be published. Required fields are marked *