[ARCHIVO]Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No puedo ir a ningún sitio sin ti - 5. - página 428

 

¿Es posible mejorar el rendimiento de un EA si el indicador utilizado en él, que se llama a través de iCustom(), se transfiere completamente a una dll? ¿Merece la pena jugar a este juego? ¿El dll es siempre más rápido que el indicador? ¿Y cuáles son las peculiaridades de trabajar con el array Close[] en la dll?


Sí, también añadiré una pregunta: cómo formatear la función IndicatorCounted() en la dll.

 
gyfto:

1. ¿Es posible obtener la ganancia de rendimiento del EA, si el indicador utilizado en él, que se llama a través de iCustom(), se transfiere completamente a una dll? ¿Vale la pena jugar a este juego? ¿El dll es siempre más rápido que el indicador? ¿Y cuáles son las peculiaridades de trabajar con el array Close[] en una dll?


2. Sí, también me gustaría añadir una pregunta: cómo diseñar la función IndicatorCounted() en la dll.

Es un tema interesante. Pero...

1. No lo sé, no lo he probado, pero lo dudo, puede ser un incremento insignificante. Por lo que he visto los indicadores transferidos a dll no funcionan rápido, pero optimizar el código del indicador permite conseguir muy buenos resultados en mql.

Aquí no hay trampa, debemos pasar el valor de IndicatorCounted(), Bars y en la dll debemos decidir si se vuelven a contar todas o sólo una barra. En lugar de IndicatorCounted() y Bars, puede pasar Limit ya calculado.

Evidentemente, si el indicador es muy lento, lo que lo hace poco realista para su uso en Asesores Expertos (no se puede probar), entonces la transferencia a la dll no ayudará.

 
gyfto:

1. ¿Es posible obtener la ganancia de rendimiento del EA, si el indicador utilizado en él, que se llama a través de iCustom(), se transfiere completamente a una dll? ¿Vale la pena jugar a este juego? ¿El dll es siempre más rápido que el indicador? ¿Y cuáles son las peculiaridades de trabajar con el array Close[] en la dll?
2. Sí, también añadiré una pregunta: ¿cómo formatear la función IndicatorCounted() en la dll?

1. Claro que puedes y debes. Es 20 veces más rápido en el cálculo. Por no hablar de la cómoda depuración y las infinitas posibilidades de C++ y otros lenguajes normales.

2. no lo necesitas allí.

 
¿Por qué la línea se rompe hacia abajo? Necesito una sección por código EMPTY. con un error para H1 (puedo verlo yo mismo), pero ¿cómo puedo arreglar EMPTY?
SetIndexStyle(0,EMPTY);
 
¿Por qué la línea se rompe hacia abajo? Necesito una sección por código EMPTY. (página 427) con un error para H1 (puedo verlo yo mismo), pero ¿cómo puedo arreglar EMPTY?
SetIndexStyle(0,EMPTY);
 
kopeyka:
¿Por qué se rompe la línea? Necesito un segmento por el código EMPTY. con un error para H1 (puedo verlo yo mismo), pero ¿cómo puedo arreglar EMPTY?

Pruebe a configurar SetIndexEmptyValue(), opciones: 0, EMPTY_VALUE

 
Integer:

Pruebe a configurar SetIndexEmptyValue(), opciones: 0, EMPTY_VALUE


Gracias... lo probaré)):
 
Integer:

...

1. No sé, no he probado...

Lo he probado. EMA en mql y en dll.

