Guida al testing e all’ottimizzazione di un expert advisor AI | Deriv Blog
Perfezioni il Suo expert advisor AI con tecniche di test adeguate. La nostra guida illustra i problemi più comuni, i metodi di test e l’ottimizzazione degli expert advisor per bot di trading affidabili.
Dal team Deriv · 21 April 2025 · 7 min di lettura

Gli expert advisor per il trading AI sono arrivati — ma deve comunque testarli e perfezionarli.
Se ha già utilizzato strumenti AI come Claude o ChatGPT per creare un expert advisor per Deriv MT5 o un cBot per Deriv cTrader, è già a buon punto. Ma anche quando il codice sembra corretto, può comunque contenere errori che influenzano il funzionamento del bot.
Prima di eseguire il Suo expert advisor (EA) in un mercato reale, è importante testarlo e assicurarsi che funzioni nel modo previsto.
In questa guida, esamineremo gli errori di programmazione più comuni negli EA generati dall'AI, come correggerli e alcuni consigli pratici per migliorare le prestazioni del Suo bot.
Errori comuni di programmazione MQL5 con l'AI
Ecco alcuni dei problemi più frequenti riscontrati negli EA generati dall'AI, insieme ai modi per correggerli:
- Errore di identificatore non dichiarato in MQL5
Questo errore compare quando il bot utilizza una variabile o un nome che non è stato definito correttamente, ad esempio perché manca un parametro o perché viene usato un nome errato in indicatori come iMA().
Correzione:
Controlli i parametri dell'indicatore e si assicuri che tutti i nomi delle variabili corrispondano a quanto previsto in MetaEditor (lo strumento di programmazione di MT5).
- Mancano le funzioni di esecuzione ordini Buy/Sell
Alcuni bot generati dall'AI tralasciano la logica essenziale per l'apertura delle operazioni.
Correzione:
Aggiunga manualmente le funzioni di esecuzione ordini di base. Ecco un esempio di struttura semplice per inserire un ordine di acquisto:
void OpenBuy() {
MqlTradeRequest request; MqlTradeResult result;
request.action = TRADE_ACTION_DEAL;
request.type = ORDER_TYPE_BUY;
request.price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
request.volume = 0.1; request.magic = 12345;
OrderSend(request, result);
}
Si assicuri inoltre di includere la logica per gli ordini di vendita e di definire le condizioni in cui le operazioni devono essere aperte.
- Condizioni di loop non corrette in Deriv cTrader
In Deriv cTrader, la logica del bot deve essere eseguita all'interno di funzioni specifiche come OnBar() o OnTick(). Queste vengono attivate automaticamente quando il mercato si muove. Se il codice è collocato al di fuori di queste sezioni, ad esempio nel loop sbagliato o nell'ambito globale, non verrà eseguito come previsto.
Correzione:
Si assicuri che i bar e i tick siano gestiti all'interno di OnBar() o OnTick(). In questo modo il bot potrà reagire correttamente ai nuovi tick o ai nuovi bar durante il backtesting e il trading live.
- Calcolo errato della dimensione del lotto in base alla percentuale del saldo
Quando l'AI prova a impostare la dimensione del lotto in base al saldo del Suo conto (ad esempio rischiando il 2% per operazione), potrebbe tralasciare un dettaglio importante: la dimensione del contratto. Questo può portare a dimensioni del lotto inaccurate. Non genererà un errore di codice, ma durante il test vedrà dimensioni delle operazioni che non corrispondono alle impostazioni di rischio, con conseguente sovraesposizione o sottoesposizione nelle operazioni live.
Correzione:
Usi una formula per la dimensione del lotto che tenga conto della dimensione del contratto, ad esempio:
//-----------------------------------------------------------------
double accountBalance = AccountInfoDouble(ACCOUNT_BALANCE);
double riskMoney = accountBalance * (RiskPercent / 100.0);
double tickValue = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_VALUE);
double tickSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_TICK_SIZE);
double pointValue = tickValue / tickSize;
double contractSize = SymbolInfoDouble(_Symbol, SYMBOL_TRADE_CONTRACT_SIZE);
if(contractSize > 0)
pointValue = pointValue / contractSize;
double lotSize = riskMoney / (StopLossPoints * pointValue);
double minLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
double maxLot = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MAX);
double lotStep = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_STEP);
lotSize = MathMax(lotSize, minLot);
lotSize = MathMin(lotSize, maxLot);
lotSize = MathFloor(lotSize / lotStep) * lotStep;
- Altri errori
Se riscontra uno di questi errori — o qualsiasi altro — può sempre chiedere aiuto al Suo modello AI per individuare e correggere il problema.
Le basta copiare il messaggio di errore e il codice pertinente, quindi condividerli con il modello AI. Nella maggior parte dei casi, sarà in grado di individuare il problema e proporre una correzione o suggerire possibili soluzioni.
Consiglio: esegua sempre un backtest prima di andare live. Problemi di questo tipo non emergono finché non testa la strategia con dati di mercato reali.
Migliori il Suo expert advisor generato dall'AI
Una volta che il bot funziona, può apportare piccoli cambiamenti per migliorarne le prestazioni e la stabilità. Ecco alcuni accorgimenti comuni per farlo:
- Aggiunga una logica di gestione degli errori per gestire comportamenti imprevisti durante l'alta volatilità o in caso di problemi di connessione.
- Usi uno stop loss trailing per bloccare i potenziali profitti quando il mercato si muove a Suo favore.
- Esegua il backtest della Sua strategia con dati storici per vedere come si sarebbe comportata.
- Riorganizzi e pulisca il codice per migliorarne la leggibilità e l'efficienza. Questo renderà più semplice aggiornarlo o risolvere eventuali problemi in seguito.
Consiglio: usi il MetaEditor Debugger (su MT5) per testare il funzionamento del Suo bot passo dopo passo.
Perché il backtesting delle operazioni è fondamentale
I bot generati dall'AI sono un ottimo modo per automatizzare il trading senza dover scrivere il codice da zero. Ma anche con l'AI, la Sua strategia ha comunque bisogno di controlli e adattamenti umani per funzionare bene in condizioni reali.
Prima di andare live, si prenda il tempo necessario per testare in modo approfondito ed effettuare piccoli miglioramenti. Anche correzioni minime possono fare una grande differenza nella costanza e nell'efficacia con cui il Suo EA opera.