Ogni calcolatore della dimensione del lotto che parte dal presupposto che un pip valga dieci dollari è errato per l’oro, per gli indici, per i cross con lo yen e per qualsiasi conto non denominato in USD – ed è proprio in questi casi che una dimensione eccessiva del lotto si rivela dannosa. Questa intestazione effettua invece i calcoli sulla base dei dati effettivamente pubblicati dal server per il simbolo in questione.

CalcLots() accetta un importo di rischio nella valuta del conto, un prezzo di entrata e un prezzo di stop, e restituisce il volume da negoziare insieme al rischio effettivo associato a quel volume una volta applicati i vincoli del broker.
Restituisce inoltre la distanza dello stop in punti e il valore di un punto per 1,00 lotto, in modo che chi chiama la funzione possa visualizzarne il funzionamento anziché limitarsi a un semplice numero.
Calc.mqh non mantiene alcuno stato nel terminale. Accetta una struttura SymbolSpec — punto, dimensione del tick, valore del tick, volume min/max/passo, cifre — in modo che l’intera logica di dimensionamento possa essere eseguita offline su strumenti sintetici.
SpecFromSymbol() è l’unico collegamento ai dati in tempo reale. Legge prima SYMBOL_TRADE_TICK_VALUE_LOSS, poiché si tratta della cifra che il server utilizza quando un’operazione va a tuo sfavore, che è esattamente il lato su cui si posiziona uno stop loss; ricorre a SYMBOL_TRADE_TICK_VALUE per i broker che lasciano la variante di perdita a zero.
È proprio questa separazione a rendere possibile lo script di test incluso.
RiskLotCalculatorTests.mq5 funziona su qualsiasi grafico, senza connessione al broker e senza dati storici. Verifica 41 casi: arrotondamento del volume-step, entrambi i clamp e i relativi flag, ridimensionamento del valore del punto quando la dimensione del tick differisce da quella del punto, una valuta principale a 5 cifre, l’oro, un indice con un passo di 0,1 lot, entrambe le direzioni di trading e ogni percorso di rifiuto: rischio zero, rischio negativo, uno stop posizionato sul punto di ingresso e dati dei tick mancanti.
Trascinatelo su un grafico e consultate la scheda «Esperti». Il risultato finale sarà «ALL PASS», con 41 casi superati e 0 falliti.
Entrambi i file sono autonomi: basta inserirli nella stessa cartella e lo script di test si compila così com’è.
Tradotto dall’inglese da MetaQuotes Ltd.
Codice originale https://www.mql5.com/en/code/77488
Session Range Breakout: Asia, London and New York high/low levels
Session Range Breakout draws the high and low of up to three intraday sessions (Asia, London and New York by default) and extends each level to the right with optional H/L labels and a range rectangle. Session hours, names and colours are configurable in server time. Optional popup, sound and push alerts fire when a bar closes outside a session range. The levels are fixed once the session closes, so the drawing does not repaint. The indicator draws chart objects only and never opens trades.
TesterStats: Strategy Tester report statistics in MQL5 code
Calculates the Strategy Tester report statistics from the deal history, including Z-Score, AHPR, GHPR, LR Correlation and LR Standard Error, which TesterStatistics() does not return. Checked value by value against the tester.
Contract Sizer: ladder, floor and a breaker that survives a deposit
Tre meccanismi di protezione per il dimensionamento delle posizioni che funzionano in modo diverso; confonderli è il motivo per cui così tanti conti vengono azzerati: - ladder: un contratto ogni X del saldo, applicato sempre come limite massimo (CAP), anche con il dimensionamento manuale dei lotti; - floor: al di sotto del capitale minimo non effettua operazioni; è necessario un nuovo versamento; - breaker: si attiva all’X% al di sotto del picco, indipendentemente dalle dimensioni del conto, e non si riattiva automaticamente. Ciò che questa libreria risolve e che quasi nessuna altra fa: un versamento non è un profitto, e un prelievo non è una perdita. Il «breaker» misura il calo rispetto al picco del saldo. Se non gestita, un'operazione di deposito effettuata DURANTE un drawdown fa aumentare contemporaneamente sia il saldo che il picco, e la protezione smette di rilevare il calo proprio nel momento in cui sarebbe utile. In questo caso, depositi e prelievi spostano il picco dello stesso importo. Il picco viene salvato in un file: un «breaker» che dimentica il picco al riavvio del terminale non è un «breaker». La demo simula un deposito al punto più basso di un calo. Eseguila con il deposito attivato e disattivato e confronta la colonna «calo».
Non-Repainting Fair Value Gap Detector
Non-repainting three-bar Fair Value Gap detector for MetaTrader 5. Closed-bar detection, the 50% Consequent Encroachment level, mitigation as an explicit state machine, incremental scanning, and a built-in self-audit that re-checks the stored gap levels against the closed-bar series on attach. Pure native MQL5, no DLLs, no external dependencies.