01:46:19 1 EURUSD,M15: Alerta: dll: 109
01:46:19 1 EURUSD,M15: Alerta: 1
01:46:19 1 EURUSD,M15: Alerta: mql: 109
01:46:19 1 EURUSD,M15: Alerta: dll: 0
01:46:19 1 EURUSD,M15: Alerta: 2
01:46:19 1 EURUSD,M15: Alerta: mql: 156
01:46:20 1 EURUSD,M15: Alerta: dll: 202
01:46:20 1 EURUSD,M15: Alerta: 3
01:46:20 1 EURUSD,M15: Alerta: mql: 172
01:46:20 1 EURUSD,M15: Alerta: dll: 0
01:46:20 1 EURUSD,M15: Alerta: 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: Alerta: 6
01:46:21 1 EURUSD,M15: Alerta: mql: 202
01:46:21 1 EURUSD,M15: Alerta: dll: 94
01:46:21 1 EURUSD,M15: Alerta: 7
01:46:21 1 EURUSD,M15: Alerta: mql: 172
01:46:21 1 EURUSD,M15: Alerta: 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: Alerta: 10
01:46:22 1 EURUSD,M15: Alerta: mql: 172
01:46:22 1 EURUSD,M15: Alerta: dll: 93
01:46:22 1 EURUSD,M15: Alerta: 11
01:46:22 1 EURUSD,M15: Alerta: mql: 93
01:46:22 1 EURUSD,M15: Alerta: dll: 78
01:46:22 1 EURUSD,M15: Alerta: 12
01:46:22 1 EURUSD,M15: Alerta: mql: 78
01:46:22 1 EURUSD,M15: Alerta: dll: 78
01:46:22 1 EURUSD,M15: Alerta: 13
01:46:23 1 EURUSD,M15: Alerta: mql: 250
01:4623 1 EURUSD,M15: Alerta: dll: 156
01:46:23 1 EURUSD,M15: Alerta: 14
01:46:23 1 EURUSD,M15: Alerta: mql: 187
01:46:23 1 EURUSD,M15: Alerta: dll: 0
01:46:23 1 EURUSD,M15: Alerta: 15
01:46:23 1 EURUSD,M15: Alerta 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: Alerta: mql: 93
01:46:24 1 EURUSD,M15: Alerta: dll: 78
01:46:24 1 EURUSD,M15: Alerta: 18
01:46:24 1 EURUSD,M15: Alerta: mql: 94
01:46:24 1 EURUSD,M15: Alerta: dll: 15
01:46:24 1 EURUSD,M15: Alerta: 19
01:46:2446:46:24 1 EURUSD,M15: Alerta: mql: 94
01:46:24 1 EURUSD,M15: Alerta: dll: 78
01:46:24 1 EURUSD,M15: Alerta: 20
01:46:25 1 EURUSD,M15: Alerta: mql: 234
01:46:25 1 EURUSD,M15: Alerta: dll: 78
01:46:25 1 EURUSD,M15: Alerta: 21
01:46:25 1 EURUSD,M15: Alerta: mql: 156
01:46:25 1 EURUSD,M15: Alerta: dll: 94
01:46:25 1 EURUSD,M15: Alerta: 22
01:46:25 1 EURUSD,M15: Alerta: mql: 94
01:46:25 1 EURUSD,M15: Alerta: dll: 16
01:46:2546:25 1 EURUSD,M15: Alert: 23
01:46:26 1 EURUSD,M15: Alert: mql: 93
01:46:26 1 EURUSD,M15: Alert: dll: 171
01:46:26 1 EURUSD,M15: Alert: 24
01:46:26 1 EURUSD,M15: Alert: mql: 171
01:46:26 1 EURUSD,M15: Alerta: dll: 187
01:46:26 1 EURUSD,M15: Alerta: 25
01:46:26 1 EURUSD,M15: Alerta: mql: 156
01:46:26 1 EURUSD,M15: Alerta: dll: 78
01:46:26 1 EURUSD,M15: Alerta: 26
01:46:27 1 EURUSD,M15: Alerta: mql: 62
01:4627 1 EURUSD,M15: Alerta: dll: 187
01:46:27 1 EURUSD,M15: Alerta: 27
01:46:27 1 EURUSD,M15: Alerta: mql: 78
01:46:27 1 EURUSD,M15: Alerta: dll: 171
01:46:27 1 EURUSD,M15: Alerta: 28
01:46:27 1 EURUSD,M15: Alerta mql: 93
01:46:27 1 EURUSD,M15: Alerta: dll: 78
01:46:27 1 EURUSD,M15: Alerta: 29
01:46:27 1 EURUSD,M15: Alerta: mql: 172
01:46:28 1 EURUSD,M15: Alerta: dll: 94
01:46:28 1 EURUSD,M15: Alerta: Media. mql: 140 dll: 91

Unas cuantas pruebas:

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

Esto se nota bastante. Si los cálculos son más complicados, el código se notará mucho más.

 
SI EL TICKET DE LA ORDEN SE ALMACENA EN EL SERVIDOR DEL CORREDOR, ¿DÓNDE SE ALMACENAN LAS ÓRDENES MÁGICAS Y LOS COMENTARIOS?
 

¡¡¡Buenos días!!! Debo haber entendido mal algo sobre las matrices o algo así. ¡¡¡La función no pone un beneficio en el array!!! Es cero en todas las circunstancias. ¡Cero y ya está!

Función.

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


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

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

El olvido más allá de todas las funciones

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