Guarda come scaricare robot di trading gratuitamente
Ci trovi su Twitter!
Unisciti alla nostra fan page
Script interessante?
Pubblica il link!
lasciare che altri lo valutino
Ti è piaciuto lo script? Provalo nel Terminale MetaTrader 5
Librerie

Position sizing from risk, using the broker's own tick value and volume step - libreria per MetaTrader 5

Ralph Ivan Simeon
Ralph Ivan Simeon
I build and audit automated trading systems for MetaTrader 5, with most of my work on XAUUSD.
| Italian English Русский 中文 Español Deutsch 日本語 Português 한국어 Français Türkçe
Visualizzazioni:
9
Valutazioni:
(2)
Pubblicato:
Freelance MQL5 Hai bisogno di un robot o indicatore basato su questo codice? Ordinalo su Freelance Vai a Freelance

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.

Cosa fa Cosa restituisce la funzione CalcLots(), compreso il caso in cui la maggior parte delle routine di calcolo delle dimensioni commette un errore

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.

  • Arrotonda sempre il volume PER DIFFERENZA al passo di volume del broker. Arrotondare per eccesso comporterebbe silenziosamente un rischio superiore a quello richiesto, che è l’unica cosa che una routine di calcolo del lotto non deve mai fare.
  • Quando il rischio richiesto è inferiore al lotto minimo, la funzione non simula alcun valore. Restituisce il minimo, imposta `clamped_min` e riporta il rischio effettivo della posizione, che risulterà superiore a quello richiesto.
  • È indipendente dal lato. Lo stop può trovarsi sopra o sotto il punto di ingresso.

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.

Perché la parte matematica è in un file separato

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.

Lo script di test

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: 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 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 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 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.