[¡AVISO CERRADO!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen. No puedo ir a ningún sitio sin ti. - página 715

 
dimon74:
Así es como funciona para mí. Una posición se cierra con el TP, mientras que para establecer una nueva orden pendiente necesitamos el valor TP+n*Punto. Y aquí tenemos una discrepancia: OrderTakeProfit () me da cuatro dígitos (lo veo en Alert) y mi empresa de corretaje quiere cinco. He probado muchas cosas, pero parece que hay más por venir. Si tienes alguna idea, por favor, dame algunas ideas. Gracias de antemano.
Alert() e Print() producen 4 decimales por defecto, mientras que en realidad se utilizan 8. Para una salida correcta a la "consola", utilice DoubleToStr().
 
dimon74:
Así es como funciona para mí. La posición se cierra por TP, mientras que una nueva orden pendiente necesita el valor de TP+n*Punto para establecerse. Aquí tenemos una discrepancia: OrderTakeProfit () me da cuatro dígitos (lo veo en Alert) y mi empresa de corretaje quiere cinco. He probado muchas cosas, pero parece que hay más por venir. Si tienes alguna idea, por favor, dame algunas ideas. Gracias de antemano.

string DoubleToStr( valor doble, dígitos int)

Convierte un valor numérico en una cadena de texto que contiene la representación de caracteres del número en el formato de precisión especificado.

Esto debería ayudar a la preverificación.

Es que tanto Alert() como Print() dan valores de salida a 4 dígitos. Así que su problema es diferente.

 

No puedo entender por qué en esta forma

for(int a=0;a<8;a++)
// тут что нить делаем
for(int a=0;a<8;a++)
// еще чо нить делаем

Dice que la variable ya ha sido definida. ¿Creo que vuelve a ser 0 en la repetición? Y están en diferentes trozos de código, el primero en if, el segundo en else...

 
Abzasc:

No puedo entender por qué en esta forma

Dice que la variable ya ha sido definida. ¿Creo que vuelve a ser 0 en la repetición? Y están en diferentes trozos de código, el primero en if, el segundo en else...


int a;
for(a=0;a<8;a++)
// тут что нить делаем
for(a=0;a<8;a++)
// еще чо нить делаем
Entonces, ¿por qué definir dos veces la misma variable?
 
Vinin:

¿Por qué definir dos veces la misma variable?

Para releer

 for(int a=0;a<8;a++)
 aJPY[a]=iCustom(NULL,PERIOD_M15,"Indexes",a,0);

Es decir, si la condición es una, lee, si es otra... Mierda. Lo tengo. Pero es un caso específico, no necesito este fragmento en otro.

No sé cómo anular la variable para que pueda ser utilizada en otro fragmento de código. Si la condición es una, llamamos a un indicador y si es otra - a otro... ...porque no hay suficientes variables...

 
Abzasc:

Para releer

Es decir, si la condición es una, lee, si es otra... Mierda. Lo tengo. Pero es un caso específico, no necesito este fragmento en otro.

No sé cómo anular la variable para que pueda ser utilizada en otro fragmento de código. Si la condición es una, llamamos a un indicador y si es otra - a otro... ...porque no hay suficientes variables...


No, tenemos que resolverlo de alguna manera. Parece que no hay suficiente código. Sólo me refería a una cosa. Declarar una variable y usarla (con preinicialización) son cosas diferentes. Una misma variable puede llevar valores funcionales muy diferentes, lo principal es no confundir qué y dónde.
 

Permítanme que intente explicarlo. Hay un indicador, sin topes. Toma valores de otro indicador en 4 matrices. Estoy tratando de adjuntar

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit;
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
Si hay una nueva barra, se recalculan todas las matrices. Si no hay una nueva barra, sólo la 0ª. Pero recalculamos todo igual, es decir, llamamos tanto a if como a else.
 
Abzasc:

Permítanme que intente explicarlo. Hay un indicador, sin topes. Toma valores de otro indicador en 4 matrices. Estoy tratando de adjuntarlo.

Si hay una nueva barra, recalculamos todas las matrices. Si no hay ninguna barra, recalculamos sólo la 0ª. Pero recalculamos todo igual, es decir, llamamos tanto a if como a else.


Prefiero un enfoque diferente

   int    counted_bars=IndicatorCounted();
   // считать только последний вызов
   int limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2)
      limit = //.......................
   for(int i=limit;i>=0;i--)

Aunque, es cuestión de gustos. Pero al menos puedo explicar cada línea

 
Vinin:


Prefiero un enfoque diferente

Pero es una cuestión de gustos. Pero al menos puedo explicar cada línea

Digámoslo así. Entonces, si límite = 0, si escribimos array 0, 1, 2, si no - array 0. Y un error variable.

¿O debemos escribir una matriz de 1, 2, si no - matriz 0?

De cualquier manera, - no puedo usar la variable a 2 veces, ese es el problema. Sin embargo, sólo lo uso 2 veces, en if y else. Ni siquiera está en las variables compartidas en la parte superior del código.

 
Abzasc:

Que sea así. Entonces, si límite = 0, si escribimos array 0, 1, 2, si no - array 0. Y un error variable.

¿O si escribimos array 1, 2, si no - array 0?

De cualquier manera, - no puedo usar la variable a 2 veces, ese es el problema. Sin embargo, sólo lo uso 2 veces, en if y else. Ni siquiera está en las variables compartidas en la parte superior del código.


Dame el código completo. Puedes enviármelo en persona. Trataré de ayudar.
Razón de la queja: