[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 428

 

È possibile migliorare le prestazioni di un EA se l'indicatore utilizzato in esso, che viene chiamato attraverso iCustom(), viene completamente trasferito in una dll? Vale la pena di fare un tale gioco? La DLL è sempre più veloce dell'indicatore? E quali sono le peculiarità di lavorare con l'array Close[] in dll?


Sì, aggiungerò anche una domanda: come formattare la funzione IndicatorCounted() in dll.

 
gyfto:

1. È possibile ottenere il guadagno di prestazioni dell'EA, se l'indicatore utilizzato in esso, che è chiamato tramite iCustom(), è completamente trasferito in una dll? Vale la pena di giocare a questo gioco? La DLL è sempre più veloce dell'indicatore? E quali sono le peculiarità di lavorare con l'array Close[] in una DLL?


2. Sì, vorrei anche aggiungere una domanda: come elaborare la funzione IndicatorCounted() in dll.

È un argomento interessante. Ma...

1. Non lo so, non l'ho provato, ma ne dubito, potrebbe essere un incremento insignificante. Da quello che ho visto gli indicatori trasferiti in dll non funzionano velocemente, ma l'ottimizzazione del codice dell'indicatore permette di ottenere ottimi risultati in mql.

Non c'è nessun imbroglio qui, dovremmo passare il valore di IndicatorCounted(), Bars e nella dll dovremmo decidere se ricontare tutto o solo una barra. Invece di IndicatorCounted() e Bars, potete passare Limit già calcolato.

Chiaramente, se l'indicatore è molto lento, il che lo rende irrealistico per l'uso in Expert Advisors (non è possibile testarlo), allora il trasferimento alla dll non aiuterà.

 
gyfto:

1. È possibile ottenere un guadagno di prestazioni dell'EA, se l'indicatore utilizzato in esso, che viene chiamato tramite iCustom(), viene completamente trasferito in una dll? Vale la pena di giocare a questo gioco? La DLL è sempre più veloce dell'indicatore? E quali sono le peculiarità di lavorare con l'array Close[] in dll?
2. Sì, aggiungerò anche una domanda: come formattare la funzione IndicatorCounted() in dll?

1. Certo, si può e si deve. È 20 volte più veloce nel calcolo. Per non parlare del comodo debugging e delle infinite possibilità del C++ e di altri linguaggi normali.

2. non ne hai bisogno lì.

 
Perché la linea si spezza verso il basso? Ho bisogno di una sezione per EMPTY. codice con un errore per H1 (posso vederlo io stesso), ma come faccio a risolvere EMPTY??
SetIndexStyle(0,EMPTY);
 
Perché la linea si interrompe verso il basso? Ho bisogno di una sezione per codice EMPTY. (pagina 427) con un errore per H1 (posso vederlo io stesso), ma come faccio a risolvere EMPTY?
SetIndexStyle(0,EMPTY);
 
kopeyka:
Perché la linea si interrompe? Ho bisogno di un segmento per EMPTY. codice con un errore per H1 (posso vederlo io stesso), ma come faccio a fissare EMPTY?

Prova a impostare SetIndexEmptyValue(), opzioni: 0, EMPTY_VALUE

 
Integer:

Prova a impostare SetIndexEmptyValue(), opzioni: 0, EMPTY_VALUE


Grazie...lo proverò subito)):
 
Integer:

...

1. Non so, non ho provato...

Provato. EMA su mql e in dll.

01:46:19 1 EURUSD,M15: Allarme: dll: 109
01:46:19 1 EURUSD,M15: Allarme: 1
01:46:19 1 EURUSD,M15: Allarme: mql: 109
01:46:19 1 EURUSD,M15: Allarme: dll: 0
01:46:19 1 EURUSD,M15: Allarme: 2
01:46:19 1 EURUSD,M15: Allarme: mql: 156
01:46:20 1 EURUSD,M15: Allarme: dll: 202
01:46:20 1 EURUSD,M15: Allarme: 3
01:46:20 1 EURUSD,M15: Allarme: mql: 172
01:46:20 1 EURUSD,M15: Allarme: dll: 0
01:46:20 1 EURUSD,M15: Allarme: 4
01:4620 1 EURUSD,M15: Alert: mql: 172
01:46:20 1 EURUSD,M15: Alert: dll: 171
01:46:20 1 EURUSD,M15: Alert: 5
01:46:20 1 EURUSD,M15: Alert: mql: 78
01:46:20 1 EURUSD,M15: Alert: dll: 78
01:46:20 1 EURUSD,M15: Allarme: 6
01:46:21 1 EURUSD,M15: Allarme: mql: 202
01:46:21 1 EURUSD,M15: Allarme: dll: 94
01:46:21 1 EURUSD,M15: Allarme: 7
01:46:21 1 EURUSD,M15: Allarme: mql: 172
01:46:21 1 EURUSD,M15: Allarme: dll: 94
01:4621 1 EURUSD,M15: Alert: 8
01:46:21 1 EURUSD,M15: Alert: mql: 234
01:46:21 1 EURUSD,M15: Alert: dll: 15
01:46:21 1 EURUSD,M15: Alert: 9
01:46:21 1 EURUSD,M15: Alert: mql: 78
01:46:22 1 EURUSD,M15: Alert: dll: 94
01:46:22 1 EURUSD,M15: Allarme: 10
01:46:22 1 EURUSD,M15: Allarme: mql: 172
01:46:22 1 EURUSD,M15: Allarme: dll: 93
01:46:22 1 EURUSD,M15: Allarme: 11
01:46:22 1 EURUSD,M15: Allarme: mql: 93
01:46:22 1 EURUSD,M15: Allarme: dll: 78
01:46:22 1 EURUSD,M15: Allarme: 12
01:46:22 1 EURUSD,M15: Allarme: mql: 78
01:46:22 1 EURUSD,M15: Allarme: dll: 78
01:46:22 1 EURUSD,M15: Allarme: 13
01:46:23 1 EURUSD,M15: Allarme: mql: 250
01:4623 1 EURUSD,M15: Allarme: dll: 156
01:46:23 1 EURUSD,M15: Allarme: 14
01:46:23 1 EURUSD,M15: Allarme: mql: 187
01:46:23 1 EURUSD,M15: Allarme: dll: 0
01:46:23 1 EURUSD,M15: Allarme: 15
01:46:23 1 EURUSD,M15: Allarme mql: 78
01:46:23 1 EURUSD,M15: Alert: dll: 171
01:46:23 1 EURUSD,M15: Alert: 16
01:46:24 1 EURUSD,M15: Alert: mql: 266
01:46:24 1 EURUSD,M15: Alert: dll: 0
01:46:24 1 EURUSD,M15: Alert: 17
01:46:24 1 EURUSD,M15: Allarme: mql: 93
01:46:24 1 EURUSD,M15: Allarme: dll: 78
01:46:24 1 EURUSD,M15: Allarme: 18
01:46:24 1 EURUSD,M15: Allarme: mql: 94
01:46:24 1 EURUSD,M15: Allarme: dll: 15
01:46:24 1 EURUSD,M15: Allarme: 19
01:46:2446:46:24 1 EURUSD,M15: Allarme: mql: 94
01:46:24 1 EURUSD,M15: Allarme: dll: 78
01:46:24 1 EURUSD,M15: Allarme: 20
01:46:25 1 EURUSD,M15: Allarme: mql: 234
01:46:25 1 EURUSD,M15: Allarme: dll: 78
01:46:25 1 EURUSD,M15: Allarme: 21
01:46:25 1 EURUSD,M15: Allarme: mql: 156
01:46:25 1 EURUSD,M15: Allarme: dll: 94
01:46:25 1 EURUSD,M15: Allarme: 22
01:46:25 1 EURUSD,M15: Allarme: mql: 94
01:46:25 1 EURUSD,M15: Allarme: dll: 16
01:46:2546:25 1 EURUSD,M15: Allarme: 23
01:46:26 1 EURUSD,M15: Allarme: mql: 93
01:46:26 1 EURUSD,M15: Allarme: dll: 171
01:46:26 1 EURUSD,M15: Allarme: 24
01:46:26 1 EURUSD,M15: Allarme: mql: 171
01:46:26 1 EURUSD,M15: Allarme: dll: 187
01:46:26 1 EURUSD,M15: Allarme: 25
01:46:26 1 EURUSD,M15: Allarme: mql: 156
01:46:26 1 EURUSD,M15: Allarme: dll: 78
01:46:26 1 EURUSD,M15: Allarme: 26
01:46:27 1 EURUSD,M15: Allarme: mql: 62
01:4627 1 EURUSD,M15: Allarme: dll: 187
01:46:27 1 EURUSD,M15: Allarme: 27
01:46:27 1 EURUSD,M15: Allarme: mql: 78
01:46:27 1 EURUSD,M15: Allarme: dll: 171
01:46:27 1 EURUSD,M15: Allarme: 28
01:46:27 1 EURUSD,M15: Allarme mql: 93
01:46:27 1 EURUSD,M15: Alert: dll: 78
01:46:27 1 EURUSD,M15: Alert: 29
01:46:27 1 EURUSD,M15: Alert: mql: 172
01:46:28 1 EURUSD,M15: Alert: dll: 94
01:46:28 1 EURUSD,M15: Alert: Average. mql: 140 dll: 91

Alcuni test:

Media. mql: 126 dll: 116
Media. mql: 122 dll: 86
Media. 167 dll: 91
Media. mql: 149 dll: 82
Media. mql: 140 dll: 91

Questo è abbastanza evidente. Se i calcoli sono più complicati, il codice sarà molto più evidente.

 
SE IL BIGLIETTO D'ORDINE È MEMORIZZATO SUL SERVER DEL BROKER, DOVE SONO MEMORIZZATI GLI ORDINI MAGICI E DI COMMENTO?
 

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!

Funzione.

/))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))


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;
         
         
}        
    

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$

L'oblio oltre ogni funzione

double Orderasthitaem[6,2];ArrayInitialize(Orderasthitaem, 0.0);
Motivazione: