[ARCHIVO] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 3. - página 320

 
snail09:
O bien cuenta todos los paréntesis de la izquierda, luego todos los paréntesis de la derecha, y luego compara las cantidades, o comenta las funciones una por una hasta encontrar el error. El gusto y el color de cada uno (diseño del código fuente) es diferente.
hay 4 paréntesis de apertura y 4 paréntesis de cierre, todo bien. Pero no está muy claro cómo pueden ayudarme los comentarios
 
Pinki:
Hay 4 paréntesis de apertura y 4 paréntesis de cierre, todo bien. Pero como los comentarios pueden ayudarme no entiendo muy bien

Puedes comentar primero las funciones personalizadas, y luego comentar los bucles, las construcciones lógicas... Te aseguro que encontrarás una coincidencia con tu soporte por corte secuencial. O tal vez también se olvidó de poner ";" en alguna parte...

¿No confundes SI con PARA?

Lo siento, no me di cuenta de inmediato.

   // Перебор в цикле всех рыночных и отложенных ордеров
   for(int i=0;i<=OrdersTotal();i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
         {
         // Если инструмент и магик соответствуют - значит ордер наш
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
            {
            // Подсчитываем только рыночные ордера
            if(_Type==OP_BUY || _Type==OP_SELL) 
               {
               op++;
               }
            }
         }
     }

Compárelo con este fragmento. Es sólo una variante.

 
001:

¿Quién puede explicar por qué la 6ª orden no se abrió en la vela y qué hacer para que se abra?

Registro.

2011.11.04 19:42:21 1999.11.04 20:00 RLB_FLAT GBPUSD,H4: open #7 sell stop 0.10 GBPUSD at 1.62233 sl: 1.64443 tp: 1.57089 ok
2011.11.04 19:42:21 1999.11.04 20:00 Comprobador: #6 borrado por caducidad
2011.11.04 19:42:10 1999.11.04 12:00 RLB_FLAT GBPUSD,H4: open #6 sell stop 0.10 GBPUSD at 1.63373 sl: 1.64570 tp: 1.62652 ok
2011.11.04 19:42:09 1999.11.04 08:00 Comprobador: #5 borrado por caducidad
2011.11.04 19:42:06 1999.11.04 00:00 RLB_FLAT GBPUSD,H4: open #5 sell stop 0.10 GBPUSD at 1.63622 sl: 1.64702 tp: 1.63411 ok
2011.11.04 19:42:00 1999.11.02 04:00 Comprobador: #4 borrado por caducidad
2011.11.04 19:41:53 1999.11.01 20:00 RLB_FLAT GBPUSD,H4: open #4 sell stop 0.10 GBPUSD at 1.63365 sl: 1.64917 tp: 1.61097 ok

La cuarta, quinta y sexta órdenes pendientes han sido eliminadas por caducidad.

Aumentar su vida útil o poner 0 (cero), ver. Modificación del pedido()

 
мmersi:

Los aplazamientos cuarto, quinto y sexto se han suprimido debido a su fecha de vencimiento.

Aumentar su fecha de caducidad o ponerla a 0 (cero) ver OrderModify(). Modificación del pedido()


Lo que me confunde es que antes de que expirara la 6ª orden (expiró a las 20:00) hubo una vela bajista a las 16:00. Esto se puede ver en la imagen.
 
mersi:

1. La función encuentra la orden con el ticker más alto en el historial, lo que significa la última orden cerrada (a menos que, por supuesto, haya un caso excepcional, para el cual es preferible su opción con el tiempo de cierre máximo).

2. Según las condiciones , la primera orden se abre con el TP/SL especificado y sólo la segunda orden puede abrirse con el nuevo TP/SL, lo que significa que la función puede devolver cero sólo si la primera operación fue cero, pero no si no hay órdenes cerradas en el historial.

Una última cosa. En tu variante el uso de j y otro SELECT en la función es redundante.

es suficiente:

if (t<OrderCloseTime()) {
         t=OrderCloseTime();
      Profit=OrderProfit()+OrderSwap()+OrderCommission();
  }
   return(Profit);

1. ¿Puede confiar al 100% en su corredor (o en el del cliente) sobre la numeración de las entradas? El tiempo sigue siendo un valor más estable - aquí sólo puede cambiar la hora manualmente ajustando el historial. En mi opinión, es mejor utilizar el tiempo.

2. Si el cliente necesita cambiar la lógica, entonces su función puede tener que ser reescrita.

3. ¿Sugiere usted

Profit=OrderProfit()+OrderSwap()+OrderCommission();

para utilizarlo dentro de un bucle? ¿Para qué? Sólo se puede utilizar una vez para el último pedido ya encontrado.

А... Su cliente no probará ni optimizará. Ya veo...

 

GlobalVariableSetOnCondition() - ¿puede explicar en lenguaje sencillo lo que hace esta función? La descripción en la ayuda es muy confusa, no puedo entender algunos puntos?

Establece un nuevo valor de la variable global existente si el valor actual de la variable es igual al valor del tercer parámetro check_value. Si la variable no existe, la función generará un error ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) y devolverá FALSE. La función devolverá TRUE si se ejecuta con éxito, en caso contrario devolverá FALSE. Para obtener la información del error, se debe llamar a la función GetLastError(). Si el valor actual de la variable global es diferente de check_value, la función devolverá FALSE.
Esta función permite el acceso atómico a la variable global, por lo que puede utilizarse para crear un semáforo para la comunicación concurrente entre varios Asesores Expertos en el mismo terminal de cliente.

 
fore-x:

GlobalVariableSetOnCondition() - ¿podría explicar en lenguaje sencillo lo que hace esta función? La descripción en la ayuda es muy confusa, no puedo entender algunos puntos?

Establece un nuevo valor a una variable global existente, si el valor actual de la variable es igual al tercer parámetro check_value. Si la variable no existe, la función generará un error ERR_GLOBAL_VARIABLE_NOT_FOUND (4058) y devolverá FALSE. La función devolverá TRUE si se ejecuta con éxito, en caso contrario devolverá FALSE. Para obtener la información del error, se debe llamar a la función GetLastError(). Si el valor actual de la variable global es diferente de check_value, la función devolverá FALSE.
Esta función permite el acceso atómico a la variable global, por lo que puede utilizarse para crear un semáforo para la comunicación concurrente entre varios Asesores Expertos en el mismo terminal de cliente.

GlobalVariableSetOnCondition("Имя переменной", устанавливаемое значение, проверяемое значение);

Suponga que tiene una variable global GL_Var.

Actualmente tiene un valor de 1,0.

Hay que comprobar si esta variable tiene un valor de 1,0 y, si es así, ponerla a 2,0

Será así:

GlobalVariableSetOnCondition(GL_Var, 2.0, 1.0);

Para manejar los valores de retorno de esta función, puede llamarla mediante if

if (!GlobalVariableSetOnCondition(GL_Var, 2.0, 1.0)) {
   // здесь код обработки, если функция вернула false
   // false она вернёт в случае, если переменная GL_Var не была равна 1.0 во время вызова этой функции
   // или если вообще ещё нет глобальной переменной GL_Var
   }

Antes de llamar a la función, puede comprobar si la variable global GL_Var existe, para evitar el error ERR_GLOBAL_VARIABLE_NOT_FOUND

 

Por favor, ayude a resolver un pequeño problema geométrico. Hay una línea con coordenadas p1 y p2 (mostradas en rojo en la imagen). Necesito encontrar la coordenada de p3, que es el 38,2% de la coordenada de p2. He hecho lo siguiente:

if(p2>p1) p3=p2-(p2-p1)*0,382; verdadero para la parte superior de la figura

if(p1>p2) p3= p2+(p1-p2)*0,382; verdadero para la parte inferior de la figura

¿Hay alguna manera de escribir esto en una ecuación sin "si"?

 

Pues escríbelo así.

p3=p2-(p2-p1)*0,382

 
Roger:

Bueno, escríbelo así.

p3=p2-(p2-p1)*0,382


Y en efecto. Gracias por su ayuda.