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

 
MakarFX #:

Puoi dirmi come farlo correttamente

non inserire tutti gli elementi che voglio sommare, ma solo specificare 5 elementi

#property copyright "Copyright 2020, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
int Label1Buffer[];
int Label2Buffer[];
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   int i=0,
       f=0,
       limit=9;
   ArrayResize(Label1Buffer,limit);
   ArrayResize(Label2Buffer,limit);
   for(i=limit-1; i>=0; i--)
     {
Label1Buffer[i]= 3;
 if(i<=4) f+=Label1Buffer[i];
Label2Buffer[i]= f;
      Print(Label2Buffer[i]);
     }
Print("   !  ",Label2Buffer[0]);
  }
//+------------------------------------------------------------------+
 
Galim_V #:

No, non è questo. Finora ho fatto questo

   for(i=limit;i>=0;i--)
     {
      Label1Buffer[i] = MathRand();
      tmp = 0.0; 
      for(int a=Input1; a>0; a--)
        {
         tmp +=  Label1Buffer[i+a];
        } 
      Label2Buffer[i] = tmp;
     }
 
iHigh(NULL,PERIOD_H1,i) e double H=iHigh(NULL,PERIOD_H1,i); non sono la stessa cosa?

Per qualche motivo danno risultati diversi dopo il ciclo while.

Volevo ottimizzarlo in modo da non scrivere costantemente una lunga linea iHigh(NULL,PERIOD_H1,i) ma memorizzarla in una variabile. Cambiato in una variabile nel ciclo, il risultato è diverso.
 
Ivan Butko iHigh(NULL,PERIOD_H1,i) e double H=iHigh(NULL,PERIOD_H1,i); non sono la stessa cosa?

Per qualche motivo danno risultati diversi dopo il ciclo while.

Volevo ottimizzarlo in modo da non scrivere costantemente una lunga linea iHigh(NULL,PERIOD_H1,i) ma memorizzarla in una variabile. Cambiato in una variabile nel ciclo, il risultato è diverso.

dipende da quale contesto considerare...

Se il vostro ciclo while gioca con i, alloraiHigh(NULL,PERIOD_H1,i) e H saranno diversi... Poiché H memorizza i dati degli altri i

 
Nikolay Ivanov iHigh(NULL,PERIOD_H1,i) e H saranno diversi... Poiché H memorizza i dati di un altro i

Sì, hai ragione, gioca con i. Insomma, grazie.

 
C'è un modo per tagliare la storia? Quando lo scarichi, è vecchio di 20 anni, ma ti serve 2-3 anni fa...
 
Ivan Butko #:
C'è un modo per tagliare la storia? Quando lo scarichi, è vecchio di 20 anni, ma ti serve 2-3 anni fa...

Usa il tasto "Shift" per selezionare i dati che non vuoi e cancellarli

 
MakarFX #:

Usa il tasto "Shift" per selezionare i dati che non vuoi e cancellarli.

Grazie

 
Buon pomeriggio.
void CloseAll()
{
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
         {
            if (OrderType() == OP_BUY)
            {
               if (!OrderClose(OrderTicket(),OrderLots(), Bid, Slippage))
               Print (" Не удалось закрыть ордер на покупку!");
            }
            if (OrderType() == OP_SELL) 
            {
               if (!OrderClose(OrderTicket(),OrderLots(), Ask, Slippage))
               Print (" Не удалось закрыть ордер на продажу!");
            }
         }
      }
   }
}
Uso questo codice per chiudere tutti gli ordini. Ma ho notato che se ce ne sono molti, non tutti sono chiusi. Cosa posso aggiungere per chiuderli tutti, anche se non la prima volta. Se possibile, ci faccia un esempio.
 

Buon pomeriggio, di nuovo)

Seconda domanda:
Voglio chiudere parzialmente gli ordini. Ma c'è un problema, quando si chiudono parzialmente gli ordini, come ho capito, il biglietto d'ordine cambia, e da questo l'ultimo diventa il primo, e la cosa principale per me è mantenere l'ordine di apertura. Affinché gli ultimi rimangano ultimi. Come possiamo rintracciare l'ordine precedente. Il prezzo di apertura cambia? Se possibile, con esempi)
Grazie in anticipo

Motivazione: