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

 
trader781:

riscritto il post 844 per evitare di dover scrivere di nuovo il codice qui

Per quanto riguarda l'array di dimensioni zero - 0 può essere un intero, può essere l'equivalente di un falsificatore booleano, può essere un vuoto, e può essere il punto di partenza.

Non importa cosa intendi per zero. Se dimensionate un array con zero, chiamatelo zero gingerbread e sarà zero. Il che significa che l'array sarà zero.
 
trader781:

riscritto il post 844 per evitare di dover scrivere di nuovo il codice qui

Per quanto riguarda l'array di dimensioni zero - 0 può essere un intero, può essere l'equivalente di un falsificatore booleano, può essere un vuoto, e può essere un punto di partenza.

E per favore non fatemi inserire il codice giusto nel post giusto per voi:

//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
#property strict
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
struct myorder
  {
   int               Ticket;
   double            orderopenprice;
   int               ordertype;
   double            profit;
   double            stoploss;
   double            lot;
  };
myorder orders[];

int    i;
int    Magic=444;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   CalcOrders();

  }
//+------------------------------------------------------------------+
void CalcOrders()
  {
   int count1=0;

   for(i=OrdersTotal()-1; i>=0; i--)
     {
      if((OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) && (OrderSymbol()==Symbol())
         && (OrderMagicNumber()==Magic) && (OrderType()<2))
        {
         count1++;
         ArrayResize(orders,count1);
         orders[count1-1].Ticket=OrderTicket();
         orders[count1-1].lot=OrderLots();
         orders[count1-1].orderopenprice=OrderOpenPrice();
         orders[count1-1].ordertype=OrderType();
         orders[count1-1].profit=OrderProfit();
         orders[count1-1].stoploss=OrderStopLoss();
        }
     }
   ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);

  }
//+------------------------------------------------------------------+

Ora guardate quale array state riempiendo e per quale campo lo state ordinando. E soprattutto - perché avete bisogno di questo smistamento? Qual è lo scopo di tutto ciò?

 
Artyom Trishkin:

E per favore non fatemi incollare il codice giusto nel messaggio giusto per voi:

А теперь поглядите какой массив вы заполняете и по какому полю его сортируете. И, главное - зачем нужна эта сортировка? Какой в ней смысл?

ordinal'array di ordini, in ordine crescente dal valore zero

per esempio se abbiamo 20 ordini e 18 di essi sono saliti abbastanza accidentalmente di un paio di punti e li ho chiusi immediatamente con le mani

 
trader781:

ordinal'array di ordini, in ordine crescente dal valore zero

Per esempio, se abbiamo 20 ordini e 18 di essi sono saliti assolutamente per caso di un paio di punti, e li ho chiusi subito con le mani.

Se avete assolutamente bisogno di ordinare per biglietto, dovrete fare 2 array. Uno è un array di strutture e il secondo è un array bidimensionale che contiene il biglietto d'ordine nella prima dimensione, e nella seconda l'indice del contatore, l'indice sotto il quale le informazioni dell'ordine sono memorizzate nell'array di strutture. E riempire questi array allo stesso tempo in un ciclo.

Stai cercando di risolvere questa questione da così tanto tempo che non ricordo nemmeno lo scopo che stavi cercando di raggiungere. E probabilmente tutti gli altri.

Se ricordo bene, è necessario selezionare un certo numero dalla lista degli ordini. Allora qual è il problema? Basta fare un semplice array unidimensionale, ordinare i biglietti, e poi orderSelect(array[required], SELECT_BY_TICKET) ed ecco fatto... poi fate quello che volete con questo ordine.

 
Alexey Viktorov:

Se avete assolutamente bisogno di ordinare per biglietto, dovete fare due array. Uno è un array di strutture e il secondo è un array bidimensionale che contiene il biglietto d'ordine nella prima dimensione e l'indice del contatore nella seconda, l'indice sotto il quale le informazioni dell'ordine sono memorizzate nell'array di strutture. E riempire questi array allo stesso tempo in un ciclo.

