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

 
trader781:

1) il compilatore si lamenterà se la seconda dimensione non è impostata, "specificare il tipo di classe, parametri sconosciuti" apparirà immediatamente

2) allora il bot morirà immediatamente all'avvio con "critical error array out of range".

3) impostareint count1=-1; poi passare attraverso il ciclo. Cosa c'è di sbagliato qui?

Beh, rivedete le risposte ogni tanto: 1 e 2 e 3 e ...

Stai facendo la stessa cosa da più di una settimana e peggiora ogni volta, anche se ti è già stata data una risposta e segnalato l'errore. Nel primo codice, il compilatore non si lamentava che la seconda dimensione non fosse presente, ma in quelli successivi inizia a lamentarsi? Il compilatore è andato male? Potete anche aprire qualsiasi codice con array e vedere come vengono creati e fare lo stesso.

 
Artyom Trishkin:

Non esiste una cosa del genere. Le MA sono già state così tanto sviscerate, da così tante persone, che si deve solo aspettare un nuovo pensiero da un trader appena ambizioso. Stavo solo scherzando.

La verità è che sono stufo di andare in giro con una bottiglia di MA per tanti anni. Rimangono indietro. Probabilmente dovrebbero essere usati in un altro settore, ma non per catturare i flussi di tendenza.

Ci sono tutti i tipi di mashka.

In generale, ci sono solo pusher ovunque.

 
Victor Nikolaev:

Ci sono tutti i tipi di mash-up.

In generale, sono tutti funghi che vengono usati ovunque

Quindi cosa sto dicendo? È quello che sto dicendo - in una veste diversa, non di testa.
 
Vitaly Muzichenko:


Non ancora finito. Non avrei scritto qui se ne avessi trovato uno simile con altri. Penso che tu stesso capisca che una sequenza numerica e una lista di strutture non sono la stessa cosa, altrimenti ci sarebbe un'altra equazione con un numero infinito di incognite.

Artyom Trishkin:

Che ne dite di questo?



#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);
    
}
  
E per quanto riguarda il lancio del codice qui - mi fa incazzare quando qualcuno lo posta e poi deve scorrere le pagine. Così è più compatto.
 
trader781:
fino a quando non lo farò. Non starei scrivendo qui se ne avessi trovato uno simile con altri.
Si prega di incollare il codice non come file ma in un messaggio. È così che si guarda da un telefono cellulare?
 
trader781:
fino a quando non lo farò. Non avrei scritto qui se avessi trovato la stessa cosa con altri. Penso che tu stesso abbia capito che serie di numeri e lista di strutture non sono la stessa cosa, altrimenti otterrai un'altra equazione con un numero infinito di incognite.
#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=-1;

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,10);
         orders[count1].Ticket=OrderTicket();
         orders[count1].lot=OrderLots();
         orders[count1].orderopenprice=OrderOpenPrice();
         orders[count1].ordertype=OrderType();
         orders[count1].profit=OrderProfit();
         orders[count1].stoploss=OrderStopLoss();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
E per quanto riguarda il lancio del codice qui - mi fa incazzare quando qualcuno lo posta e poi deve scorrere le pagine. Così è più compatto.

Sbagliato. Tracciate dal vostro codice la dimensione del vostro array.

Bisogna pensare, almeno un po'. Non c'è bisogno di indovinare. Pensa. Ogni passo del programma. O stai aspettando che qualcuno lo scriva per te? Questo è un servizio freelance - a volte ti ordinano di scrivere funzioni.

 
Artyom Trishkin:

Sbagliato. Tracciate dal vostro codice la dimensione del vostro array.

Dovresti pensarci almeno un po'. Non si dovrebbe cercare di indovinare. Pensate. Ogni passo del programma. O stai aspettando che qualcuno lo scriva per te? Questo è un servizio freelance - a volte ti ordinano di scrivere funzioni.

Per come la vedo io

1) aggiungere a zero se si trova l'ordine

2) cambiare la dimensione a 0, riserva 10

3) Scrivere 0 come numero del primo ordine, 1 come secondo, ecc.

Per quanto riguarda i freelance, non metto in dubbio che scriveranno qualsiasi cosa, ma devi comunque riscriverla tu stesso. Non è necessario andarci senza sosta.
 
trader781:
fino a quando non lo farò. Non avrei scritto qui se avessi trovato lo stesso con altri. Penso che tu stesso capisca che la sequenza numerica e la lista delle strutture non sono la stessa cosa, altrimenti sarebbe un'altra equazione con un numero infinito di incognite.
int count1=-1;

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,10);
         orders[count1].Ticket=OrderTicket();
         }    
     }
     ArraySort(orders,WHOLE_ARRAY,0,MODE_ASCEND);
    
}
  
E per quanto riguarda il lancio del codice qui - mi fa incazzare quando qualcuno lo posta e poi deve scorrere le pagine. La ragione è che la codifica non ha alcun effetto sulla qualità del progetto.

Non ho scritto molto, ho solo registrato un piccolo video di risposta.

Artem certamente aiuta come può, ma non mi dà un pesce, solo una canna da pesca)

trader781, guarda la documentazione ogni tanto, ora è piena ad ogni angolo.
 
trader781:

il modo in cui lo vedo

1) aggiungere a zero se si trova un ordine

2) cambiare la dimensione a 0, riserva 10

3) Scrivere 0 come numero del primo ordine, 1 come numero del secondo ordine, ecc.

Per quanto riguarda l'agenzia freelance, non metto in dubbio che scriveranno qualsiasi cosa, ma devi comunque riscriverla tu stesso. Non andarci senza sosta.

E come volete scrivere qualcosa in un array con dimensione zero?

Metti dei soldi in un portafoglio che non hai...

 
Artyom Trishkin:

E come volete scrivere qualcosa in un array con dimensione zero?

Mettere soldi in un portafoglio che non esiste...

rivisto il post 844, così non devo 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 booleano fals, può essere un vuoto, e può essere un punto di partenza.

Motivazione: