Feedback su MQL5 - pagina 4

 

Non c'è modo di fare tamponi

Nessuna eredità multipla in nessuna forma

Puntatori poco chiari

Nessun riferimento

Politica non chiara di copiare le strutture. E anche le lezioni.

Non ci sono descrizioni adeguate degli errori e degli avvertimenti generati dal compilatore con esempi.

Problemi con la tipizzazione dei tipi interi (e degli enum, credo).

Questo è solo un rapido sguardo.

È solo che tutti ci sono abituati. È possibile codificare, ma il linguaggio MQL5 non può certo essere chiamato fine e miracoloso.

 
Gli sviluppatori non possono che essere comprensivi, alcuni cercano la semplicità e l'essenzialità, altri vogliono tutte le caratteristiche dei linguaggi di alto livello e devono accontentare entrambi e far funzionare tutto )
 
Renat Fatkhullin:

Date un'occhiata qui, per favore: https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

In generale, il margine non può essere calcolato sulla base di un solo strumento perché è la sovrapposizione risultante di diverse posizioni/strumenti. Inoltre, nell'esecuzione dello scambio, il calcolo del margine può essere trasferito (la borsa lo richiede) allo scambio stesso, che, in base alla sua logica complessa e chiusa, genera il margine finale.

Per la stima integrale "avrò abbastanza margine se faccio questa transazione" c'è una funzione standard OrderCalcMargin: https://www.mql5.com/ru/docs/trading/ordercalcmargin

Ecco il codice

string txt=NULL;
double GetMarginInitial=0,GetMarginMain=0;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit()
  {
   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_INITIAL,GetMarginInitial))
     {
      Print(" SYMBOL_MARGIN_INITIAL ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)(GetMarginInitial*SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN));

   if(!SymbolInfoDouble(Symbol(),SYMBOL_MARGIN_MAINTENANCE,GetMarginMain))
     {
      Print(" SYMBOL_MARGIN_MAINTENANCE ",GetLastError());
      return(false);
     }
   txt+="\n"+(string)GetMarginMain;
   
   Comment(txt);
   
   return(INIT_SUCCEEDED);
  }

Sui futures mostra il requisito di margine iniziale per un lotto 5800 rubli, ma utilizzando questo codice sul forex dice 0 ...

Nell'aiuto si dice

SYMBOL_MARGIN_INITIAL

Il margine iniziale (di avvio) indica la quantità di margine necessaria per aprire una posizione di un lotto. È usato per verificare i fondi del cliente quando entra nel mercato.


E nient'altro .... Come si calcola il margine per le valute? Vedo solo una via d'uscita, determinare il tipo di strumento, e poi calcolare tramite formule...

 
Vladimir Pastushak:

Ecco il codice

Sui futures mostra il requisito di margine iniziale per un lotto di 5800 rur, ma quando si utilizza questo codice sul forex dice 0 ...

E nel riferimento si dice

SYMBOL_MARGIN_INITIAL

Il margine iniziale (di avvio) indica la quantità di margine necessaria per aprire una posizione di un lotto. Viene utilizzato per la verifica dei fondi del cliente quando entra nel mercato.


E nient'altro ....

Sì, questo parametro serve a controllare i requisiti di margine per i futures.

Anche se per il forex possiamo (dobbiamo) farci ricalcolare e dare un valore approssimativo (perché non sappiamo cosa vuole fare il trader - comprare o vendere) di margine per 1 lotto.

 
Фьючерсные объемы для МТ:

Non c'è modo di fare tamponi

Nessuna eredità multipla in nessuna forma

Lo faremo un po' più tardi. Abbiamo la solita eredità.


Puntatori poco chiari

Nessun riferimento

Ci sono riferimenti e indicazioni. Sono sicuri e controllati.


Politica non chiara di copiare le strutture. E anche delle classi.

Precisamente comprensibile - le strutture con campi semplici (non dinamici) sono copiate automaticamente. Per il resto, scrivete una funzione di copia.

Stiamo già pensando di estendere il meccanismo di copia delle strutture con alcuni tipi dinamici (non di classe). Questo renderà la maggior parte del lavoro più facile.


Nessuna descrizione adeguata degli errori e degli avvertimenti del compilatore con esempi.

I testi di errore e di avvertimento sono gli stessi/simili agli altri compilatori. Nessuno ha reinventato una ruota in questo caso.


Problemi di battitura con i tipi interi (e gli enum come)

La rigidità del tipo è una priorità. Ecco perché la libertà dei Cish di assegnazioni e conversioni pericolose non è consentita.


Il linguaggio è ancora in fase di sviluppo e presto aggiorneremo seriamente il compilatore MQL4/MQL5 quando verrà rilasciato il nuovo compilatore ottimizzante (attualmente abilitato tramite Optimize=1).

 
Serhiy Dotsenko:
dac ha già scritto come puoi modificare il codice mql in VS, non puoi compilarlo, ma puoi modificarlo in VS e premere f7 in ME )

Interessato... Dove l'hai scritto? E se voglio usare le classi standard, le troverai o dovrai digitare a memoria?

Sono abituato al codice, ma l'editor non riesco ad abituarmi, dopo altri editor, come se fossi appena passato a Notepad :)

 
sigma7i:

Interessato... Dove l'hai scritto? E se voglio usare le classi standard, le troverai o dovrai digitare a memoria?

Sono abituato al codice, ma non riesco ad abituarmi all'editor, dopo altri editor, è come se stessi usando Notepad :)

Aggiorneremo anche l'editor, ma abbiamo avuto altre priorità.

Forse apriremo la strada ai plugin.

 
Renat Fatkhullin:

Sì, questo parametro serve a controllare i requisiti di margine per i futures.

Anche se per il forex, possiamo (dobbiamo) ricalcolare e dare un valore approssimativo (perché non sappiamo cosa un trader vuole fare - comprare o vendere) di margine per 1 lotto.

Gli zeri sono restituiti anche per gli indici CFD ... Ci sono formule nell'aiuto, ma non sono commentate...

Forse qualcuno sa cosa è


Margine: (Lotti*Dimensione contratto*Prezzo di mercato*Percentuale)/Leva

Profitto: (close_price-open_price)*Contract_Size*Lots


Percentuale - che cos'è?
 
Vladimir Pastushak:


Margine: (Lotti*Dimensione contratto*Prezzo di mercato*Percentuale)/Leva

Profitto: (close_price-open_price)*Contract_Size*Lots


Percentuale - nessuno dice una parola al riguardo da nessuna parte nella documentazione...

Guarda nell'aiuto del terminale - https://www.metatrader5.com/ru/terminal/help/trading_advanced/margin_forex
 
Potete ottenere questi coefficienti con SymbolInfoMarginRate, provate
Motivazione: