[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 429

 
Dimka-novitsek:

Buona giornata!!! Devo aver capito male qualcosa sugli array o qualcosa del genere. La funzione non mette un profitto nell'array!!! È zero in tutte le circostanze. Zero e basta!

int Orderasthitaem[6][3];
void Orderasthitaem()
{
 int BUY = 0, SELL = 0, BUYLIMIT = 0, BUYSTOP = 0, SELLLIMIT = 0, SELLSTOP = 0;
 double BUY_Profit = 0, SELL_Profit = 0;
 for (int i = 0; i < OrdersTotal(); i++)
  {
   OrderSelect(i, SELECT_BY_POS);  
   if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
    {            
     int type = OrderType();
     if (type == 0) {BUY++; BUY_Profit = BUY_Profit + OrderProfit();}
     if (type == 1) {SELL ++; SELL_Profit = SELL_Profit + OrderProfit();}
     if (type == 2) {BUYLIMIT++;}
     if (type == 3) {SELLLIMIT++;}
     if (type == 4) {BUYSTOP++;}
     if (type == 5) {SELLSTOP++;}}}
       
     Orderasthitaem[0][1] = BUY;
     Orderasthitaem[0][2] = BUY_Profit;
     Orderasthitaem[1][1] = SELL;
     Orderasthitaem[1][2] = SELL_Profit;
     Orderasthitaem[2][1] = BUYLIMIT;
     Orderasthitaem[3][1] = SELLLIMIT;
     Orderasthitaem[4][1] = BUYSTOP;
     Orderasthitaem[5][1] = SELLSTOP;        
    }
  }
}
Funzione.

L'obiagrafo è fuori da tutte le funzioni.

 
Grazie!!!
 

Perché un array come int? E se i profitti sono frazionari, ma non credo che sia significativo... Sì, apparentemente non c'è bisogno di un dowble!

Ora lo ridefinisco e faccio un tentativo. Ma farà la differenza? Perché non ha funzionato? Farò un tentativo...

 
ruslanchik:
Se il biglietto d'ordine è memorizzato sul server del broker, dove sono memorizzati gli ordini di majik e di commento?

Sul server del broker.
 
Ah, ho capito cosa stai assegnando agli elementi dell'array. Sì, grazie!!!!!!!!
 
Ciao, sto studiando il tutorial MQL4 di Sergey Kovalev e non ho ancora trovato come accedere agli array di serie temporali di altre coppie di valute. Cioè, ho bisogno di caricare array di serie temporali di diverse coppie di valute in un EA. So che si può accedere ad alcuni dati usando la funzione MarketInfo(), ma il problema è che gli ID delle richieste non contengono la chiusura o altri parametri per le serie di prezzi. Per favore, consigliatemi dove posso leggere come organizzare il lavoro (se esiste) con array-tempi e diversi strumenti, o forse come aggirare questa limitazione.
 
In realtà non ho ancora compilato o provato nulla, lo sto solo guardando. Tuck, il punto è che all'uscita dai cicli i valori di BUY_Profit e i valori delle variabili non vengono salvati, giusto? Il programma viene eseguito in modo sequenziale o non viene salvato?
 
Dimka-novitsek:
In realtà non ho ancora compilato o provato nulla, lo sto solo guardando. Tuck, il punto è che all'uscita dei cicli, i valori BUY_Profit e BUT non vengono salvati, giusto? Il programma viene eseguito in modo sequenziale o non viene salvato?
Dimka-novitsek:
Ah, ho capito cosa state assegnando agli elementi dell'array. Sì, grazie!!!!!!!!

Qualsiasi tipo è possibile. Solo che non ho notato che una delle variabili è doppia. Se hai bisogno del doppio, metti il doppio.

Funziona?

 

Sto solo guardando. И... OOOOOOOOO!!!!!! L'ho fatto così nel mio, dichiarato così Orderasthitaem[6][2]; nell'elemento due array, cioè avete capito, e indirizzato già il terzo Orderasthitaem[0,2] !!!!!!!

Di sicuro, ecco il cane nella buca!!!!!!!!!!! OOO!!!

 
Dimka-novitsek:
In realtà non ho ancora compilato o provato nulla, lo sto solo guardando. Takm, il punto è che all'uscita dai cicli, i valori delle variabili BUY_Profit e prue non vengono salvati, giusto? Il programma viene eseguito in modo sequenziale o non viene salvato?

...si potrebbe anche fare così:

double Orderasthitaem[6][2];
void Orderasthitaem()
{
    double ld_Profit = 0.;
    int li_Total = OrdersTotal();
    ArrayInitialize (Orderasthitaem, 0.);
    if (li_Total == 0) return;
    for (int i = 0; i < OrdersTotal(); i++)
    {
        OrderSelect (i, SELECT_BY_POS);  
        if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magicnumber)
        {            
            int type = OrderType();
            ld_Profit = OrderProfit();
            Orderasthitaem[type][0]++;
            if (type > 1) continue;
            Orderasthitaem[type][1] += ld_Profit;
        }
    }
}
- Dipende da come ti piace.
Motivazione: