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

 

Buenas noches a todos.

Me ha surgido una pregunta en la que no había pensado antes. ¿Qué es una garrapata? ¿Cómo se forma? ¿Cuándo se acumula un volumen suficiente de operaciones? No puede ser un precio mínimo o un paso de tiempo, porque los ticks no se distribuyen uniformemente en el tiempo y pueden repetir los valores anteriores de oferta y demanda.

¿Y cómo funcionan los intercambios en MT? Por ejemplo, pedimos el precio Ask, hacemos los cálculos y enviamos una orden de compra. ¿Se ejecutará al precio Ask que recibimos o al precio del siguiente tick (suponiendo que todos los cálculos se realizan antes de recibir la información sobre un nuevo tick)? Es decir, ¿hay una duración determinada del tic y de qué depende, en caso afirmativo?

 
AlexeyVik:

Dependiendo del número de líneas, declare los búferes indicadores y escriba simultáneamente el valor en uno de los búferes donde se dibuja la línea. Y luego leer este valor del Asesor Experto a través de iCustom().

Es en dos palabras.

¿Sabe que al trazar la línea, se especifica la hora de inicio y la hora de finalización y el precio, respectivamente? Para el buffer, hay que trazar un bucle sobre todas las barras. Deberías haber mirado primero el código y luego dar consejos. De lo contrario, sus consejos son inútiles 0......
 
nikelodeon:
Sabe que al trazar la línea, se especifica la hora de inicio y la hora de finalización y, en consecuencia, el precio. Para el buffer, debemos hacer un bucle a través de todas las barras. Deberías haber mirado primero el código y luego dar consejos. De lo contrario, su consejo es inútil 0......

Tienes que poner el precio en el buffer.

Y el bucle sólo es necesario para asegurar que las lecturas son para todos los bares. Para ser más precisos, es sólo por la belleza, y por regla general, todo el mundo trabaja con las lecturas de los dos últimos compases, 0 y 1.

Si un indicador no contiene el procesamiento de todas las barras, parece que no es necesario.

Me da tanta pereza como a muchos otros captar el código, quizá más que a todos ellos juntos, y me aconsejas que mire el código... ¿qué necesito? Pregunté en pocas palabras. Sea cual sea la pregunta, esa es la respuesta. Y si mi consejo es inútil, significa que estoy aconsejando al tipo equivocado.

 
AlexeyVik:

Es el precio lo que hay que poner en el tope.

Y el bucle sólo es necesario para asegurar que las lecturas son para todos los bares. Para ser más precisos, es sólo por la belleza, y por regla general, todo el mundo trabaja con las lecturas de los dos últimos compases, 0 y 1.

Si su indicador no contiene el procesamiento de todas las barras, probablemente no lo necesite.

Me da tanta pereza como a la mayoría de la gente rebuscar en este código, y puede que incluso más que a todos ellos juntos, y tú me aconsejas que mire el código... ¿qué necesito? Pregunté en pocas palabras. Sea cual sea la pregunta, esa es la respuesta. Y si mi consejo es inútil, significa que estoy aconsejando al tipo equivocado.

La verdad es que no quiero, aunque no soy muy buen programador, pero escribo código, por muy feo que sea. Y la esencia de la pregunta es ésta. CÓMO organizar un bucle para que el buffer muestre los niveles de opciones en el historial. Para que luego podamos trabajar con este historial, comprobar la hipótesis y guardar los datos. Tenemos que organizar un bucle competente. Creo que aquí es donde la tarea se vuelve interesante...... Pero no se me ocurre ninguna idea.... cómo hacerlo. Siento que es necesario atarse a las fechas y de alguna manera bailar desde ellas. Pero hay un problema de plazos. En general, resulta ser todo un problema .... Me gustaría escuchar una opinión sobre más detalles. ¡¡¡¡Y el hecho de que en el búfer hay que escribir el precio!!!! No soy tan tonto, créeme, para no entenderlo.....

 
Creo que deberíamos esperar a principios de semana y ver si los profesionales vuelven del campo y empiezan a asesorar.....
 
nikelodeon:

No soy realmente un programador, pero sigo escribiendo código, no importa lo torcido que esté. Y la esencia misma de la pregunta es. CÓMO organizar un bucle para que el buffer muestre los niveles de opciones en el historial. Para que luego podamos trabajar con este historial, comprobar la hipótesis y guardar los datos. Tenemos que organizar un bucle competente. Creo que aquí es donde la tarea se vuelve interesante...... Pero no se me ocurre ninguna idea.... cómo hacerlo. Siento que es necesario atarse a las fechas y de alguna manera bailar desde ellas. Pero hay un problema de plazos. En general, resulta ser todo un problema .... Me gustaría escuchar una opinión sobre más detalles. ¡¡¡¡Y el hecho de que en el búfer hay que escribir el precio!!!! No soy tan tonto, créeme, para no entenderlo.....

Así que ahí está, todo el bucle está en su sitio y organizado correctamente y los buffers se llenan.

 for(i=limit; i>=0; i--){  
      if ((Close[i+5]>Level1)&&(Open[i+5]>Level1)&&(Close[i]>Level1)&&(Open[i]>Level1)&&(Close[i+1]>Level1)&&(Open[i+1]>Level1)&&(Close[i+2]>Level1)&&(Open[i+2]>Level1)&&(Close[i+3]>Level1)&&(Open[i+3]>Level1)&&(Close[i+4]>Level1)&&(Open[i+4]>Level1)) qLevel1=Level1+EnterUP;  
      if ((Close[i+5]<Level1)&&(Open[i+5]<Level1)&&(Close[i]<Level1)&&(Open[i]<Level1)&&(Close[i+1]<Level1)&&(Open[i+1]<Level1)&&(Close[i+2]<Level1)&&(Open[i+2]<Level1)&&(Close[i+3]<Level1)&&(Open[i+3]<Level1)&&(Close[i+4]<Level1)&&(Open[i+4]<Level1)) qLevel1=Level1-EnterDw;  
      if ((Close[i+5]>Level2)&&(Open[i+5]>Level2)&&(Close[i]>Level2)&&(Open[i]>Level2)&&(Close[i+1]>Level2)&&(Open[i+1]>Level2)&&(Close[i+2]>Level2)&&(Open[i+2]>Level2)&&(Close[i+3]>Level2)&&(Open[i+3]>Level2)&&(Close[i+4]>Level2)&&(Open[i+4]>Level2)) qLevel2=Level2+EnterUP;  
      if ((Close[i+5]<Level2)&&(Open[i+5]<Level2)&&(Close[i]<Level2)&&(Open[i]<Level2)&&(Close[i+1]<Level2)&&(Open[i+1]<Level2)&&(Close[i+2]<Level2)&&(Open[i+2]<Level2)&&(Close[i+3]<Level2)&&(Open[i+3]<Level2)&&(Close[i+4]<Level2)&&(Open[i+4]<Level2)) qLevel2=Level2-EnterDw;  
      if ((Close[i+5]>Level3)&&(Open[i+5]>Level3)&&(Close[i]>Level3)&&(Open[i]>Level3)&&(Close[i+1]>Level3)&&(Open[i+1]>Level3)&&(Close[i+2]>Level3)&&(Open[i+2]>Level3)&&(Close[i+3]>Level3)&&(Open[i+3]>Level3)&&(Close[i+4]>Level3)&&(Open[i+4]>Level3)) qLevel3=Level3+EnterUP;  
      if ((Close[i+5]<Level3)&&(Open[i+5]<Level3)&&(Close[i]<Level3)&&(Open[i]<Level3)&&(Close[i+1]<Level3)&&(Open[i+1]<Level3)&&(Close[i+2]<Level3)&&(Open[i+2]<Level3)&&(Close[i+3]<Level3)&&(Open[i+3]<Level3)&&(Close[i+4]<Level3)&&(Open[i+4]<Level3)) qLevel3=Level3-EnterDw;  
      if ((Close[i+5]>Level4)&&(Open[i+5]>Level4)&&(Close[i]>Level4)&&(Open[i]>Level4)&&(Close[i+1]>Level4)&&(Open[i+1]>Level4)&&(Close[i+2]>Level4)&&(Open[i+2]>Level4)&&(Close[i+3]>Level4)&&(Open[i+3]>Level4)&&(Close[i+4]>Level4)&&(Open[i+4]>Level4)) qLevel4=Level4+EnterUP;  
      if ((Close[i+5]<Level4)&&(Open[i+5]<Level4)&&(Close[i]<Level4)&&(Open[i]<Level4)&&(Close[i+1]<Level4)&&(Open[i+1]<Level4)&&(Close[i+2]<Level4)&&(Open[i+2]<Level4)&&(Close[i+3]<Level4)&&(Open[i+3]<Level4)&&(Close[i+4]<Level4)&&(Open[i+4]<Level4)) qLevel4=Level4-EnterDw;  
      if ((Close[i+5]>Level5)&&(Open[i+5]>Level5)&&(Close[i]>Level5)&&(Open[i]>Level5)&&(Close[i+1]>Level5)&&(Open[i+1]>Level5)&&(Close[i+2]>Level5)&&(Open[i+2]>Level5)&&(Close[i+3]>Level5)&&(Open[i+3]>Level5)&&(Close[i+4]>Level5)&&(Open[i+4]>Level5)) qLevel5=Level5+EnterUP;  
      if ((Close[i+5]<Level5)&&(Open[i+5]<Level5)&&(Close[i]<Level5)&&(Open[i]<Level5)&&(Close[i+1]<Level5)&&(Open[i+1]<Level5)&&(Close[i+2]<Level5)&&(Open[i+2]<Level5)&&(Close[i+3]<Level5)&&(Open[i+3]<Level5)&&(Close[i+4]<Level5)&&(Open[i+4]<Level5)) qLevel5=Level5-EnterDw;  
      if ((Close[i+5]>Level6)&&(Open[i+5]>Level6)&&(Close[i]>Level6)&&(Open[i]>Level6)&&(Close[i+1]>Level6)&&(Open[i+1]>Level6)&&(Close[i+2]>Level6)&&(Open[i+2]>Level6)&&(Close[i+3]>Level6)&&(Open[i+3]>Level6)&&(Close[i+4]>Level6)&&(Open[i+4]>Level6)) qLevel6=Level6+EnterUP;  
      if ((Close[i+5]<Level6)&&(Open[i+5]<Level6)&&(Close[i]<Level6)&&(Open[i]<Level6)&&(Close[i+1]<Level6)&&(Open[i+1]<Level6)&&(Close[i+2]<Level6)&&(Open[i+2]<Level6)&&(Close[i+3]<Level6)&&(Open[i+3]<Level6)&&(Close[i+4]<Level6)&&(Open[i+4]<Level6)) qLevel6=Level6-EnterDw;  
      if ((Close[i+5]>Level7)&&(Open[i+5]>Level7)&&(Close[i]>Level7)&&(Open[i]>Level7)&&(Close[i+1]>Level7)&&(Open[i+1]>Level7)&&(Close[i+2]>Level7)&&(Open[i+2]>Level7)&&(Close[i+3]>Level7)&&(Open[i+3]>Level7)&&(Close[i+4]>Level7)&&(Open[i+4]>Level7)) qLevel7=Level7+EnterUP;  
      if ((Close[i+5]<Level7)&&(Open[i+5]<Level7)&&(Close[i]<Level7)&&(Open[i]<Level7)&&(Close[i+1]<Level7)&&(Open[i+1]<Level7)&&(Close[i+2]<Level7)&&(Open[i+2]<Level7)&&(Close[i+3]<Level7)&&(Open[i+3]<Level7)&&(Close[i+4]<Level7)&&(Open[i+4]<Level7)) qLevel7=Level7-EnterDw;  
      if ((Close[i+5]>Level8)&&(Open[i+5]>Level8)&&(Close[i]>Level8)&&(Open[i]>Level8)&&(Close[i+1]>Level8)&&(Open[i+1]>Level8)&&(Close[i+2]>Level8)&&(Open[i+2]>Level8)&&(Close[i+3]>Level8)&&(Open[i+3]>Level8)&&(Close[i+4]>Level8)&&(Open[i+4]>Level8)) qLevel8=Level8+EnterUP;  
      if ((Close[i+5]<Level8)&&(Open[i+5]<Level8)&&(Close[i]<Level8)&&(Open[i]<Level8)&&(Close[i+1]<Level8)&&(Open[i+1]<Level8)&&(Close[i+2]<Level8)&&(Open[i+2]<Level8)&&(Close[i+3]<Level8)&&(Open[i+3]<Level8)&&(Close[i+4]<Level8)&&(Open[i+4]<Level8)) qLevel8=Level8-EnterDw;  
      if ((Close[i+5]>Level9)&&(Open[i+5]>Level9)&&(Close[i]>Level9)&&(Open[i]>Level9)&&(Close[i+1]>Level9)&&(Open[i+1]>Level9)&&(Close[i+2]>Level9)&&(Open[i+2]>Level9)&&(Close[i+3]>Level9)&&(Open[i+3]>Level9)&&(Close[i+4]>Level9)&&(Open[i+4]>Level9)) qLevel9=Level9+EnterUP;  
      if ((Close[i+5]<Level9)&&(Open[i+5]<Level9)&&(Close[i]<Level9)&&(Open[i]<Level9)&&(Close[i+1]<Level9)&&(Open[i+1]<Level9)&&(Close[i+2]<Level9)&&(Open[i+2]<Level9)&&(Close[i+3]<Level9)&&(Open[i+3]<Level9)&&(Close[i+4]<Level9)&&(Open[i+4]<Level9)) qLevel9=Level9-EnterDw;  
      if ((Close[i+5]>Level10)&&(Open[i+5]>Level10)&&(Close[i]>Level10)&&(Open[i]>Level10)&&(Close[i+1]>Level10)&&(Open[i+1]>Level10)&&(Close[i+2]>Level10)&&(Open[i+2]>Level10)&&(Close[i+3]>Level10)&&(Open[i+3]>Level10)&&(Close[i+4]>Level10)&&(Open[i+4]>Level10)) qLevel10=Level10+EnterUP;  
      if ((Close[i+5]<Level10)&&(Open[i+5]<Level10)&&(Close[i]<Level10)&&(Open[i]<Level10)&&(Close[i+1]<Level10)&&(Open[i+1]<Level10)&&(Close[i+2]<Level10)&&(Open[i+2]<Level10)&&(Close[i+3]<Level10)&&(Open[i+3]<Level10)&&(Close[i+4]<Level10)&&(Open[i+4]<Level10)) qLevel10=Level10-EnterDw;  
      
Buffer1[i]=qLevel1;      
Buffer2[i]=qLevel2;      
Buffer3[i]=qLevel3;      
Buffer4[i]=qLevel4;      
Buffer5[i]=qLevel5;      
Buffer6[i]=qLevel6;      
Buffer7[i]=qLevel7;      
Buffer8[i]=qLevel8;      
Buffer9[i]=qLevel9;           
Buffer10[i]=qLevel10;  
//Buffer11[i]=LevelsVerticalShift;
 }

Pero debe haber algún archivo para este indicador. No se sabe qué debería contener.

 
nikelodeon:

Guarde los valores de las líneas de tendencia (segmentos horizontales) en variables de Terminal, que para cada línea pueden tomar la forma de elementos de array (si quiere leerlos en un bucle): {Línea[0][0], Línea[0][1], Línea[0][2]..}, {Línea[1][0], Línea[1][1], Línea[1][2]..}, etc. Se necesita una variable de término más "Estado 0/1" para indicar a otro indicador/asesor cuándo deben leerse los parámetros de una nueva línea, tras lo cual "Estado" debe volver a la posición inicial. Si las líneas no se leen todas a la vez, sino a medida que van llegando, se puede hacer con un solo conjunto Line[][].
 
AlexeyVik:

Así que ahí está, todo el bucle está en su sitio y organizado correctamente y los buffers se están llenando.

Pero debe haber un archivo para este indicador. No se sabe qué debería contener.

Que hace cosas tan horribles. ¿No puede el autor pensarlo bien?
 
Vinin:
¿Quién hace cosas tan espantosas? ¿No puede el autor pensar en ello?
¿Y yo? No soy el autor... Ni siquiera tomé una copa con él.
 
¡DD! No puedo abrir una ventana en el terminal. Está congelado hasta la médula. Algún indicador se queda colgado y no permite abrir la ventana. Por favor, aconséjenme cómo puedo ver qué indicadores se han establecido en este gráfico. Quiero usarlo como base para mi robot de trading.
Razón de la queja: