Discussione sull’articolo "Funzioni di Money Management in un Expert Advisor"

 

Il nuovo articolo Funzioni di Money Management in un Expert Advisor è stato pubblicato:

Lo sviluppo delle strategie di trading si focalizza principalmente sulla ricerca di modelli per entrare ed uscire dal mercato, oltre a mantenere delle posizioni. Se siamo in grado di formalizzare alcuni modelli in regole per il trading automatizzato, il trader affronta la questione del calcolo del volume delle posizioni, della grandezza dei margini e del mantenimento di un livello sicuro di fondi ipotecari per assicurare le posizioni aperte in una modalità automatizzata . In questo articolo, utilizzeremo il linguaggio MQL5 per costruire semplici esempi di eseguire questi calcoli.

Tutte le funzioni descritte sono riportate nel codice dell'Expert Advisor Symbol_Info.mq5.   La figura seguente illustra l'output di informazioni sul simbolo EURUSD, utilizzando la funzione Comment().


Autore: MetaQuotes

[Eliminato]  

Oh, ecco il più delizioso in "Sala lettura" è apparso, leggiamo cosa e come ...

Soprattutto da un tale autore. :)

 

Mi piacerebbe anche vedere la funzione di calcolo degli swap: ci sono 5 tipi di swap e ognuno ha le sue sfumature.

A volte non si arriva al punto giusto con il metodo scientifico.

Ho trovato tre varianti tramite selezione, ma c'è ancora SYMBOL_SWAP_MODE_BY_INTEREST. Non posso verificarlo perché non riesco a trovare un broker con questo metodo di calcolo.

Per favore, se c'è la possibilità di pubblicare nel CodeBase la funzione di calcolo dello swap per la valuta e il lotto specificati, ve ne saremo grati.

[Eliminato]  
sergeev:

Mi piacerebbe anche vedere la funzione di calcolo degli swap: ci sono 5 tipi di swap e ognuno ha le sue sfumature.

A volte non si arriva al punto giusto con il metodo scientifico.

Ho trovato tre varianti tramite selezione, ma c'è ancora SYMBOL_SWAP_MODE_BY_INTEREST. Non posso verificarlo perché non riesco a trovare un broker con questo metodo di calcolo.

Per favore - se c'è la possibilità di pubblicare nel CodeBase la funzione di calcolo dello swap per la valuta e il lotto specificati - ve ne saremo grati.

+1. O meglio ancora, implementate tutti questi calcoli nella libreria standard, e vedremo come e cosa fare correttamente...
 
Credo che sia scritto nella documentazione. e in mcl4 era lo stesso, solo che le formule erano cambiate.
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

Quali sono i casi in cui il trading è consentito, ma l'Expert Advisor non può operare?

Si tratta di un divieto del broker o delle impostazioni del terminale?

Per analogia con il punto 4 : - " ...se l'esperto è autorizzato a negoziare e il flusso per le operazioni di trading è libero..."

Cioè IsTradeAllowed = IsExpertEnabled + IsTradeContextBusy ?

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

Articolo interessante e necessario! Ho provato a verificare le formule contenute nell'articolo e questo è il risultato. Prendiamo come esempio EURGBP. La valuta del conto è in dollari. La coppia di valute più vicina è EURUSD, cioè mode=true. Utilizziamo le formule dell'articolo per determinare il margine richiesto:

   if(direction==POSITION_TYPE_BUY)
     {
      //--- citazione inversa
      if(mode)
        {
         //--- conteggio al prezzo di acquisto per la quotazione inversa
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- citazione inversa
      if(mode)
        {
         //--- conteggio per prezzo di vendita per la quotazione inversa
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

In altre parole, quando si acquista, secondo l'articolo, il margine richiesto dovrebbe essere:

ACQUISTO: margine = lotto*dimensione_lotto*tick_ask/leva

e quando si vende:

VENDERE: margine = lotto*dimensione_lotto*tick_offerta/leva

Codifichiamo queste formule in un semplice EA e cerchiamo di vendere e acquistare EURUSD con fondi bassi in anticipo, in modo che la metatrader ci dica quale margine è necessario. Allo stesso tempo, produciamo il nostro margine calcolato. Riceviamo questi messaggi dal tester:

2010.07.06 16:34:01 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - margine calcolato dal tester
2010.07.06 16:34:01 Core 1 Errore: denaro insufficiente. Margine libero = 10, margine richiesto = 122,899 - margine calcolato da noi.


2010.07.06 16:34:01 Core 1 non ci sono abbastanza soldi [ acquisto istantaneo di 0,10 EURGBP a 0,81247 sl: 0,80191 tp: 0,82988]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - margine calcolato dal tester
2010.07.06 16:34:01 Core 1 Errore: denaro insufficiente. Margine libero = 10, margine richiesto = 122,737 - margine calcolato da noi.

C'è una differenza. Ora cambiamo la formula per il calcolo del margine richiesto in

ACQUISTO: margine = lotto*dimensione_lotto*tick_offerta/leva

VENDERE: margine = lotto*dimensione_lotto*tick_ask/leva

che contraddice l'articolo. Riceviamo questi messaggi dal tester:

2010.07.06 16:39:49 Core 1 no enough money [instant sell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.91, NewFreeMargin: -112.91 - margine calcolato dal tester
2010.07.06 16:39:49 Core 1 Errore: denaro insufficiente. Margine libero = 10, margine richiesto = 122.911 - margine calcolato da noi

2010.07.06 16:39:49 Core 1 non ci sono abbastanza soldi [instant buy 0.10 EURGBP a 0.81247 sl: 0.80191 tp: 0.82988]
2010.07. 06 16:39:49 Core 1 errore: non ci sono abbastanza soldi.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin: 122.72, NewFreeMargin: -112.72 - margine calcolato dal tester
2010.07.06 16:39:49 Core 1 Errore: denaro insufficiente. Margine libero = 10, margine richiesto = 122,722 - margine calcolato da noi
.

In questo caso il margine calcolato dall'Expert Advisor con il metodo "sbagliato" è esattamente uguale a quello calcolato dal tester. Risulta che sia nel tester che nell'articolo il bid e l'ask vengono riorganizzati quando si calcolano cross come EURGBP. Chi ha ragione: l'articolo o il tester?

 

L'articolo è buono e utile per me.

Sia per la comprensione che per il risparmio di tempo. Grazie

Non capisco cosa si ottiene con questa funzione.

Se l'importo della garanzia richiesta, il valore del contratto non dovrebbe essere diviso per la leva?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

L'articolo è buono e utile per me.

Sia per la comprensione che per il risparmio di tempo. Grazie

Non capisco cosa si ottiene con questa funzione.

Se la dimensione della garanzia richiesta, allora il valore del contratto non dovrebbe essere diviso per la leva?

Non l'ho capito subito. Mi ci è voluta un'ora per capire perché il risultato era 100 volte diverso da quello reale.
 
SHOOTER777:

Se l'importo del margine richiesto, non dovrebbe essere diviso il valore del contratto per la leva finanziaria?

Il valore del contratto non è l'importo del margine. Il codice divide quindi il valore per la leva per ottenere l'importo del margine.
 
sulla coppia EURUSD sulla vostra demo... con fondi disponibili di 10 000 non posso aprire con il lotto 10... perché? perché? e come calcolare il lotto massimo possibile in base ai fondi disponibili. grazie.