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

 
eddy:
Non mi interessa, voglio solo tracciare una linea...
I punti nell'immagine sono max min ?
 
No, cloze
 
costy_:

Это для не стандартного подхода, того чего нет в отчете оптимизатора. файл здесь terminal\tester\files

Сохраняйте отчет из "Результаты оптим." сохран как>>


Ora capisco come salvare qualcosa. Per favore, ditemi come salvare automaticamente i risultati dell'ottimizzazione. Fondamentalmente, mi interessa solo il massimo drawdown e profitto.
 
001:

Ora capisco come salvare qualcosa di cui ho bisogno. Per favore, consigliate come salvare automaticamente i risultati dell'ottimizzazione. In linea di principio, mi interessa solo il massimo drawdown e profitto.

In Deinit, contate attraverso OrdersHistoryTotal la somma di tutti i redditizi, non redditizi, drawdown, profitti e al file ;)

Qualcosa del genere

   for(i=0;i<OrdersHistoryTotal();i++)
    if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) && OrderSymbol()==Symbol())
    if(OrderProfit()>=0)
     profit+=OrderProfit();
     else noprof+=OrderProfit();
   прибыль = profit  -  noprof;



 
eddy:
No, cloze.

Più o meno lo stesso, sul periodo inferiore puoi visualizzare il vettore di quello più vecchio sul grafico H1 nelle impostazioni ind H4.

A cosa serve?

File:
maxvekt.mq4  2 kb
 
costy_:

In Deinit, usate OrdersHistoryTotal per contare lasomma di tutti i profittevoli, non profittevoli, drawdown, profitti e archiviatela ; )

Qualcosa del genere




Sì, c'è quello. Purtroppo questo metodo fornisce dati diversi da quelli di MT. Basta salvare atomicamente i risultati dell'ottimizzazione in un file ed è tutto...
 
Non capisco il calcolo. potete spiegarmelo usando il mio disegno come esempio?
 
costy_:

Si scorrono gli ordini aperti e pendenti in ordine di numero di posizione nella lista, si seleziona quello che interessa e si recupera il suo ticket

e continuare a lavorare con il biglietto.



Se non sai cosa farci, semplicemente non sai cosa farci.

Per favore, ditemi perché dobbiamo farlo se abbiamo già selezionato lo stesso ordine?

O forse non capisco qualcosa: QUESTO codice :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

e questo:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

farà la stessa cosa?

 
Aleksandr_8:

Grazie per la vostra risposta.

Perché dobbiamo farlo se abbiamo già selezionato lo stesso ordine?

O forse non capisco qualcosa: QUESTO codice :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES); lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

e questo:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal()-1; cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }
}

farà la stessa cosa?

Il codice segnato in rosso è ridondante, poiché l'ordine è già stato selezionato e non è necessario selezionarlo di nuovo per elaborarlo.

 
Aleksandr_8:

Grazie per la vostra risposta.

Perché dobbiamo farlo se abbiamo già selezionato lo stesso ordine?

O forse non capisco qualcosa: QUESTO codice :

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
ticketbuy=OrderTicket();OrderSelect(ticketbuy, SELECT_BY_TICKET, MODE_TRADES);lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

e questo:

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }

farà la stessa cosa?

Nella prima variante, il secondo OrderSelect su ticketbuy, utilizza un secondo controllo, credo (se l'apertura sull'ordine pendente scivola o +1 ordertotal...).

Nel post precedente ha trovato correttamente gli errori (tranne il verde).

L'acquisto del biglietto non è segnato nel secondo. Abbiamo bisogno di identificare

string symbol = Symbol();int cnt;
for(cnt = OrdersTotal(); cnt >= 0; cnt--){
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == symbol && OrderMagicNumber()==Magicbuy) {
lotsbuy2=OrderLots() ;
double bid = MarketInfo(symbol,MODE_BID);
ticketbuy=OrderTicket();
RefreshRates();
OrderClose(ticketbuy,lotsbuy2,bid,3,Magenta); }