In questo articolo
Dopo questo articolo saprai…
- Separare dato mancante da condizione falsa.
- Verificare connessione e ordini precedenti come stati distinti.
- Riprodurre i casi di confine prima di trasferire la regola.
I concetti senza lasciare l’articolo
Backtesting Esecuzione di un ordine Valore nozionale della posizione Commissione di trading Conto demo Spread Bid–AskMQL5 e Python permettono di automatizzare un processo definito con dipendenze differenti. Parti da conto, dati e organizzazione operativa. Linguaggio, poche righe o architettura ibrida non stabiliscono regole profittevoli né un percorso universalmente più veloce verso esecuzioni affidabili.
Confronta architetture, non slogan
Un EA MQL5 opera attraverso il terminale MT5. Python può usare il pacchetto ufficiale MetaTrader 5, API separate del broker o soltanto file storici. Il pacchetto comunica col terminale, non è un collegamento diretto a qualunque server broker. Le distribuzioni devono corrispondere a interprete e sistema: la release PyPI esaminata offre wheel Windows x86-64, cosa diversa dalla disponibilità di Python su altri sistemi.
initialize() può avviare un terminale quando necessario. Specifica installazione prevista e rileggi conto, server e stato demo/live, senza affidarti all’ultimo conto usato. Una connessione riuscita non prova l’esito di un ordine precedente. Un’altra API richiede verifiche proprie di entità, prodotto, permessi e dati; italiano dell’interfaccia non equivale a residenza in Italia.
Su uno schermo piccolo scorri la tabella per leggere tutte le colonne.
| Assetto | Dipendenze e primo controllo |
|---|---|
| EA MQL5 | Terminale, codice, parametri e conto: conferma versione attiva e risposte. |
| Python tramite MT5 | Processo Python più terminale e comunicazione: verifica conto dopo la connessione. |
| Python tramite API broker | Autorizzazione, adattatore, limiti e ordini: riconcilia unità e permessi. |
| Ricerca Python, esecuzione MQL5 | Regole e versioni corrispondenti: riproduci gli stessi input di confine. |
Trading algoritmico: primi passi fra dati, regole e controlli e EA MQL5:primi passi con eventi,dati e ordini forniscono il contesto. Meno processi possono semplificare supervisione, ma non sostituiscono una risposta a rifiuto, eseguito parziale o stato incerto.
L’integrazione MQL5 ha condizioni
MQL5 combina eventi, funzioni operative e tester. Verifica dati, costi ed esecuzione: il tester non è automaticamente la storia reale del broker. L’ottimizzazione cloud ha condizioni separate. ONNX permette modelli preparati altrove nelle interfacce supportate: machine learning non impone Python durante l’esecuzione. Controlla forme degli input, preprocessing e convenzioni d’uscita.
OnTick non garantisce una callback distinta per ogni tick ricevuto: un NewTick non si aggiunge se uno è già in coda o in elaborazione. Misura carico e tempi pertinenti. Il nome del linguaggio non dimostra latenza di un millisecondo né rende irrilevante un ritardo su decisioni H1.
Le librerie Python non eliminano gli adattatori
Analisi e modellazione beneficiano di librerie, ma un’interfaccia comune deve gestire simboli, quantità, sessioni, disponibilità e regole di ciascun fornitore. Dati macro e più conti sono requisiti da esaminare, non una vittoria automatica di uno stack.
Conserva versioni e configurazioni. Il repository originale ib_insync è stato archiviato il 14 marzo 2024. Ciò non dimostra che codice esistente sia inutilizzabile, ma un tutorial vecchio non certifica supporto presente. Controlla l’integrazione scelta; credenziali fuori da codice pubblico e log ordinari. Un test analitico su file non richiede permessi d’ordine.
Due progetti ibridi diversi
Primo: Python sviluppa il modello e le regole verificate vengono distribuite in un EA MQL5. Se contiene tutta la logica necessaria, Python non deve restare attivo. Secondo: Python invia richieste continuamente tramite terminale; devi sorvegliare entrambi, freschezza degli input e stato reale del conto.
MetaQuotes Virtual Hosting migra ambiente EA/grafici supportato, non è un desktop Windows generico per ogni processo esterno Python. Un EA aggiuntivo non può chiudere usando lo stesso host, terminale o collegamento broker indisponibile. Le protezioni accettate dal server vanno rilette separatamente.
order_send() invia una richiesta e restituisce struttura di risultato. La chiusura richiede azione e posizione pertinenti: qui non è documentata una funzione generale position_close(). Dopo comunicazione incerta riconcilia ordini, deal e posizioni prima di decidere una nuova richiesta.
Modello indipendente: richiedi 0,10 lotti, il server esegue ma perdi risposta. Un secondo 0,10 alla cieca viene eseguito anch’esso: totale 0,20 anziché 0,10. Contratto lineare EUR/USD, 100000 EUR per lotto, pip 0.0001 e conto USD: esposizione al pip da 1 USD a 2 USD. Entrambi i fill sono assunti; non ogni richiesta incerta è eseguita né ogni conto raggruppa ugualmente posizioni. Riconnettere non equivale a ripetere un trade.
Una negazione può trasformare il dato mancante in True
Test Python con x = float('nan'), soglia fittizia 10. NaN rappresenta lettura indicatore mancante: non zero né un numero grande. Non assumiamo una pulizia precedente degli input.
Negare un confronto non recupera un dato
Scorri orizzontalmente o ingrandisci il diagramma per leggere i dettagli.
x > 10 è False, mentre not(x <= 10) è True. Su numeri finiti possono sembrare confini equivalenti, su NaN no. Controlla tipo, disponibilità e finitezza; math.isfinite(x) and x > 10 blocca NaN. Conserva questo caso nel porting senza assumere semantica identica fra linguaggi, array o altri tipi numerici.
Confini della regola e prezzi assegnati
Segnale fittizio disponibile dopo chiusura 1.1000. Il modello A compra lì, B a successivo Ask 1.1003: differenza 3 pip EUR/USD con pip 0.0001. Tempo, movimento e lato della quotazione possono contribuire; non attribuire tutto a overhead Python o Spread Bid–Ask. Confronta input, richieste, quantità, fill e costi prima dei rendimenti.
Un test vettoriale può includere oneri; un nome «a eventi» non certifica il fill. Il tester MT5 non esegue un qualunque script Python come EA nativo. Le implementazioni trasferite devono usare le stesse versioni di regole e input.
Altro test indipendente di float scalare Python: 0.1 + 0.2 dà 0.30000000000000004, maggiore del float 0.3. Decimal costruiti da stringhe sommano esattamente 0.3 nel modello, mentre unità intere danno 1 + 2 = 3. Visualizzare entrambi come «0.3» non cambia il confronto memorizzato.
Prova sotto soglia, uguale, sopra, mancante e non finito. Una tolleranza scelta ha significato e unità propri; non è un modo automatico di riparare input assenti. Queste prove non eseguono la versione MQL5 né stabiliscono un vantaggio di trading.
Nuovo modello contabile EUR: quattro unità ipotetiche comprate 100 e vendute 103 EUR → lordo 12 EUR. Con onere totale noto 2 EUR, netto 10. Se l’onere manca, il netto non è disponibile; sostituire arbitrariamente zero mostrerebbe 12 EUR, due in più rispetto al caso noto. «Non so il costo» non significa costo nullo: conserva stato del dato separato dal valore numerico.
Segnala netto non disponibile finché il componente richiesto manca.
- Lordo
- 12 EUR – 4 × (103−100).
- Onere noto: 2 EUR
- Netto 10 EUR – Caso completamente specificato.
- Onere assente
- Netto non disponibile – Riempire con zero mostra 12 senza giustificazione.
Scegli un requisito riproducibile
Scrivi conto/API, dati, istante decisionale, librerie, sistema operativo e supervisione. Valuta ciò che puoi mantenere. Un piccolo prototipo può leggere dati e registrare un segnale senza operare. Numero di righe, tempo fisso di setup o rapporto due a uno nell’apprendimento non stabiliscono la scelta.
Annota un requisito insoddisfatto e alternative più semplici. Se il tempo d’esecuzione conta, misuralo sull’assetto proposto: un intervallo H1 non elimina da solo il requisito. Prosegui con Backtest Python: dati, tempi ed eseguiti riconciliati per una verifica con dati e selezioni ripetibili.
Verifica l’assetto e i suoi guasti
- Congela una piccola regola: disponibilità, uguaglianza, unità e output atteso prima dell’implementazione esecutiva.
- Separa configurazione demo, prove dati e permessi d’ordine; rileggi conto e strumento previsti.
- Su demo controlla rifiuti, dato assente, riavvio e risposta incerta. Riconnessione non prova che la richiesta precedente sia fallita.
- Riconcilia segnali e assunzioni d’esecuzione prima del profitto. Uno script breve riuscito non dimostra affidabilità nativa o redditività.
Verifica ciò che hai imparato
Circa 2 minuti di esercizio.
Mostra risposta e spiegazione
Occorre un controllo indipendente di disponibilità e isfinite. True non prova un valore indicatore valido.
Altre domande
Quanto Python serve?
Per una piccola prova dati servono gli strumenti che puoi verificare, non una durata universale. Input e output atteso devono essere controllabili. Connessione breve non è un sistema completo: permessi, risposte e riconciliazione sono lavoro separato.
L’ibrido è stabile sul reale?
Dipende dall’assetto. Riconnettere non determina l’esito precedente; riconcilia ordini, deal e posizioni prima del retry. Un EA di riserva non aggira lo stesso host o canale indisponibile. Nessuna architettura garantisce perdita massima.
MQL5 segue ogni tick?
Misura input e carico. NewTick può non aggiungersi se già in coda o elaborazione. Non dedurre millisecondi fissi o irrilevanza su H1 dal nome del linguaggio.
Quando passare a Python?
Quando esiste un requisito concreto che non soddisfi o mantieni nell’assetto attuale. Valuta interfacce, dati e modelli supportati, incluso ONNX in MQL5. Due segnali o tre mesi non garantiscono ritorno economico o sviluppo.
Float e Decimal sono equivalenti?
Nel modello 0.1+0.2 float è maggiore di 0.3; Decimal da stringhe dà esattamente 0.3. La visualizzazione arrotondata non cambia la memoria. Tipi, array, tolleranze e casi mancanti richiedono verifiche proprie.
NaN può diventare un segnale True?
La negazione di x<= 10 diventa True per float NaN, mentre x > 10 è False. Il controllo di finitezza prima della regola blocca il dato mancante nella variante dichiarata; non misura un indicatore né autorizza un trade.
Fonti e verifica
- Python — Expressions
Documentazione Python sui numeri float: i confronti ordinati con NaN non si comportano come confronti fra numeri ordinari. L’esempio non viene esteso automaticamente ad array o Decimal.
- Python — math.isfinite
math.isfinite esclude NaN e infiniti, ma accetta zero: occorre quindi anche controllare segno e intervallo ammesso.
- MetaQuotes — initialize
MetaTrader 5 initialize: percorso del terminale, connessione, possibile avvio automatico e utilizzo dell’ultimo conto configurato.
- MetaQuotes — order_send
MetaTrader 5 order_send: richiesta, risultato e chiusura mediante un ordine riferito alla posizione. Non viene inventata un’API position_close.
- MetaQuotes — ONNX
Supporto ONNX in MQL5 e definizione delle forme degli ingressi e delle uscite. Non significa che ogni programma Python possa essere eseguito direttamente come Expert Advisor.
- MetaTrader 5 — PyPI distributions
La scheda della versione 5.0.6231 elenca pacchetti wheel per Windows x86-64; questo riferimento non garantisce il supporto per ogni piattaforma o versione futura.
- ib_insync — original repository
Il repository ib_insync è stato archiviato il 14 marzo 2024. Lo stato di manutenzione va distinto dal fatto che un programma esistente possa ancora funzionare.
- MetaQuotes — OnTick
Note 69–75 lette: AutoTrading impedisce richieste operative dell’EA, non ne ferma funzionamento o elaborazione corrente.
- MetaQuotes — Virtual Hosting migration
Lette sezioni autorizzazioni 116–125 e sincronizzazione 129–148: trading remoto indipendente dal permesso locale e controllo log. Non generalizzazione a tutti i VPS.
I calcoli usano ipotesi esplicite. Non sostituiscono i dati attuali di mercato o le condizioni dell’intermediario.
