Calcolo dei profitti degli ordini chiusi "HELP - pagina 6

 
Aleksey Semenov:
Se avete un terminale pieno di centinaia di variabili glob inutilizzate, per esempio, allora sì - la paratia finirà tristemente, se no, funziona abbastanza rapidamente, se scritto correttamente
puoi costruire il tuo registro
 
Aleksey Semenov:
Se, per esempio, il vostro terminale è pieno di centinaia di variabili glob inutilizzate, allora sì - il bulkheading finirà tristemente, se no, funziona abbastanza rapidamente, se scritto correttamente
Non mi dispiace, ma è meglio trovare modi più semplici se possibile. O non stiamo cercando vie facili) ?
 
Vitaly Muzichenko:
Non mi dispiace, ma è meglio trovare modi più semplici se possibile. O non stiamo cercando vie facili?
la cosa principale è iniziare a scrivere da soli
 
Vitaly Muzichenko:
Non mi dispiace, ma è meglio trovare modi più semplici se possibile. O non stiamo cercando una via facile?
Quindi dov'è la via più facile, la domanda rimane senza risposta.
 

Non abbiamo ancora risolto il problema, mentre questa è una funzione necessaria e molte persone la usano e non sanno che il profitto degli ordini chiusi non è considerato correttamente.
Ecco perché una semplice soluzione: LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); non funziona e tutti continuano a fare casino con gli ordini storici nei loro codici.

Non c'è una soluzione competente anche su tutta la rete - dice "google". Quindi, si scopre che tutti usano la soluzione standard errata, o quella corretta ma solo l'ultimo ordine?

 
Natashe4ka:

Non abbiamo ancora risolto il problema, mentre questa è una funzione necessaria e molte persone la usano e non sanno che il profitto degli ordini chiusi non è considerato correttamente.
Ecco perché una semplice soluzione: LastProfit+=OrderProfit()+OrderCommission()+OrderSwap(); non funziona e tutti continuano a fare casino con gli ordini storici nei loro codici.

Non c'è una soluzione competente nemmeno su tutta la rete - dice "google". Quindi, si scopre che tutti usano la soluzione standard errata, o quella corretta ma solo l'ultimo ordine?

Noi l'abbiamo consigliato, voi non l'avete ricevuto....
 
Renat Akhtyamov:
Noi abbiamo consigliato, voi non avete capito....

Ok, allora scomponiamolo: c'è un tempo di chiusura degli ordini, c'è un biglietto o un numero di ordini che coincide con il tempo di chiusura. Come possiamo combinare e calcolare il profitto di questi ordini?
Sembra semplice, ma ancora non capiamo.

 

Conta correttamente, ma solo se vengono chiusi 1-3 ordini, se più di 3, allora si ottiene il profitto con un valore poco chiaro.
Cos'altro possiamo aggiungere qui?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }
 
Natashe4ka:

Conta correttamente, ma solo se 1-3 ordini sono chiusi, se più di 3, allora il profitto è con un valore non chiaro.
Cos'altro possiamo aggiungere qui?

//+----------------------------------------------------------------------------+
//     Возвращает суммарный профит в валюте депозита серии закрытых ордеров    |
//+----------------------------------------------------------------------------+
double LastProfitCL(int op=-1){ //"op" позиция (-1 любая позиция)
  double LastProfit=0;
  datetime t=0;
   for(i=OrdersHistoryTotal()-1;i>=0;i--)
     if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && (OrderType()==OP_BUY || OrderType()==OP_SELL) && OrderSymbol()==Symbol() && OrderMagicNumber()==magic) {
       if (OrderSymbol()!=Symbol()||OrderMagicNumber()!=magic) continue;
       if (t<OrderCloseTime()) {t=OrderCloseTime();}
       if ((op<0||OrderType()==op) && t==OrderCloseTime()) {LastProfit+=OrderProfit()+OrderCommission()+OrderSwap();}
       }
  return(LastProfit);
   }

Avete mai provato a chiedervi "Perché e cosa c'è scritto nel mio codice?

Vi ho già detto tre volte sopra cosa fare e come farlo.

Non sarete in grado di muovervi dal punto morto, altrimenti non sarete in grado di farlo.

 
Natashe4ka:

Ok, allora scomponiamolo: c'è un tempo di chiusura degli ordini, c'è un biglietto o un numero di ordini che coincide con il tempo di chiusura. Come possiamo combinare e calcolare il profitto di questi ordini?
Sembra facile, ma ancora non lo capisco.

Salvi tutto questo da qualche parte in una variabile o in un array? Mostraci prima dove lo memorizzi, poi vedremo cosa fare dopo.