Skip to content
chartTrigger
How it works Blog Demo Features Pricing Contact
Sign in Get started
How it works Demo Features Pricing Questions Contact Sign in

Home/The Trigger Line

Testing

How to Backtest a Trading Strategy Without Writing Any Code

8 September 20268 min read

What a backtest is actually for The assumptions that decide whether the number means anything Why it matters that the simulator is the same engine Running one with no broker account Reading the result After the backtest: the step most people skip Common questions

A backtest is not a prediction. It is a bug-finding tool. Used that way it is one of the most valuable things you can do before arming a rule; used as a forecast it is one of the most expensive mistakes in retail trading.

What a backtest is actually for

The honest framing: a backtest tells you how a rule would have behaved over a specific stretch of past bars, under assumptions you chose. That is enormously useful for a narrow set of questions and worthless for a broad one.

Good questions for a backtestQuestions it cannot answer
Does this rule fire at all, ever?Will this make money?
Does it fire 400 times a day because my condition is a state, not a crossing?What returns should I expect?
Does my stop sit where I think it sits?Is this better than that other strategy, in the future?
Is the position size what I intended for this instrument?How much should I risk?
Does close confirmation help or hurt on this timeframe?Whether the last regime resembles the next one.

Every rule in the left column is a logic bug you would otherwise discover with live money. That is the whole value proposition, and it is a big one.

The assumptions that decide whether the number means anything

A backtest result without its assumptions printed next to it is a number with no meaning. Four in particular:

  • Spread. Tested on a zero spread, nearly any scalping rule looks viable. Use a realistic figure for your broker and instrument.
  • Slippage. Your stop does not fill at your stop. Assume it does and you have tested a fantasy.
  • Starting balance and lot size. These set the scale of everything downstream.
  • Contract size — the one that quietly ruins crypto and metals results. See below.

chartTrigger stores these with every run and carries them into the exported CSV and the printable statement, because a result separated from its assumptions is how people end up believing things that were never claimed.

The contract-size trap

Most retail backtesting grew up around forex, where one lot is 100,000 units of currency and a pip is worth about ten dollars. Plenty of tools hard-code that ten-dollar assumption and then apply it to everything.

Apply a forex pip value to Bitcoin and one "lot" becomes ten thousand dollars of imaginary exposure rather than one coin. Your simulated profit and loss is then wrong by orders of magnitude — and wrong in the flattering direction often enough that people arm the rule.

chartTrigger carries a real contract size per instrument — 1 for a coin or a share, 100 for gold, 5,000 for silver, 100,000 for a currency pair — and computes pip value per lot fresh for each run from that, rather than falling back to a forex default.

The three-line sanity check. Before you read a single performance figure, confirm the run used a real spread, a non-zero slippage, and the correct contract size for the instrument. If any of the three is wrong, nothing below it means anything.

Why it matters that the simulator is the same engine

There is a failure mode where a strategy tests beautifully and behaves differently live, for a reason that has nothing to do with markets: the backtester and the live engine were two separate pieces of code that drifted apart. Your rule was tested by one interpretation and armed under another.

chartTrigger avoids this by running the Proving Ground through the same evaluator the live engine uses. Close confirmation, tolerance bands and crossing semantics behave identically in both, because they are literally the same logic. A difference between the simulation and live behaviour is then attributable to fills and spread, not to two codebases disagreeing about what your rule meant.

Running one with no broker account

You do not need a connected terminal to backtest. Where a broker account exists, its own history is preferred — it is your broker's prices, which is the most honest basis. Where there is none, the run sources bars from the public market feed instead of refusing, so a rule can be proven before any account exists.

Two details that matter more than they sound. History requests are paged rather than truncated — the upstream sources cap a single request at a thousand candles, so a ninety-day window is fetched across multiple pages instead of quietly becoming whatever the first page covered. And a backtest's request is never served from the small cache a live rule left behind, so asking for 8,000 bars does not hand you 500.

Reading the result

The run stores the candles it was made over, so the outcome is drawn as the actual trades on the actual bars that produced them. That sounds cosmetic; it is not. A table of trades tells you the rule made 43 entries. The chart tells you 39 of them were the same chop between two levels on one afternoon, which is the thing you needed to know.

Export gives you two formats, both carrying the assumptions:

  • A trades CSV for your own analysis.
  • A printable statement for a record.

After the backtest: the step most people skip

Not sure whether a backtest is even the tool you want? Demo accounts, the Strategy Tester, replay tools and rule simulators answer different questions, and this checklist shows what any simulator must model before its result means anything.

A backtest is past data. Ghost Mode is the present: the rule runs live, evaluates real incoming ticks and bars, records everything it would have done, and sends no order to any broker. Run it for a fortnight. It catches the whole class of problems a historical run structurally cannot — a symbol that is not what you thought, a session-time assumption, weekend gaps, an alert destination that was never actually working.

The sequence that works: build → backtest to find logic bugs → Ghost Mode to find reality bugs → arm small.

Common questions

Do I need to know MQL5?

No. The rule is built point and click, and the same rule is what gets tested. A JSON view exists if you want it.

Can I backtest without a broker account?

Yes. With no connected terminal the run sources history from the public market feed.

Is a good backtest result a reason to expect profit?

No, and chartTrigger labels every run a historical simulation for that reason. Its value is finding broken logic before it costs you money.

Prove the rule before you arm it

The Proving Ground runs your rule over past bars with the same evaluator the live engine uses, and states its assumptions on every run. No broker account required.

Create a free account

Read next

  • Why Your Breakout Alert Keeps Firing on a Wick (and How to Stop It)
  • Free Forex and Crypto Price Alerts Without Connecting a Broker
  • How to Run One Strategy Across Multiple MT5 Accounts
  • MT5 Simulator: Four Ways to Simulate Trading on MetaTrader 5 (and Which One Fits)
  • Trading Simulator Realism Checklist: 8 Things Every Simulator Must Model

Risk note. This article is educational material about how chartTrigger works. It is not investment advice, not a recommendation to trade any instrument, and nothing here forecasts results. Trading leveraged products carries a high risk of loss. Any historical simulation referred to is exactly that — a run over past bars under stated spread and slippage assumptions, not an indication of future performance.

chartTrigger

Draw a level on the chart. It executes itself, everywhere.

Product

How it works Walkthrough Features Pricing

Account

Create an account Sign in Plans and billing

Company

Blog Contact Questions

Legal

Terms of Service Privacy Policy Refund Policy Risk Disclosure Cookie Policy

Risk warning. Trading leveraged products carries a high level of risk and can result in losses that exceed your deposits. chartTrigger is execution and alerting software: it carries out rules you define and does not provide investment advice, recommendations or managed trading. Proving Ground output is a historical simulation with the spread and slippage assumptions stated on each run, not a forecast and not an indication of future results. You are responsible for every rule you arm and every order it sends. Only trade with money you can afford to lose.

2026 SOFTSHORE TECHNOLOGY LTD, trading as chartTrigger. 128 City Road, London, United Kingdom, EC1V 2NX