Stai cercando di risolvere questa questione da così tanto tempo che non ricordo nemmeno lo scopo che stavi cercando di raggiungere. E probabilmente tutti gli altri.

Se ricordo bene, è necessario selezionare un certo numero dalla lista degli ordini. Allora qual è il problema? Basta fare un semplice array unidimensionale, ordinarlo, e poi orderSelect(array[required], SELECT_BY_TICKET) e questo è tutto... Poi puoi fare quello che vuoi con questo ordine.

Anche lì non ricordo cosa dovrei fare. Ma la cosa buona è che lo fa.

Gli chiedo specificamente di scrivere una cosa all'inizio, e poi gli chiedo di guardare attentamente ciò che ha scritto, in modo che capisca da solo che non funzionerà così - ha bisogno di un altro array locale proprio nella funzione, che dovremo ordinare e poi riempire l'array globale da quello ordinato.

 
Alexey Viktorov:

Se avete assolutamente bisogno di ordinare per biglietto, dovete fare due array. Uno è un array di strutture e il secondo è un array bidimensionale, che contiene il biglietto d'ordine nella prima dimensione e l'indice del contatore nella seconda, l'indice sotto il quale le informazioni dell'ordine sono memorizzate nell'array di strutture. E riempire questi array allo stesso tempo in un ciclo.

Stai cercando di risolvere questa questione da così tanto tempo, che non ricordo nemmeno lo scopo che stavi cercando di raggiungere. E probabilmente tutti gli altri.

Se ricordo bene, è necessario selezionare un certo numero dalla lista degli ordini. Allora qual è il problema? Basta fare un semplice array unidimensionale, ordinare i biglietti, e poi orderSelect(array[required], SELECT_BY_TICKET) ed ecco fatto... poi fate quello che volete con questo ordine.

No, capisco che ci sono molti modi per farlo in modo diverso ed evitare gli array. Perché ho bisogno di 2 se userò uno degli array?
 
trader781:
No, capisco che ci sono molti modi per farlo in modo diverso e fare a meno degli array. Perché 2 se ce n'è uno di strutture?

Perché un semplice array è ordinato in base ai valori nella prima dimensione dell'array, e come sia ordinato un array di strutture non ne ho idea.

Domanda interessante però... Ora proverò ad ordinare un array di strutture.

 
Alexey Viktorov:

Perché un semplice array è ordinato in base ai valori nella prima dimensione dell'array, ma come viene ordinato un array di strutture non ne ho idea.

È una domanda interessante però... Ora proverò ad ordinare un array di strutture.

Non ho la minima idea di cosa serva sotto forma di struttura. Il programma mq è scritto in un unico file, l'array è gestito in un unico scorrimento, e si adatta a una sola schermata. Che senso ha una struttura in questo caso, per interesse sportivo?
 
Alexey Viktorov:

Perché un semplice array è ordinato per valori nella prima dimensione dell'array, ma non ho idea di come sia ordinato un array di strutture.

Anche se la domanda è interessante... Proverò a sistemare una serie di strutture.

Non ho idea di cosa sia o di cosa si tratti

Ma ora che l'argomento è stato sollevato, è stupido buttarlo via. Ci sono anche array di classi.

 
Vitaly Muzichenko:
Non ho idea del perché sia necessario sotto forma di struttura. Il programma mq è scritto in un solo file, l'array è gestito in un unico scorrimento e si adatta a una sola schermata. Che senso ha una struttura in questo caso, per interesse sportivo?

Scriviamo tutto per amore dello sport. Prima capiamo cosa funziona e come funziona, e poi cominciamo a pensare a come scriverlo in modo più efficace.


Per quanto riguarda l'ordinamento dell'array di strutture: come mi aspettavo, l'esperimento è fallito. Già in fase di compilazione il compilatore ha detto"l'espressione non ha effetto"