Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1490

 

Alexey Viktorov #:

La vostra variante è abbastanza accettabile, ma dovete sostituire gli ordini con le transazioni. I profitti, le commissioni e gli scambi sono memorizzati dalle transazioni, non dagli ordini.

E si tenga conto che un ordine può generare più transazioni.

Quindi, o si selezionano le transazioni per ogni ordine, o si crea un array/elenco (per il numero di ordini) di strutture e le si riempie selezionando le transazioni.
 
JRandomTrader #:

E tenere conto del fatto che un ordine può generare diverse offerte.

Quindi, o pre-selezionare per ogni ordine le sue offerte, o creare un array/elenco (per il numero di ordini) di strutture e riempirle cercando le offerte.

Perché complicarsi la vita? Se si deve calcolare il profitto per un certo periodo, e nel codice sorgente questo è ciò che viene fatto, allora basta passare in rassegna le operazioni per questo periodo. L'operazione IN ha o può avere una commissione, l'operazione OUT può avere uno swap e un profitto oltre alla commissione. Quindi, dopo aver riassunto tutto, abbiamo ottenuto il risultato desiderato.

Un'altra cosa è se il compito è quello di raccogliere il profitto per ogni ID di posizione separatamente in un array.

 
Buongiorno, c'era un segnale con un ordine aperto che aspettava il suo movimento ma l'amministratore l'ha mandato in archivio per inattività come sostiene lui...per favore ditemi come fare per toglierlo da lì subito.... grazie.
 

Ragazzi, aiutatemi. Prima, quando si cliccava sulla rotella del mouse, si attivava la modalità di puntamento del cursore nel terminale e negli MT4 e MT5. Ora è scomparsa. Come si fa a personalizzarla?

p.s. Non ho mai messo nessun driver del mouse, tutto funzionava automaticamente....

 
Alexander Mostovnek #:

Ragazzi, aiutatemi. Prima, quando si cliccava sulla rotella del mouse, si attivava la modalità di puntamento del cursore nel terminale e negli MT4 e MT5. Ora è scomparsa. Come è stata impostata?

p.s. Non ho mai messo nessun driver per il mouse, tutto funzionava automaticamente....

Non è sparito, è solo meno reattivo...

Ho anche pensato che il mouse fosse rotto e che il pulsante non venisse premuto una e due volte...

 
Maxim Kuznetsov #:

non è sparito, è solo meno reattivo.

Ho persino pensato che il mouse fosse rotto e che il pulsante scivolasse.

Ma non lo so. L'ho provato molte volte ed è molto reattivo. Nessun ritardo. Non si è mai presentato una volta.


 
È diventato che la pressatura delle ruote è morta..... :)
 

- Dottore, ho un dolore qui, e qui, e qui.

- Il dito è rotto).

 
double MinOpenBuy(int a = 1)
   {
   ulong tick = 0;
   datetime time = 0;
   double result=0,lot=0,profit=0,openprice=0,
          NewPrice, OldPrice = DBL_MAX;
   for(int i=OrdersTotal(); i>=0; i--)
   {
      if (a_position.SelectByIndex(i))
      {
         if (a_position.Symbol() == a_symbol.Name() && a_position.Magic() == Magic && a_position.PositionType() == POSITION_TYPE_BUY)
         {
            NewPrice = a_position.PriceOpen();
            if ( NewPrice < OldPrice)
            {
               OldPrice = NewPrice;
               profit = NormalizeDouble(a_position.Commission()+a_position.Swap()+a_position.Profit(),2);
               lot = a_position.Volume(); 
               time = POSITION_TIME; 
               tick = a_position.Ticket(); 
            }
         }
      }
   }
   if(a==1) 
	{result = OldPrice;} else
   if(a==2) 
	{result = profit;} else
   if(a==3) 
	{result = lot;} else
   if(a==4) 
	{result=(double)time;}else
   if(a==5) 
	{result=(double)tick;}else
   {result=0;}
   return(result);
  }
Buona giornata.
Buone feste a tutti.
Ho bisogno di aiuto da parte di professionisti.
Ho scritto questo codice in MQL4 per cercare l'ordine con il prezzo di apertura più basso e ottenere i suoi dati
Ora sto cercando di trasferire tutto in MQL5, ma per qualche motivo non funziona(
Qual è l'errore?
 
Maksim Burov #:
for(int i=OrdersTotal(); i>=0; i--)

Non ho approfondito l'essenza del codice, ma ciò che mi è saltato subito all'occhio è il numero erroneamente impostato di ordini da ricercare. Dovrebbe essere così:

for(int i=OrdersTotal() - 1; i>=0; i--)

Inoltre, nel ciclo viene eseguito il loop degli ordini, ma si cercano le proprietà di posizione. Anche questo non è corretto. Suppongo che molto probabilmente sia necessario eseguire il loop attraverso le posizioni:

for(int i=PositionsTotal() - 1; i>=0; i--)

Saluti, Vladimir.