Where the 1.37 Fibonacci extension gets rejected by a hammer pin bar — long lower wick, small body. We hunt every occurrence on real intraday data, then stress-test our own results. The honest verdict: a modest, timeframe-dependent tilt — not the "Sharpe 5, 70% win rate" a naive grid search will happily report. Here's the teardown, and an MT5 robot built for the real numbers.
A pin bar is a rejection candle: a small body with one long wick. Price stabbed in one direction, then got slammed back. Two flavours:
Our rule (enhanced v0.2): body ≤ 35% of range, one wick ≥ 50% of range, the opposite wick ≤ 25%. Looser thresholds capture more edge — stricter pin bars don't improve the win rate.
Take the last swing leg — a low to a high (or high to low). Project it 137% beyond the end. That's the level where an over-extended move tends to run out of fuel.
For an up-leg: level = low + 1.37 × (high − low), sitting
above the swing high. A down-leg projects the mirror, below the low.
It's an overshoot target — exactly where you'd expect a rejection wick if the move is exhausted.
A pin bar whose dominant wick tags the 1.37 level, in the rejection direction. Here's a real one, pulled live from the data:
We scanned — candles across — of the highest-volume US stocks (60 days of 15-minute bars). Pick a name and see every signal. Green = it worked, red = it didn't.
We grade every signal with a triple-barrier test: does price travel ±1 ATR in the predicted direction first, within the next 12 bars? Run it across — resolved signals on — timeframes and you get…
A dead coin flip. Most people stop here and bin the strategy. But that single number hides the whole story — because it averages two very different worlds together. ↓
Split those same signals by the chart they fired on. The setup that looked dead suddenly has a pulse — on one timeframe, and not the other.
Same rule, same stocks, same grading. On the faster chart the 1.37 rejection actually leads price; on the slower one the level gets chewed through and the wick means nothing. Pick the timeframe and you've already made most of the decision. (DabsPro runs on any timeframe — this is just where the money is.)
Staying on the timeframe that works, two more conditions nudge the win-rate further — each weak alone, useful together.
Signals in the opening hours follow through; the dead middle of the session is where edges go to die.
A rejection on heavy relative volume is a crowd changing its mind — not one lonely wick.
Filter the — resolved signals live. Drag the knobs; watch the win-rate move across real trades. Start by switching the timeframe.
An earlier build of this page bragged "70% OOS win rate, Sharpe 4.9, profitable in every regime." A reviewer took it apart — correctly. Here's why those numbers are inflated, and what we fixed.
The whole strategy, automated for MetaTrader 5 — with the money management baked in and the review's bugs fixed, because a modest edge only survives with disciplined risk and honest accounting.
MQL5/Experts, compile in MetaEditor, demo first.
double CalcLots(double slDistPrice)
{
double capital = MathMin(AccountInfoDouble(ACCOUNT_EQUITY),
AccountInfoDouble(ACCOUNT_BALANCE));
double riskMoney = capital * InpRiskPercent / 100.0; // e.g. 0.5%
double tickVal = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double tickCount = slDistPrice / tickSize; // SL distance in ticks
double lots = riskMoney / (tickCount * tickVal); // solve for size
return NormalizeLots(lots); // clamp to broker step
}
// + OrderCalcMargin pre-trade check, SYMBOL_TRADE_STOPS_LEVEL-aware
// SL/TP, and per-ticket initial-risk cache for correct break-even / trailing.