Quick Start
This page walks you through your first honest run of Axiom Strategy Lab Pro — from adding the script to your chart through the first checkpoint where you can confirm the engine is reading your rules the way you intend...
Written By Axiom Admin
Last updated 1 day ago
Quick Start
This page walks you through your first honest run of Axiom Strategy Lab Pro — from adding the script to your chart through the first checkpoint where you can confirm the engine is reading your rules the way you intended. Do not skip the Properties review. The numbers in that tab shape every result the tester produces.
Step 1: Add the strategy to your chart
Add Axiom Strategy Lab Pro to any TradingView chart. The chart's symbol and timeframe will become the testing environment for your strategy. Choose something you actually intend to trade on — results will change on a different symbol or timeframe, and that difference is real, not a bug.
When the script loads, the diagnostics table will appear on the chart. It will say "Strategy Inactive" in red. That is normal. The strategy will not run until you complete the consent step below.
Step 2: Review the Properties tab
Open the strategy's Properties tab. This is where the tester's simulation model is configured. These settings affect every fill, every equity calculation, and every metric in the results.
The defaults ship with:
Initial capital: 100,000
Commission: 0.1% per trade
Slippage: 15 ticks per fill
Pyramiding: 50 (maximum concurrent open trades)
Order size: 10% of equity
Currency: USDT
Before you do anything else, ask yourself:
Does the commission match your broker's actual rate for this asset? The default 0.1% is reasonable for some crypto spot exchanges but wrong for equities, futures, and many other crypto pairs. If you do not know your broker's rate, look it up now — every metric in the tester depends on this number.
Is 15 ticks of slippage too generous or too conservative for the market you are testing? On a liquid large-cap equity, 15 ticks may be too pessimistic. On a low-liquidity altcoin, it may be wildly optimistic. The tester applies this to every single fill.
Do you actually want to allow 50 concurrent positions, or does your thesis call for something simpler? If you are testing a single-entry strategy, set pyramiding to 1. Leaving it at 50 means the tester will happily open dozens of concurrent trades if your conditions fire frequently.
Is USDT the right accounting currency for the pair you are charting?
If you do not know all the answers, that is fine — but write down what the defaults are so you know what assumptions your first results carry. This matters more than it sounds. A strategy tested at 0.01% commission and 0 slippage will look profoundly different from the same strategy at 0.1% and 15 ticks. Both results are "correct" for their assumptions. The question is which assumptions match your reality. See Settings for the full reference.
Step 3: Confirm activation and choose a direction mode
In the Inputs tab, the Strategy Activation group contains two controls: the review confirmation checkbox and Strategy Direction.
Check Confirm review of strategy properties only after you have actually reviewed the Properties tab. This is not a nuisance. It exists because commission, slippage, initial capital, pyramiding, order size, currency, and fill model directly shape every result the tester reports. Checking the box without reviewing those settings defeats its purpose.
Then choose your direction mode:
Long Only — only the long-side YAML sections are evaluated
Short Only — only the short-side YAML sections are evaluated
Swing Mode — both directions are active, and a long entry can close an existing short (and vice versa)
Start with Long Only or Short Only for your first run. Swing Mode adds interaction effects between directions that are easier to understand once you have seen one direction work in isolation.
Step 4: Connect external indicators (if needed)
If your strategy idea references an external indicator — an EMA, RSI, Bollinger Band, or anything else on your chart — you need to connect it through the Custom Token Section in the Inputs tab.
Each token slot has three fields:
Name — the token name your expressions will use (e.g.,
EMA_50). Case-sensitive. Must be unique.Type — Number or True/False, matching the indicator's output type.
Source — the actual indicator plot on your chart that provides the data.
If you reference a token name in your YAML expressions that does not have a matching custom token (and is not a built-in token), the engine will raise an "Unknown identifier/token" error and the strategy will not run. The diagnostics table will identify the unrecognized name. Double-check your token names — they are case-sensitive.
Step 5: Paste your YAML
The Inputs tab has eight text-area fields for your trade logic — four per direction:
Long Setups / Short Setups
Long Entries / Short Entries
Long Take Profits / Short Take Profits
Long Stop Losses / Short Stop Losses
Paste your YAML into the sections that match your direction mode. If you chose Long Only, only the Long sections will be evaluated.
If you do not have YAML ready, start with the simplest possible test: one entry with a market order triggered by a single condition. Something like a moving average crossover. The Beginner example in Teaching Examples is designed for exactly this. The goal of your first run is not to test a real thesis — it is to confirm the engine is parsing and evaluating correctly.
See Rules & Risk for how setups, entries, and exits relate to each other. See YAML Reference for every field in every section. If you need guided working examples to start from, see Teaching Examples.
Step 6: Review TradingView risk stops
The TradingView Risk Stops group contains the platform-level risk limits:
Max strategy drawdown
Max consecutive loss days
Max intraday loss
Max intraday filled orders
These are not YAML cooldowns. They are TradingView strategy.risk stops. If one trips, TradingView can cancel pending orders, close any open position, and block new order events. The intraday limits normally reset with the session. The drawdown and consecutive-loss limits should be treated as hard stops for the strategy run.
Use values that match the guardrails you actually want. Do not loosen them just to make a backtest look better, and do not set them so tight that you accidentally halt a test before the strategy has enough room to behave normally.
Step 7: Read the diagnostics table
After checking consent, one of two things will happen:
If your YAML is valid and expressions compile: The diagnostics table will show "Strategy Active" in green, or "Strategy Active with Warns" if non-blocking warnings are present. The strategy tester will begin processing historical bars and you will start seeing trades and equity curve data.
If there are blocking diagnostics: The diagnostics table will show "Strategy Inactive" in red, along with the retained diagnostics, their severity, their location, and repair guidance. Common first-run errors include:
YAML syntax problems (indentation, missing colons, unclosed quotes)
Unknown token names in expressions
Schema validation failures (a required field is missing or a value is out of range)
Fix the reported issue, re-open the Inputs tab, correct the YAML, and try again. The diagnostics table is your first triage tool.
Step 8: Verify with the schema summary table
In the Inputs tab, enable "Show schema summary table." A table will appear on the chart showing how many setups, entries, take profits, and stop losses the engine parsed — broken out by direction.
This is your first real verification checkpoint, and it catches more problems than you would expect. Compare the numbers to what you intended:
If you defined two long entries, the table should show 2 under Long Entries. If it shows 1, one of your entries failed to parse — likely a YAML indentation issue or a missing required field. If it shows 0, the entire section may have been rejected.
Do not expect exit counts to mirror entries one-for-one. Take profits and stop losses are independent units against the current position. The counts should match the YAML blocks you intentionally defined. If they do not, an exit block may have failed to parse or been pasted under the wrong direction section. Use the diagnostics table alongside the schema summary so unknown or removed fields do not hide in plain sight.
If you defined named setups but the setup count is lower than expected, one of your setups did not parse. Check the YAML structure for that specific setup block.
If you defined entries with
belongs_to_setupbut the setup count is zero, do not assume those entries quietly fell back to GLOBAL. A missing setup reference is a validation problem, not a silent fallback. Check the diagnostics table before trusting anything the counts suggest.
Step 9: Verify with the expression diagnostics
Enable "Show expression value label." A label will appear near the price axis showing every operational expression with its current value, evaluation status, and whether it is being used.
Look for:
EVAL — the expression is being reached and evaluated on the current bar. This is what you want.
SKIP — the expression exists but is not being evaluated (its owning setup may not be active, or a gate condition is blocking it).
EMPTY — the expression field is blank or was not compiled.
If an expression you expected to be evaluating shows SKIP, trace back to the setup it belongs to. Is the setup active? Is the gate passing? SKIP does not mean the expression is broken — it means the engine has not reached it yet on this bar, usually because something upstream (the setup state or the entry's gate) is preventing evaluation. The diagnostics tell you what is happening right now — use them. Scroll to different bars and watch the status change as conditions come and go.
If an expression shows EVAL but the value looks wrong — a boolean showing false when you expect true, or a number that does not match what the indicator shows — check that the custom token source connection is working. A correctly named token with a broken source will report 0 or na instead of the indicator's actual value. Also verify token names are case-correct: ema_50 and EMA_50 are different tokens, and a misspelled name will cause a validation error that prevents the strategy from running. See Default Tokens for the complete list of built-in token names and their exact casing.
What "normal" looks like
On a successful first run, you should see:
The diagnostics table reads "Strategy Active" or "Strategy Active with Warns" after you have reviewed any warnings
The schema summary counts match your YAML
Trades appear in the strategy tester's trade list
An equity curve is drawn
Expression diagnostics show your conditions evaluating
Ordinary surprises that are not problems:
The equity curve does not start from the very first bar. The strategy needs bars to build data before conditions can fire.
Trade count is lower than you expected. Conditions may be stricter than they feel when you read them as prose. Check the expression diagnostics to see whether triggers are evaluating as true.
Results are different from what you imagined. That is the point. The tester is showing you what your rules actually produce under its assumptions — not what you hoped they would produce.
Surprises that are problems:
Zero trades when you expected some. See Troubleshooting.
"Strategy Inactive" that does not go away after fixing errors. Check that consent is checked and all YAML sections are valid.
Expression diagnostics show NOT_USED for conditions you thought were active. A token name mismatch or a schema ownership issue is likely.
What to do next
Once you have a working first run, resist the urge to start optimizing. First, understand what you are looking at:
Read Rules & Risk to understand how setups gate entries and how exits are evaluated.
Read Settings to understand what the Properties tab numbers actually do to your results.
Read Backtesting & Realism to understand what the tester assumes about your fills — and where those assumptions break down.
The first run is not a conclusion. It is a calibration point. Now you know the engine is reading your rules. The next step is understanding whether the results it gives you back are telling you something real.