Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1250

 
Artyom Trishkin :

Non mi sono informato - non posso dirvi purtroppo.

Vi spiegherò. Spero che abbia senso.

Ecco la spiegazione:

Sto negoziando EURUSD e AUDJPY in MT5. Entrambi hanno un margine prenotato come mostrato nella barra degli strumenti di MT5. Condividerò l'immagine.

Prima operazione su EURUSD:

Ho venduto con lotto = 1. Margine di guadagno = 235,31.

Ora sto facendo trading su AUDJPY:

Ho venduto a lotto = 1. Ho preso una chiamata di margine = 144,24.

E il margine totale mostrato in ToolBox = 379,55.

La casella degli strumenti, come potete vedere, mostra il margine totale utilizzato dai simboli EURUSD e AUDJPY.

Ora vengo alla mia domanda.

Voglio sapere qual è il margine del margine totale utilizzato da EURUSD. Non sto ricevendo i calcoli per questo. So che la risposta dovrebbe essere = 235,31

Ma con OrderCalcMargin () ottengo risposte diverse. A volte la funzione restituisce 235,23, a volte 235,01. Ma questa è la risposta sbagliata. Voglio sapere come posso calcolare il margine utilizzato per un particolare simbolo. Nel mio esempio, ditemi come posso calcolare il margine utilizzato da EURSD o AUDJPY.

Nota:

La risposta OrderCalcMargin () a volte dà la risposta corretta per EURUSD. Ma se voglio calcolare il margine per AUDJPY, è sempre diverso.

Ora per favore fatemi sapere se ho capito.

Ho questa domanda e ho cercato di spiegarla a tutti nel forum, ma nessuno riesce a capire. Questo sono io che ci riprovo.

Proverò di nuovo se ancora non ha senso.

@ Artyom Trishkin, fammi sapere. Conto su di te per darmi una soluzione.

 
jaffer wilson:

Vi spiegherò. Spero che abbia senso.

Ecco la spiegazione:

Sto negoziando EURUSD e AUDJPY in MT5. Entrambi hanno un margine prenotato come mostrato nella barra degli strumenti di MT5. Condividerò l'immagine.

Prima operazione su EURUSD:

Ho venduto con lotto = 1. Margine di guadagno = 235,31.

Ora sto facendo trading su AUDJPY:

Ho venduto al lotto = 1. Ho preso una chiamata di margine = 144,24.

E il margine totale mostrato in ToolBox = 379,55.

La casella degli strumenti, come potete vedere, mostra il margine totale utilizzato dai simboli EURUSD e AUDJPY.

Ora vengo alla mia domanda.

Voglio sapere qual è il margine del margine totale utilizzato da EURUSD. Non sto ricevendo i calcoli per questo. So che la risposta dovrebbe essere = 235,31

Ma con OrderCalcMargin () ottengo risposte diverse. A volte la funzione restituisce 235,23, a volte 235,01. Ma questa è la risposta sbagliata. Voglio sapere come posso calcolare il margine utilizzato per un particolare simbolo. Nel mio esempio, ditemi come posso calcolare il margine utilizzato da EURSD o AUDJPY.

Nota:

La risposta OrderCalcMargin () a volte dà la risposta corretta per EURUSD. Ma se voglio calcolare il margine per AUDJPY, è sempre diverso.

Ora per favore fatemi sapere se ho capito.

Ho questa domanda e ho cercato di spiegarla a tutti nel forum, ma nessuno riesce a capire. Questo sono io che ci riprovo.

Proverò di nuovo se ancora non ha senso.

@ Artyom Trishkin, fammi sapere. Conto su di te per darmi una soluzione.

Valori molto importanti da calcolare nel vostro caso:

  1. In che valuta è il conto
  2. Qual era il tasso di cambio al momento in cui hai aperto la posizione

Come esempio, il calcolo del margine per AUDJPY coinvolge AUDUSD e USDJPY. Quale fosse il tasso di cambio AUDJPY al momento in cui hai aperto la posizione, nessuno lo saprà mai. Si può provare a calcolare solo attraverso il margine attuale. Questo è stato menzionato nel thread che ti ho linkato. Ma ad essere onesti non dice molto, ma c'è qualcosa nei codici.

Ad ogni momento successivo questi tassi cambiano e quindi si ottengono diversi valori di margine. Calcola il rapporto tra il margine attuale e il prezzo di apertura della posizione e applica questo coefficiente per calcolare il margine della posizione aperta. Dovete sperimentare. Non ricordo l'esatto algoritmo di calcolo.

Ma non credo che nessuno vi darà una soluzione già pronta.

 
Alexey Viktorov :

Valori molto importanti per il calcolo nel vostro caso:

  1. In che valuta è denominato il conto
  2. Qual era il tasso di cambio al momento in cui hai aperto la posizione

Come esempio, il calcolo del margine AUDJPY coinvolge AUDUSD e USDJPY. Quale fosse il tasso di cambio AUDJPY al momento in cui hai aperto la posizione, nessuno lo saprà mai. Si può provare a calcolare solo attraverso il margine attuale. Questo è stato menzionato nel thread che ti ho linkato. Ma ad essere onesti non dice molto, ma c'è qualcosa nei codici.

Ad ogni momento successivo questi tassi cambiano e quindi si ottengono diversi valori di margine. Calcola il rapporto tra il margine attuale e il prezzo di apertura della posizione e applica questo coefficiente nel calcolo del margine per la posizione aperta. Dovete sperimentare. Non ricordo l'esatto algoritmo di calcolo.

Ma non credo che nessuno vi darà una soluzione già pronta.

Sì, lo capisco. Ma vedo che la MT5 ToolBox calcola esattamente senza cambiare il margine. Allora quale logica usa MT5 ToolBox? Potresti fare un po' di luce su questo, per favore?

 

Domanda come assegnare un valore a diverse variabili tramite argomenti in una funzione. Se c'è un solo argomento, può essere restituito e gli si può assegnare un valore, ma se ce ne sono 2, cosa bisogna fare?

int x,x1,x2,x3=1,x4,x5;
void OnStart()
{
x=2;
F(x,x1,x2);
Print ("x1= ",x1," x2= ",x2);
x=5 ;
F(x,x4,x5);
Print ("x4= ",x4," x5= ",x5);
return;
}

int F(int ArgX, int ArgX1, int ArgX2)
{
ArgX1=ArgX + x3;
ArgX2=ArgX - x3;
return ArgX1;
}

//результат
2020.09.09 15:10:10.561 TestS EURUSD,H1: x4= 0 x5= 0
2020.09.09 15:10:10.561 TestS EURUSD,H1: x1= 0 x2= 0
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
Документация по MQL5: Основы языка / Операции и выражения / Операции присваивания
  • www.mql5.com
Побитовые операции производятся только с целыми числами. При выполнении операции логический сдвиг представления y вправо/влево на x бит используются младшие 5 двоичных разрядов значения x, старшие разряды отбрасываются, то есть сдвиг производится на 0-31 бит.
 

Valery, forse questo andrà bene:

void  F(int &ArgX, int &ArgX1, int &ArgX2)
 
Aleksei Stepanenko:

Valery, forse questo andrà bene:

Giusto, link, appersand se non mi sbaglio.

2020.09.09 15:18:33.572 TestS EURUSD,H1: x4= 6x5= 4

2020.09.09 15:18:33.572 TestS EURUSD,H1: x1= 3x2= 1

Grazie)))


 
Proprio così! Trasmissione al link.
 
Valeriy Yastremskiy:

Domanda come assegnare un valore a diverse variabili tramite argomenti in una funzione. Se c'è un solo argomento, può essere restituito e gli si può assegnare un valore, ma se ce ne sono 2, che dire di questo?

Che cos'è questo?

void start()

C'era una volta, molto, molto tempo fa. I mammut mangiavano. E poi l'hanno messo su. È quello che penso che sia?

 
Artyom Trishkin:

Che cos'è?

C'era una volta... che i mammut mangiavano. E poi l'hanno messo su. È quello che penso che sia?

Non giudicare, ho scritto la sceneggiatura a mano. E un controllo rigoroso salta le vecchie funzioni. Naturalmente, non scrivo la mia sceneggiatura in questo modo. Inoltre, ci sono i costruttori. )))))

Corretto)
 
Colleghi, buona giornata a tutti. Ci sono cinque robot di trading con diversi simboli magici che aprono posizioni di mercato al prezzo di apertura di una nuova barra e tutti hanno le stesse condizioni di entrata. Le uscite sono diverse.
A volte chiudo manualmente tutte e cinque le posizioni.
E poi, come con il minimo sforzo per organizzare un algoritmo per l'apertura di una nuova posizione di mercato, ma non sulla barra successiva - commercio su M1, ma su consecutivi diversi, cioè su 1 m1 aperto il primo che aveva tempo, il secondo m1 aperto da loro il secondo che aveva tempo, ecc a 5.
Cioè penso che la domanda si riduce a quanto segue, come opzione, come assegnare un minuto di tempo di apertura del mercato per il suo successivo confronto con Minutes () standard f-fi? E naturalmente, se c'è già una posizione di mercato in questo momento, allora ritorna ().
Motivazione: