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

 
Fox_RM:

No hay prácticamente ninguna diferencia, sólo un proceso ligeramente diferente para obtener los puntos de control A y B. Ya lo he probado con arrays.

Entonces, entre A y B también tendría que hacer un bucle a través de las barras. No veo otra forma, por eso pregunto.

Tal vez alguien pueda darme una pista. ¿Quizás hay algo que no funciona en la lógica de la escritura del código?


1. evitar guardar líneas en su código (en una escalera).

2. En lugar de utilizar declaraciones condicionales cortas repetidas, utilice la construcción if(...) ... Si no...

3. Saque la llamada de la función de formación de objetos gráficos del bucle interno (freno principal).

 
Chiripaha:

este:



... o mejor aún, uno de estos:

if (AOBuffer3[i]<=0){
   ExtMapBuffer1[i] =  nSum; Vol_Arr[i] =  Volume[i]*Point*coaf;
}
else{
   ExtMapBuffer1[i] = -nSum; Vol_Arr[i] = -Volume[i]*Point*coaf;
}
 
tara:

... o mejor aún, uno de esos:

Sí, estoy de acuerdo.

Recojo todas mis sugerencias en el comentario "antiguo" (si es que hay algo). - Puede que no sea del todo "correcto", pero no estará disperso.

Creo que el problema es la acumulación de textos - Reflejado en el comentario principal (no sé cómo enlazarlo - lo siento).

 
tara:

3. Saque la llamada a la función de formación de objetos gráficos del bucle interno (freno principal).

Ahora, yo también me pregunto: ¿Cómo se hace eso? (implemento)

Hm.... ¡Exactamente! - Es apilable. Y los valores intermedios no son importantes.

      if (shift_up > shift_dn)
       {
        for (int dn_br = shift_dn; dn_br <= shift_up; dn_br++)            //-------------- Перебор значений внутри основного цикла
          {
           Vol_AO_up += Volume[dn_br]; 
          }   
         ObjectDelete ("Awesome_super_volumes"+up_koaf);        // Заодно и удалить старый текст, чтобы не копился
         SetText("Awesome_super_volumes"+up_koaf, DoubleToStr(Vol_AO_up,0), AO_time_dn, AO_dn, Blue);
       }

Entonces no habrá un montón de ellos...

 

Tengo esta llamada en mi función init:

GetMarketInfo();

Esta función aquí:

//+-------------------------------------------------------------------------------------+
//| Сбор рыночных данных                                                                |
//+-------------------------------------------------------------------------------------+
void GetMarketInfo()
{
   gd_spread = MarketInfo(Symbol(),MODE_SPREAD) * Point;
   gd_stopLevel = MarketInfo(Symbol(),MODE_STOPLEVEL)  * Point;
   gd_tickSize = MarketInfo(Symbol(),MODE_TICKSIZE);
}

Las variables gd_spread, gd_stopLevel, gd_tickSize las he declarado globalmente hasta ahora. Ahora he decidido escribir algunas bibliotecas que utilizan estas variables. Resulta que he trasladado estas variables al archivo de cabecera. Entonces, para evitar errores en la compilación de la biblioteca, debería transferir la funciónGetMarketInfo() a la biblioteca también, ¿no?

 
hoz:

Tengo esta llamada en mi función init:

Esta función aquí:

Las variables gd_spread, gd_stopLevel, gd_tickSize las he declarado globalmente hasta ahora. Ahora he decidido escribir algunas bibliotecas que utilizan estas variables. Resulta que he trasladado estas variables al archivo de cabecera. Entonces, para evitar errores en la compilación de la biblioteca, debería transferir la funciónGetMarketInfo() a la biblioteca también, ¿no?

Definitivamente no hay que llamar a esta función en el init - la propagación y el nivel de estufa pueden variar en el tiempo
 
artmedia70:
Ciertamente, no en el init - la extensión y la nivelación de la parada pueden cambiar con el tiempo


Creo que el inite debería ser descartado, para evitar problemas en el comercio real. Si la conexión se corta por DC, y luego aparece, la reinicialización no se produce y provoca errores y problemas en el comercio real, ¿no?

¿Qué debemos hacer entonces? ¿Llamar constantemente a alguna función en cada función que devuelva estas variables de mercado?

 
hoz:


Creo que hay que abandonar el init, para que no haya fallos en el comercio real. Al fin y al cabo, si la conexión se corta por la CC, y luego aparece, la reinicialización no se producirá, y esto ya provoca errores y fallos cuando se trabaja en el mundo real, ¿no?

¿Qué hacer entonces? ¿Llamar constantemente a alguna función en cada función, que devolverá estas variables de mercado?

Este tipo de información debe dividirse en cambiable e inmutable.

Los datos inmutables pueden escribirse en cualquier lugar, porque incluso si hay una interrupción de la conexión, los datos seguirán siendo relevantes. - Mejor, por supuesto, no en el inicio, para no cargar al búho innecesariamente.

Pero las variables pueden ser a través de la llamada a la función (si se utiliza la biblioteca) o simplemente actualizarlas al comienzo de la función de inicio.

 

Eso también es cierto. El cerebro siempre está pensando en la productividad, en un momento en que la mente no sabe muy bien cómo hacerlo. Tengo un temperamento... un gemelo :(

Cierto, hay que separar una cosa de la otra a la vez.

Sin embargo, también. Si las variables del entorno de mercadogd_stopLevel,gd_tickSize se utilizan en diferentes funciones (funciones de modificación, envío de órdenes, etc.), entonces no es muy razonable llamar a la función que obtiene los valores especificados constantemente en la función de biblioteca. ¿Hay alguna forma de unificar esto? Al fin y al cabo, a diferencia del spread, el stop loss y el tamaño del tick serán siempre los mismos.

 
hoz:

Eso también es cierto. El cerebro siempre está pensando en el rendimiento, en un momento en el que la mente no sabe muy bien cómo hacerlo. Tengo un temperamento... un gemelo :(

Cierto, hay que separar una cosa de la otra a la vez.

Sin embargo, también. Si las variables del entorno de mercadogd_stopLevel,gd_tickSize se utilizan en diferentes funciones (funciones de modificación, envío de órdenes, etc.), entonces no es muy razonable llamar a la función que obtiene los valores especificados constantemente en la función de biblioteca. ¿Hay alguna forma de unificar esto? Al fin y al cabo, a diferencia del spread, el stop loss y el tamaño del tick serán siempre los mismos.

Artem ya ha dicho que el stoplevel también puede flotar: ¡no es un valor constante! - Y el tamaño del tick es, sí, una constante.

Para unificar - de nuevo, dividirlo en 2 funciones - MarketInfoConst y MarketInfoImage (variable). Coloque uno en Inite, el otro al principio de Start(s). Y será posible combinarlo en una biblioteca.

La cuestión de la productividad (optimización del búho) es diferente. Personalmente, no meto todas estas funciones en el búho. Sólo tomo los parámetros a medida que los necesito. Sí, tengo que escribir más código, pero owl maneja menos cosas "superfluas" de la biblioteca, porque no todo lo de MarketInfo puede resultar necesario en owl.
Razón de la queja: