Blog

What the AI assistant can and cannot change in your strategy

TradeSmithy Team5 min read

Ask a general-purpose chatbot for an Expert Advisor and you get a wall of MQL5 you cannot verify, built on assumptions you cannot see. If it is wrong, your options are to read several hundred lines of a language you were avoiding, or to paste the error back and hope.

The assistant in the builder works on a different object. It receives your current graph, returns a modified graph, and the result has to survive three checks before it is allowed to touch your canvas.

What actually happens when you send a message

  1. Normalize. Connections are mapped onto the canonical port ids. A model that writes output_rsi when the port is main gets corrected rather than silently dropped.
  2. Validate. Every node's settings are checked against the same registry the properties panel renders from, and every edge against the same rules that apply when you drag one by hand.
  3. Synchronize. Dynamic parts of the graph are rebuilt from the edge list — if-condition rows, input counts, which ports are wired versus typed.

Only then does the canvas change — and the change goes through the normal history, so if you do not like the result, Undo puts it back.

It can do exactly what the panel can do

The assistant is told about every node type, every indicator available on your project's platform, every parameter each indicator takes with its default and range, and every legal value for every dropdown.

That list is generated from the same registries the properties panel reads, not written by hand. This is the detail that makes the feature trustworthy over time: a hand-maintained list goes stale silently, and the symptom is not an error message — it is the model confidently emitting a parameter that no longer exists, which is then ignored, leaving your EA running on a default you never chose.

So the practical rule is simple. If you could set it in the properties panel, you can ask for it. If you could not, neither can the assistant. There is no category of strategy that exists only in the chat history and cannot be inspected, edited or exported.

What it is not allowed to touch

Three things are refused on principle:

  • Custom indicator definitions. It can wire your indicator in, change what feeds it and read its outputs. It cannot rewrite the definition — whatever is on the canvas for that node is kept. A model that "tidies" a file name produces an EA that no longer compiles on your machine.
  • The side of an order. A Buy node is a buy. That is the node type, not a field to be edited.
  • Naming an assignment target by string. An assignment is wired to the variable it writes to. Typing a name is how you end up with an EA declaring atrStop and assigning to atrSop, with nothing on the canvas able to disagree.

Values outside a legal range are rejected rather than applied. A close type of "Everything" or a comparison operator of => would render a control with nothing selected and generate code that does not compile, so neither reaches the canvas.

When it does get something wrong

The most useful failure to know about is a dropped connection: the model asks for a wire between ports that cannot legally connect, the wire does not appear, and nothing on the canvas explains why.

That case is counted and reported rather than left invisible — it is the signal that the assistant's description of the schema has drifted from the schema, which is a defect on our side, not yours. If a reply lands and the wiring looks thinner than you asked for, that is what happened. Asking again in smaller steps usually gets it.

Asking well

  • Start from a template, not a blank canvas. A working graph shows the model what you are building. "Add a trailing stop of 30 pips to this" against a real strategy is far more answerable than "build me a scalper".
  • One change at a time. The assistant returns a whole graph, so a request with four unrelated parts is four chances for one of them to come back differently than you meant — and harder to undo selectively.
  • Name things concretely. "Change the RSI period to 21" beats "make it less sensitive". The first is a field; the second is a judgement about your strategy that you are better placed to make.
  • Say what should happen, not how to code it. "Only trade between 08:00 and 16:00" is a request. "Add an if(TimeHour(TimeCurrent()) >= 8) guard" is you writing MQL through an intermediary.

Quotas, plainly

The assistant is a paid feature. The Free plan does not include it — Free covers three projects and one code export, which is enough to carry an idea through to a compiled EA by hand.

PlanAI chat messagesCode exports
FreeNot included1 per month
Pro — $19400 per month (50 per day)100 per month
Premium — $491,200 per month (150 per day)300 per month

The daily caps are there because a monthly allowance is easy to spend in an afternoon and then miss for four weeks. Requests are also bounded by size and by a timeout. A quota unit is refunded only when the model was never billed for the work — a bad configuration, an upstream error, a connection that failed. A reply the model genuinely produced is not refunded even when it turns out to be unusable, because those tokens were paid for either way.

What it will not tell you

Whether the strategy is any good.

The assistant will faithfully build what you describe, including a bad idea, quickly and correctly. It has no view on whether your entry has an edge, and nothing in this app will claim one — for reasons we wrote down separately. Testing that is still your job, and it is the part worth spending your time on.

Keep reading

← More from the TradeSmithy blog