Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 812

 
Pomid:
Gracias, lo aprendí y lo arreglé.
¡Qué tiro, lo has conseguido! Pero no puedo aprender, siempre hay muchas cosas que no sé todavía, y se sigue actualizando. Así que, "¡vive y aprende!"
 
barabashkakvn:
Y cuando se hacen pruebas (sin la optimización activada), ¿por qué hay que cargar todos los núcleos? Al fin y al cabo, si se hacen pruebas con visualización, no hay prisa, mientras que si se hacen pruebas sin visualización, los ordenadores modernos pueden hacerlo como un girasol en un solo núcleo.

Bueno creo que si todos los núcleos funcionaran en las pruebas sin visualización sería aún más rápido, solo siento que corriendo tranquilo aún con procesador moderno me falta velocidad, quizás depende mucho de la corrección del código, si está bien optimizado entonces todo es rápido, si no entonces largo.

Puedes decirme por favor,si OpenCL para la GPU o la tarjeta de vídeo afecta a la velocidad de las pruebas o es sólo para escribir el código, si el código está escrito paraOpenCL entonces se ejecutará mucho más rápido en el modo de prueba, y si el código es sólo código.

 
7Konstantin7:


Puedes decirme siOpenCL tiene algún efecto en la velocidad de las pruebas o si es sólo para escribir código, si el código está escrito enOpenCL entonces se ejecutará mucho más rápido en el modo de prueba, y si el código es sólo código.

Por lo que tengo entendido OpenCL en MT5 ayuda en el trabajo con gráficos "pesados", una tarjeta de vídeo no está involucrado en las pruebas y la optimización, de lo contrario todo el mundo habría sido hace mucho tiempo la minería en el servicio de agente, como en bitcoins.
 
evillive:
Por lo que tengo entendidoOpenCL en MT5 ayuda a trabajar con gráficos "pesados", la tarjeta de vídeo no está involucrada en las pruebas y la optimización, de lo contrario todo el mundo habría estado minando en el servicio de agente como en bitcoins hace mucho tiempo.

Es una pena si es así, me gustaría que todo estuviera involucrado)

Acabo de ver un código de robot en ese sitio mt5, lo descargó, ejecutó la prueba y tomó tanto tiempo, sobre todo en todas las garrapatas, sería mejor utilizar todos los núcleos en lugar de uno, pero es probable que la mayoría de los códigos publicados en ese sitio están mal escritos, es por eso que la prueba es tan largo, mi CPU no es ciertamente un Intel, pero 8 núcleos 4.000GHz debe volar, pero me siento en el probador en un cuaderno, sería triste si mt5 es culpable de que, por qué es así.

 
tara:

La variable debería estar ahí, no otra cosa:

¿Variable? Gracias.
 
Dime dónde está el error. Ya me duele la cabeza. (
Archivos adjuntos:
 
martovskiy_tigr:
Dime dónde está el error. Ya me duele la cabeza. (
¿Hablamos? ¿Qué te preocupa?
 

la ventana del indicador cuelga de -99999... a +99999...99

 
martovskiy_tigr:

la ventana del indicador cuelga de -99999... a +99999...99

El valor de i se cuenta mal, el bucle nunca se calculará, y también habrá salida fuera del array en varios lugares (las razones se destacan en rojo).

Esto es mejor:

   indx = rates_total-prev_calculated; //было indx = rates_total-prev_calculated-1; - что чаще всего < 0
   if(prev_calculated<1) indx=rates_total-2; //было if(indx<0) indx=0; - то есть всегда i=0 а цикл-то до 1, на i=0 цикл никогда не просчитается
   sm_bar = (Close[1] - Open[rates_total-1])/rates_total; //индекс не может быть [rates_total]
   i = indx;
   k = 0;
   ekviti[rates_total-1] = 0; //индекс не может быть [rates_total]
   while(i >= 0)
   {
    if(bar_n == TimeDayOfWeek(iTime(NULL,0,i)))
    {
     ekviti[i] = ekviti[i+1] + close[i] - open[i] - sm_bar;
     k++;
    }
    else ekviti[i] = ekviti[i + 1];
    i--;
   }
 
Gracias. Ciertamente, no lo habría descubierto por mi cuenta, simplemente no lo sabía.