MiniBull Price Action EA
- エキスパート
-
Yusuf Levent Aksun
プラットフォームエンジニア & AWS認定プロフェッショナル。ソフトウェア開発、クラウドアーキテクチャ、
DevOpsトランスフォーメーションにおいて20年以上の経験を持つ。
現在、ロンドンのWorld Wide Technologyにてプラットフォームエンジニアリングを推進。
スケーラブルなインフラソリューションを構築し、開発チームがより迅速かつ確実に
デリバリーできる環境を実現。
🔹 AWS Certified Solutions Architect – Professional - バージョン: 1.27
- アップデート済み: 16 10月 2026
- アクティベーション: 5
# MiniBull Price Action EA v1.26
**A slow, rule-based trend follower for MetaTrader 5. It buys only when the whole market structure is bullish, holds for weeks, and steps aside when the structure turns.**
MiniBull Price Action EA trades the **market class** of the MiniBull Price Action indicator (v49.19). The class combines the monthly, weekly and daily KAMA with a long and a short adaptive moving average into one number from −3 (Strong Bear) to +3 (Strong Bull). The EA enters when the class is clearly bullish, the weekly character agrees, and the daily trend has not already run too far. It exits when the class turns to the other side or the weekly character breaks.
It is not a scalper, not a grid and not a martingale. It opens **one position per symbol, always with the broker's minimum lot**, with a hard stop-loss and take-profit on every order. **Every entry and every exit is explained in plain words in the Experts log**, so you always know why the EA traded.
---
## How it works
### 1. Market class (every 15 minutes)
On each closed M15 bar the indicator classifies the market from five views of price:
| View | Question |
|---|---|
| Monthly KAMA (last closed month) | Is price above it? |
| Weekly KAMA (last closed week) | Is price above it? |
| Daily KAMA (last closed day) | Is price above it? |
| AMA 200 on M15 | Is price above it? |
| AMA 9 on M15 | Is price above it? |
The monthly and weekly KAMA carry the most weight: the market cannot be Bull while price is below both of them.
### 2. Entry (all conditions on closed bars)
- **Class ≥ +2** (Bull or Strong Bull).
- **Weekly character not bearish.** The weekly KAMA character is tracked on daily closes: a sharp break (≥ 0.5 × daily ATR beyond the weekly KAMA) that is tested or held for 3 days changes the character. A pending sharp break down also blocks buys.
- **Trend-strength filter (since v1.23).** No new entry when the daily efficiency ratio of the last 20 closed days (|net move| ÷ sum of daily moves) is 0.30 or higher. When the market has already moved in a straight line, the class entry comes late and those trades lost money on average in the tests.
- No position already open for this symbol and magic number.
### 3. Exit
- **Stop-loss:** 2 × daily ATR(14), placed with the order.
- **Take-profit:** 8 × daily ATR(14), placed with the order.
- **Trend exit:** the position is closed when the class turns to the other side (≤ −1) or the weekly character turns against it. A neutral class does **not** close the trade (hysteresis), so normal pullbacks are held.
### 4. Every decision explained
Order comments have no abbreviations, for example `MiniBull BUY class +2 (bull)` and `MiniBull exit: class turned`. On every entry the Experts log says why, for example:
> MiniBull EA: why - BUY NAS100 at the 15-minute check: market class Bull (+2) - price is above the monthly and weekly trend and above 2 of the 3 short-term trends (daily, AMA 200, AMA 9). Weekly character: bullish. Daily trend strength (ER, 20 days): 0.20 (limit 0.30, the trend has not run too far yet). Stop 913.55 below (2.0 x daily ATR 456.78), target 3660.46 above (8.0 x daily ATR).
On every trend exit it names the new class and the weekly character. The log is written in English or Turkish (input Language).
### 5. Direction
- **Sell mode "Auto" (default):** sells only on currency pairs. On indices and gold the EA trades **long only**, because sells lost money on these markets in every test.
---
## Recommended symbols and chart
| Symbol | Chart | Status |
|---|---|---|
| S&P 500 (SPX500 / US500) | M1 | Tested – recommended |
| Gold (XAUUSD) | M1 | Tested – recommended |
| Nasdaq 100 (NAS100 / US100) | M1 | Tested – positive but the weakest of the three |
| Dow 30 (US30) | – | **Not recommended** (lost money in all tests) |
| EURUSD, DAX, CAC 40, oil, crypto | – | Not recommended (flat or losing in the tests) |
Attach the EA to an **M1 chart** of each symbol. The timeframe of the chart is used only to scan closed bars; the logic itself runs on M15, D1, W1 and MN data.
---
## Strategy Tester results
Versions 1.24 – 1.26 trade exactly like 1.23 (only texts and packaging changed; checked in the Strategy Tester), so these results apply to all of them. All tests: MetaTrader 5 Strategy Tester, "1 minute OHLC", deposit 50,000 USD, **broker minimum lot (0.01)**, spread and swap included. The numbers are what the tester printed; nothing is extrapolated.
### 2020.10 – 2026.10 (Dukascopy M1 data imported as custom symbols)
| Symbol | Trades | Net profit | Profit factor | Max. drawdown | Win rate |
|---|---|---|---|---|---|
| S&P 500 | 40 | +2,204 USD | 2.69 | 444 USD | 35 % |
| Gold | 58 | +1,886 USD | 2.81 | 268 USD | 22 % |
| Nasdaq 100 | 77 | +877 USD | 1.31 | 625 USD | 12 % |
### Effect of the v1.23 trend-strength filter (same data, same period)
| Symbol | v1.22 | v1.23 |
|---|---|---|
| S&P 500 | +1,610 USD, PF 2.12 | +2,204 USD, PF 2.69 |
| Nasdaq 100 | +641 USD, PF 1.24 | +877 USD, PF 1.31 |
| Gold | +1,594 USD, PF 1.89 | +1,886 USD, PF 2.81 |
The filter thresholds 0.25 – 0.40 all improved the result in an independent Python replica, so the effect does not depend on one exact value.
### Long history 2004 / 2012 – 2020.10 (never used to choose any setting)
| Symbol | Price result (no swap) | Swap charged by the tester |
|---|---|---|
| S&P 500 | +832 USD, PF 1.57 | −1,732 USD |
| Nasdaq 100 | +746 USD, PF 1.76 | −2,130 USD |
| Gold (from 2004) | +760 USD, PF 1.51 | −2,163 USD |
The strategy made money from price moves in these years as well. **Be aware:** the MT5 tester applies the broker's *current* swap rate (fixed in points) to all of history, when interest rates were near zero and prices were much lower, so the net result before 2020 shows a loss. For the future the swap of 2020 – 2026 is realistic, and it is a real cost: it took 30 – 60 % of the price profit in that period. Swap-free accounts benefit the most.
### Your broker's own data (2020 – 2026, version 1.22)
S&P 500: 45 trades, +1,355 USD, PF 1.77 · Nasdaq 100: 67 trades, +735 USD, PF 1.28 · Dow 30: −807 USD (not recommended).
---
## What to expect
- **Few trades.** About 5 – 10 trades per year per symbol in calm trend years. In choppy years the class can flip back and forth and a symbol may see 20 – 30 trades, most of them small losses closed by the trend exit within hours. Some months have no new trade.
- **Low win rate, large winners.** 12 – 35 % of trades win; the average winner is 5 – 10 times the average loser. Most of the profit comes from a few large trends; the five best trades made about 70 % of the net profit.
- **Losing streaks are normal.** Streaks of 13 – 24 losing trades occurred on the indices and up to 34 on gold (2004 – 2020). In a bootstrap of the results, about one 12-month period in four ended with a loss.
- **Judge it over years, not weeks.** With ~30 trades a year a fair comparison with the test needs 1 – 2 years of live trading.
- **The three symbols are not independent.** S&P 500 and Nasdaq 100 often win and lose together. S&P 500 + gold gave the best balance of profit and drawdown in the tests.
- **The take-profit is far on purpose.** 8 × daily ATR is a cap for strong trends; most trades end with the trend exit. Targets of 3 – 12 × ATR were tested; 8 – 10 was the most stable in both periods.
### Tested and NOT added
Ideas that sounded good but made the results worse on 2012 – 2026 data (spread and swap included), so the EA does not use them:
- closing at a small profit (+3 … +50 USD at minimum lot);
- closing every evening or before the weekend (gap protection) - the profit of this trend follower comes partly from overnight moves;
- waiting hours after an exit before a new entry;
- trading only in the New York or European session;
- adding a second position at a small profit and closing it quickly.
### If you close a trade by hand
The EA does not remember positions, it only checks whether one is open. If you close its trade by hand while the market class is still +2 or higher, it buys again at the next 15-minute check. To stop it, untick **Allow Algo Trading** in the EA settings (Common tab) or remove it from the chart **before** you close the trade. The stop-loss and take-profit stay on the broker's server either way.
Past results do not guarantee future results. Test on a demo account first.
---
## Requirements
- MetaTrader 5, hedging or netting account (hedging if you run other EAs on the same symbol).
- **Nothing else to install.** The MiniBull Price Action indicator (v49.20) that calculates the market class is built into the EA; it runs inside the EA, draws nothing and does not interfere with indicators you attach to the chart yourself. (The indicator is also available as a separate product if you want to see it on your charts.)
- Enough history: open W1 and MN1 once on a new symbol so the terminal downloads it.
- Algo Trading enabled in the terminal and in the EA settings.
---
## Inputs
| Group | Input | Default | Meaning |
|---|---|---|---|
| Language | Language | English | English or Turkish messages |
| Indicator | Indicator name | (empty) | Empty = the built-in v49.20 indicator |
| Trading | Magic number | 26101213 | Identifies this EA's positions |
| | Entry mode | Class | Class entry (tested); Trigger / Zone are comparison modes |
| | Allow buy trades | true | |
| | Sell trades | Auto | Auto = currency pairs only |
| | Symbol check | Warn | Writes in the Journal whether the symbol type passed the tests |
| | One position at a time | true | |
| | W1 character filter | true | No buys after a hard weekly KAMA break down |
| | **Max trend ER (v1.23)** | **0.30** | No new entry when the D1 efficiency ratio ≥ this; 0 = off |
| | Max hold hours | 0 | 0 = off |
| Risk | Exit mode | Trend | Far TP + trend exit |
| | Trend exit on | Opposite class | Neutral class holds the trade |
| | Class timeframe | M15 | M15 class, checked every 15 minutes |
| | Entry minimum class | 2 | 1 Cautious, 2 Bull, 3 Strong |
| | Stop mode | Daily ATR | |
| | ATR period | 14 | Daily ATR |
| | SL ATR multiplier | 2.0 | |
| | Trend TP ATR | 8.0 | |
| | Slippage | 20 points | |
**Lot size:** always the broker's minimum lot (SYMBOL_VOLUME_MIN). There is no lot input on purpose.
**Filling mode:** read from the symbol; if the broker rejects it, the other modes are tried.
---
## Journal
Every entry and trend exit is explained in a full sentence (see section 4). Once a day the EA also prints a summary: signals seen, trades opened and why signals were skipped (W1 character, strong trend (ER), position open, order failed …), plus trend exits. This shows at a glance why the EA did or did not trade.
---
## Version history
- **1.26** – the built-in indicator (v49.20) runs in EA mode: it only calculates and draws nothing, so it never overwrites the objects of a Price Action indicator on the same chart. Trading logic unchanged.
- **1.25** – the market-class indicator (v49.19) is built into the EA: one file, nothing else to install. Trading logic unchanged.
- **1.24** – plain-language records: order comments without abbreviations, a "why" line for every entry and every trend exit in the Experts log. Trading logic unchanged (same results as 1.23).
- **1.23** – trend-strength entry filter (daily efficiency ratio ≥ 0.30 → no new entry).
- **1.22** – defaults back to SL 2 × daily ATR, TP 8 × daily ATR.
- **1.19** – class on M15 (checked every 15 minutes).
- **1.18** – trend mode take-profit (8 × daily ATR).
- **1.12** – exit hysteresis: a neutral class holds the position.
- **1.13** – sell mode "Auto" (long only on indices, gold, oil and crypto).
