I miei segreti di Autolot. Lot dinamico o Autolot.

Avviso nell’indicatore. Come inserire un avviso e una freccia nell’indicatore?
Market MQL5. Problemi ed errori con l’installazione di Expert Advisor e soluzioni
Avviso nell’indicatore. Come inserire un avviso e una freccia nell’indicatore?
Market MQL5. Problemi ed errori con l’installazione di Expert Advisor e soluzioni

Descrizione

In questo articolo, spiegherò i miei metodi per calcolare la dimensione del Lot basata su una percentuale (Rischio in %) di Margine Libero attraverso diverse coppie di valute e vari tipi di depositi. Autolot o Lot Dinamico dal saldo. RiskManager. Ti mostrerò il mio codice Autolot.

Iniziamo:

Concetti di Base:

Per prima cosa, evidenziamo alcuni concetti utilizzati in questo calcolo:

Margine Libero ( AccountFreeMargin() ) – fondi che non sono utilizzati come garanzia nelle posizioni aperte. Il Margine Libero viene calcolato utilizzando la formula: Margine Libero = Saldo Attuale del Deposito – Margine Richiesto per le Posizioni Aperte. Questo indicatore determina il numero di transazioni che possono essere aperte al momento attuale.

Ask è il prezzo al quale acquisti una certa quantità di uno strumento finanziario dal broker. Il broker te lo vende a questo prezzo. Quando fai trading sul mercato Forex, incontrerai questo tipo di prezzo ovunque: dal terminale di trading ai rapporti di borsa e agli articoli analitici sui mercati finanziari.

Bid è il prezzo al quale vendi una certa quantità di uno strumento finanziario al tuo broker. Il broker lo acquista da te a questo prezzo. Quando fai trading sul mercato Forex, incontrerai questo tipo di prezzo ovunque si parlino dei mercati internazionali Forex: dal terminale di trading e dai tassi di cambio sul sito del tuo broker ai rapporti di borsa e agli articoli analitici sui mercati finanziari internazionali.

Leva è il rapporto tra l’ammontare della garanzia e l’importo preso in prestito. Quando selezioni inizialmente la leva, scegli la dimensione della leva, che indica il moltiplicatore con cui il deposito del Cliente sarà aumentato per eseguire operazioni di trading sul mercato Forex. Il Cliente può selezionare una leva da 1:1 a 1:500, il che significa che il Cliente può fare trading solo con i propri fondi o richiedere un aumento del proprio deposito fino a 500 volte per entrare nel mercato con tale importo. La Leva, come rapporto tra l’ammontare con cui un trader entra nel mercato e la dimensione del suo deposito, gioca un ruolo cruciale nel processo di trading perché consente a un trader di aumentare significativamente il proprio capitale.

Coppia di Valute è la designazione di due valute che insieme formano un tasso di cambio. La coppia di valute serve come oggetto per le transazioni finanziarie. Una coppia di valute è denotata dalle designazioni successive delle due valute che compongono la coppia, scritte insieme o separate da una barra nella seguente forma: valuta base / valuta quotata. La valuta base è la prima valuta che viene acquistata e venduta, e la valuta quotata viene utilizzata per esprimere il prezzo della valuta base. Una coppia di valute è il concetto fondamentale del mercato dei cambi, presente ovunque non appena riguarda questo mercato: dai rapporti di mercato al terminale di trading.

Dimensione del Lot – il volume della valuta base, della materia prima o il numero di azioni specificato nella specifica del contratto. La dimensione del Lot dipende dall’importo di valuta specificato nel contratto ed è un’unità di misura per determinare la dimensione del contratto di trading. Un Lot ha una dimensione specifica, che viene utilizzata per determinare l’ammontare di valuta utilizzata per le transazioni finanziarie nel mercato Forex. Per eseguire una transazione, il Cliente determina la dimensione della transazione, espressa nel numero di Lots. Il volume di una transazione di trading indica quanta valuta comporrà la transazione. Un Lot è la dimensione del contratto, una quantità fissa di valuta utilizzata nel trading Forex.

Il tasso di cambio tra due valute è determinato dall’interazione di domanda e offerta in un momento specifico.
Questo processo è noto come quotazione delle valute, e le quotazioni possono essere dirette o inverse.

Una quotazione diretta riflette il prezzo di una valuta straniera in unità della valuta nazionale.
La maggior parte dei tassi di cambio è espressa come quotazioni dirette del dollaro USA rispetto alle valute di vari paesi.

Ad esempio, USD/UAH—30.70 significa che un dollaro USA vale 30.70 grivnie ucraine,
e USD/CHF—1.0850 indica che un dollaro USA equivale a 1.0850 franchi svizzeri.

Esiste anche il concetto di tasso di cambio incrociato, dove il dollaro USA non è né la valuta base né la valuta quotata.
Esempi includono EUR/JPY, GBP/CHF e EUR/GBP.

Aspetto Tecnico

  1. NormalizeDouble – Arrotonda un numero a virgola mobile alla precisione specificata.
  2. MODE_LOTSIZE – Dimensione del contratto nella valuta base dello strumento.
  3. MODE_LOTSTEP – Il passo per cambiare la dimensione del Lot.
  4. AccountCurrency – Restituisce il nome della valuta per l’account corrente.
  5. MathFloor – La funzione restituisce il più grande intero minore o uguale a x.


Essenziale: Per garantire che tutti i calcoli siano accurati, attiva tutti i simboli nel pannello “Market Watch” :

La Mia Formula di Calcolo per la Valuta dell’Account

La mia formula di calcolo è la seguente:

Deposito USD

Deposito USD Quotation Diretta ()

Lot = Margine Libero * Rischio * Leva / 100 / Dimensione Contratto

Deposito USD Quotation Inversa()

Lot = Margine Libero * Rischio * Leva / Ask / 100 / Dimensione Contratto

Deposito USD Tasso di Cambio Incrociato:

Opzione 1: Se c’è un prezzo corrente della valuta base + USD (per esempio, se la coppia di regolamento è AUDCAD, allora il prezzo corrente della valuta base = AUDUSD)

Lot = Margine Libero * Rischio * Leva / (Prezzo Corrente Valuta Base + USD) / 100 / Dimensione Contratto

Opzione 2: Se non c’è un prezzo corrente della valuta base + USD (per esempio, CADJPY)

Lot = Margine Libero * Rischio * Leva / 100 / Dimensione Contratto

Deposito EUR

Deposito EUR Quotation Diretta

Lot = Margine Libero * Rischio * Leva / 100 / Dimensione Contratto

Deposito EUR Tasso di Cambio Incrociato:

Prezzo corrente = EUR + valuta quotata (per esempio, se la coppia di regolamento è AUDCAD, allora il prezzo corrente è valuta quotata = EURAUD)

Lot = Margine Libero * Rischio * Leva / (prezzo corrente EUR + valuta quotata) / 100 / Dimensione Contratto

Deposito UAH e Altri

Deposito UAH Quotation Inversa (per esempio, USDUAH)

Lot = MathFloor(Margine Libero * Rischio * Leva / 100 / Prezzo Corrente / Dimensione Contratto / Passo Lot / 20) * Passo Lot

Deposito UAH Tasso di Cambio Incrociato (es., EURGBP)

Prezzo corrente = MarketInfo(StringSubstr(Symbol(), 0, 3) + UAH + StringSubstr(Symbol(), 6), MODE_BID);

if(pr != 0) Lot2 = MathFloor(Margine Libero * Rischio * Leva / Prezzo Corrente / 100 / Dimensione Contratto / Passo Lot) * Passo Lot;
else Lot = MathFloor(Margine Libero * Rischio * Leva / 100 / Dimensione Contratto / Passo Lot) * Passo Lot;

L’ordine di queste funzioni è stato determinato calcolando i parametri su diversi depositi.

Se hai suggerimenti per questi calcoli, per favore condividi le tue funzioni Autolot quando ordini programmazione.

Oppure Freelance: Programmazione Personalizzata su MetaTrader e MQL! Finisci?

Variabili Esterne Funzione di Calcolo Autolot:

LotsLot fisso per l’apertura di una posizione.
RiskLotType
TypeAutolot
Tipo di Calcolo Autolot:
BALANCE (Rischio dal Saldo) – Autolot viene calcolato dal saldo corrente. Il calcolo del Lot si basa sul saldo dell’account. Se ci sono posizioni aperte sull’account, il Lot successivo sarà approssimativamente lo stesso perché il saldo non diminuisce dal numero delle posizioni aperte attuali!
FREEMARGIN (Rischio dal Margine Libero) – Il calcolo standard del Lot dal margine libero corrente è che più posizioni aperte sull’account, più piccolo sarà il Lot calcolato per la prossima posizione. Questo perché quando si apre una posizione, il margine libero diminuisce, quindi ogni nuova posizione aperta ha un Lot più piccolo quando si calcola l’Autolot.

Tipo di Calcolo del Rischio per l’Opzione RiskLot:

Modalità disponibili:
RiskLotType = 0, // Rischio dal Margine Libero
RiskLotType = 1, // Rischio dal Saldo
DynamicLotLot dinamico, Autolot, per una posizione aperta.
Puoi attivare il calcolo del Lot dinamico come percentuale del margine libero e altri fattori.
Calcolo del Nostro Autolot:
Formula e codice: https://expforex.com/it/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-4
DynamicLotStopLossRischio dallo SL – Calcola il Lot automatico, tenendo conto dello Stop Loss.
La perdita massima come percentuale del saldo quando si chiude un’operazione allo Stop Loss.
Quando si calcola il Lot, il nostro Expert Advisor considera lo Stop Loss al momento dell’apertura dell’operazione.
Se l’operazione si chiude allo Stop Loss, la perdita di questa operazione sarà pari a una percentuale del saldo al momento dell’apertura dell’operazione.
Importante! Se il tuo Stop Loss viene modificato dopo l’apertura dell’operazione, la dimensione del Lot dell’operazione non può essere modificata. Alla chiusura dell’operazione, la perdita può essere maggiore o minore.
Importante! Se utilizzi un Trailing Stop, lo Stop Loss dell’operazione cambia ad ogni tick, ma la dimensione del Lot non può essere modificata.
Formula e codice: https://expforex.com/it/my-autolot-secrets-dynamiclot-autolot/#eb-table-content-5
LotBalancePcnt
RiskLot
LotBalancePercent
Percentuale per Autolot.
La percentuale per la funzione del Lot dinamico (Autolot).

Se RiskLot = 0, allora il Lot dell’operazione (Volume) sarà calcolato secondo il parametro Lot.

Se RiskLot non è uguale a 0, allora un’operazione al terminale del cliente sarà aperta con un Lot come percentuale del margine libero del cliente (Autolot).
RiskRateIl tasso della tua valuta rispetto al dollaro (o alla valuta del tuo account).

Per impostazione predefinita, RiskRate = 0, il che significa che l’Expert Advisor cercherà di trovare il tasso corretto nella Market Review.
Per far funzionare bene Autolot con tutte le coppie di valute, devi attivare “Mostra Tutte le Coppie di Valuta” nel Market Watch.
MaxLotIl Lot massimo che un Expert Advisor può aprire quando calcola un Autolot e Martingale per la prima posizione principale.
MartinMartingale. La moltiplicazione standard del Lot dell’ultima posizione chiusa in perdita.

Se Martin = 1, allora il martingale non si attiva (Lots Fissi).
Se Martin = 0, allora l’Expert Advisor non può aprire la prossima posizione.
Se Martin = 2, allora il primo Lot = 0.1, il secondo Lot = 0.2, e così via: 0.4 – 0.8 – 1.6 – 3.2 – 6.4…..
Se Martin = 0.5, allora il primo Lot = 1, il secondo Lot = 0.5, e così via: 0.25 – 0.125.

Hai bisogno di un codice?

Calcolo Autolot Funzione di Codice:

input  double                    Lots=0.01;                                //Lots --> Lot fisso per posizioni e ordini aperti
input bool DynamicLot=false; //DynamicLot --> Calcolo del lot dalla margine disponibile
input bool DynamicLotStopLoss=false; //DynamicLotStopLoss --> Calcolo del lot dal StopLoss e margine disponibile
input double LotBalancePercent=1; //LotBalancePercent --> Percentuale per il calcolo del lot
extern double RiskRate=0; //RiskRate --> Tasso di cambio del simbolo rispetto alla valuta del deposito per il calcolo del lot
input double MaxLot=999; //MaxLot --> Lot massimo per l'apertura delle posizioni
double GetSizeLot(double ll=1) // La funzione restituisce la dimensione del Lot
{
string Author = "Autore del template della funzione: www.expforex.com";
string lotcalc;
double pr;
string Valdepo = AccountCurrency();
// Se MM è abilitato, determina la dimensione del Lot
double Lot2, MinLots, MaxLots;
int lotdig;
if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;

if (Valdepo == "USD")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

if (Valdepo == "EUR")
{
if (StringSubstr(Symbol(), 0, 3) == "EUR")
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo("EUR" + StringSubstr(Symbol(), 0, 3), MODE_BID);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() * pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

if (Valdepo == "UAH")
{
if (StringSubstr(Symbol(), 0, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else if (StringSubstr(Symbol(), 3, 3) == "USD")
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / Ask / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
{
pr = MarketInfo(StringSubstr(Symbol(), 0, 3) + "USD", MODE_ASK);
if (pr != 0)
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / pr / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
else
Lot2 = NormalizeDouble(AccountFreeMargin() / 40 * LotBalancePcnt * AccountLeverage() / 100 / MarketInfo(Symbol(), MODE_LOTSIZE), lotdig);
}
}

MinLots = MarketInfo(Symbol(), MODE_MINLOT);
MaxLots = MaxLot;
lotcalc = "Autolot=" + Lot2;
if (!DynamicLot) Lot2 = Lots;

if (Lot2 < MinLots) Lot2 = MinLots;
if (Lot2 > MaxLots) Lot2 = MaxLots;
lotcalc = lotcalc + " MinLots=" + MinLots + " LOT=" + NormalizeDouble(Lot2, lotdig);
Print(lotcalc);
return (NormalizeDouble(Lot2, lotdig));
}

Funzione di Calcolo Stoploss Autolot:

Se desideri aggiungere la funzionalità di stop loss Autolot al tuo EA, puoi scaricare il nostro codice:

StopLosssd = Stop Loss in punti

Variabili Esterne:

Lots = 0.1; // Lot fisso

DynamicLotStopLoss = // vero/falso

LotBalancePcnt (RiskLot) = 20; // % del margine libero
 

Funzione:

double GetSizeLotStopLoss(double StopLosssd=1) // La funzione restituisce la dimensione del Lot
{
  string Author = "Autore del template della funzione: www.expforex.com";
  string Valdepo = AccountCurrency();
  // Se MM è abilitato, determina la dimensione del Lot
  double MinLots;
  int lotdig;
  if (MarketInfo(Symbol(), MODE_LOTSTEP) == 0.01) lotdig = 2; else lotdig = 1;
  double Free = AccountFreeMargin();
  double LotVal = MarketInfo(Symbol(), MODE_TICKVALUE); // Costo di 1 pip per 1 Lot
  double Min_Lot = MarketInfo(Symbol(), MODE_MINLOT);
  double Max_Lot = MarketInfo(Symbol(), MODE_MAXLOT);
  double Step = MarketInfo(Symbol(), MODE_LOTSTEP);
  double Lot = MathFloor((Free * LotBalancePcnt / 100) / (StopLosssd * LotVal) / Step) * Step;
  MinLots = MarketInfo(Symbol(), MODE_MINLOT);

  if (Lot < MinLots) Lot = MinLots;

  return (NormalizeDouble(Lot, lotdig));
}

Domande?

Se hai domande, per favore chiedile. Non vendiamo un maiale in un sacco.

Ognuno dei nostri prodotti può essere testato prima dell’acquisto.

Apprezziamo il tuo interesse e il tuo supporto per i nostri prodotti e ci impegniamo a mantenere standard di alta qualità.

Grazie per essere con noi!

Hai una domanda?

Leave a Reply

Your email address will not be published. Required fields are marked *

4 responses to “I miei segreti di Autolot. Lot dinamico o Autolot.”

  1. erik Avatar
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

  2. erik Avatar
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

  3. erik Avatar
    erik

    I want to be able to double whatever lot size that is being copied from the master onto the client.. How do I do that with settings… so no matter what every new position the client with be 2x that.. master opens a trade of .03, then it will be copied to client as .06.

This post is also available in: English Українська Portuguese Español Deutsch Chinese Русский Français Italiano Türkçe 日本語 한국어


     

    Avviso di rischio:


    Le performance di trading passate non garantiscono i risultati futuri.

    La negoziazione di valuta estera con margine comporta un elevato grado di rischio e potrebbe non essere adatta a tutti gli investitori.

    Tieni presente che l'utilizzo dei robot di trading comporta un rischio notevole e potresti perdere più del tuo investimento iniziale.

    Ti invitiamo a procedere con cautela, a valutare attentamente la tua situazione finanziaria e a prendere in considerazione l'idea di rivolgerti a un professionista qualificato.

    Esclusione di responsabilità

    Questo sito utilizza i cookie per migliorare la tua esperienza. Utilizzando questo sito accetti la nostra Politica di Protezione dei Dati e Disclaimer.
    Leggi di più