[¡Archivo!] Cualquier pregunta de novato, para no saturar el foro. Profesionales, no lo dejéis pasar. No podría ir a ningún sitio sin ti - 2. - página 105

 
abolk:
mira aquí: https: //docs.mql4.com/ru/basis/operations/math
Lo he mirado todo. ¿Cómo resuelvo mi problema?
 
Zhunko:
Tú también puedes hacerlo.

¿no sería b igual a uno?

Lo he comprobado. Uno.

 
artmedia70:
Crear banderas, por ejemplo,

Para TP1 - bool TP1, para TP2 - bool TP2, etc.

Inicialmente sus valores son falsos.

Antes del próximo cierre, se hace una comprobación:

if (!TP1) {código para el cierre parcial de la primera parte, después del cierre exitoso escribir TP1=true}

if (!TP2) {código para cerrar parcialmente la segunda parte, después de un cierre exitoso escribir TP2=true}

... y así sucesivamente para todas las partes...

Así que las banderas señalarán que cada parte se ha cerrado ya una vez...


Gracias. Rehecho el código... TP0==false lo pongo al principio del programa .

El problema sigue siendo: La 1ª parte se cierra e inmediatamente comienza a cerrarse la 2ª :-( ..., con el error 131 para la 2ª, comprensible - tamaño de lote diferente ) Pero otro matiz es que para la 1ª parte ""Alerta ("Cerrado ",Lote," Compra de lote ",Billete);" no escribe en el registro, es decir, no llega a la verificación Ans==true. Por qué???? A continuación se muestra un trozo de código...

Gracias de antemano.

while(true) // Cierra el bucle de la horda.
{
si (TP0==false && (Cls_B0==true ||Cls_S0==true))

{
LotC=MathRound(Lot/4/Paso)*Paso;
Alert("Lote-",Lote, "Intentando cerrar-",LoteC," Lote Comprar ",Billete,. Esperando respuesta...");

RefreshRates(); // Refrescar datos
Ans=OrderClose(Ticket,LotC,Bid,5); // TicketClose ¿Comprar 1/3 lotes?
if (Ans==true) // Funcionó :)
{
TP0=true;
Alert ("Closed ",Lot," Lot Buy ",Ticket);
break; // Salir del bucle cerrado
}
if (Fun_Error(GetLastError())==1) // Gestión de errores
continue; // Reintentar
return; // Salir de start()
}

 
Sinichka:

Queridos programadores

Ayuda, por favor. El indicador dibuja valores en una divergencia latente alcista, y no dibuja una latente bajista.... Escribe, que el error 4002 - índice de matriz - fuera de rango.

Parece que he arreglado todo... Me llevó toda una tarde... Y es una pena - el código es el más simple... Pero está dibujando toros con flechas, pero no osos... ¡POR FAVOR! ¿Cuál es el error en?????????????????????


Alena,

Es necesario asignar memoria para las matrices vpadcci[], v[], hh[], ss[]. Se declaran como dinámicos, pero su tamaño no se especifica en ninguna parte. El tamaño de un array dinámico se especifica mediante la función ArrayResize().

P.D. Y por favor, utilice el botón SRC para insertar el código

 
Snaf:
Pregunta para MT5. ¿Cómo puedo saber que el Probador de Estrategias ha completado su trabajo? Aparte de lo visual :)

La función deinit() se ejecuta cuando el trabajo se completa. Por lo tanto, si llegamos allí, significa que el trabajo del experto ha terminado. Para determinar si el trabajo en el probador está en curso, utilice la función IsTesting().


Lo siento, me he dado cuenta de que esta pregunta está relacionada con MT5.

Allí es lo mismo, sólo OnDeinit() y MQL5InfoInteger(MQL5_TESTING).

 
alsu:

Alena,

Es necesario asignar memoria para las matrices vpadcci[], v[], hh[], ss[]. Se declaran como dinámicos, pero su tamaño no se especifica en ninguna parte. El tamaño de un array dinámico se define mediante la función ArrayResize().

P.D. Y por favor, utilice el botón SRC para insertar el código


Muchas gracias por la respuesta, lo investigaré.
 
eddy:

вопрос програмистам: как сделать число после запятой целым?:)

например в числе 1,128 нужно 128, в 1,12 - 12, в 1,2 - 2)

exnern double n=1,12
n-=MathFloor(n);          // 0.12 = 0.1200000..01 или 0.11999999..99
int n2=MathRound(n*1000); // 0.12 > 120 или 119
while(true)               // пока в конце 0 или 9
 if(n2%10<1)              // n2==хз*10+0
    n2/=10; else          // убираем 0
 if(n2%10==9)             // n2==хз*10+9
   {n2=MathRound(n2/10);} // округляем 9 (119 > 11.9 > 12)
 else if(n2%10>0) break;
Así es como lo resolví. Un punto negativo: no se puede obtener un número si termina en 0 o en 9. Pero no hace falta, sólo introduzco el período de cálculo (4,8,12,16,24,36,48, etc.)
 

Por favor, aconséjeme cómo registrar correctamente que el indicador VininI LRMA colour.mq4 https://www.mql5.com/ru/code/8200 ha cambiado.

Si utiliza double iCustom(string symbol, int timeframe, string name, ..., int mode, int shift). No puedo entenderlo. He escrito iCustom(NULL,0, "VininI_LRMA_color",55,0,1) y no sé qué hacer con él))

 

Los valores de las líneas están en los topes indicadores 1 (verde) y 2 (rojo). Cuando se dibuja una línea verde en el gráfico, la variable up de la barra 1 tiene el valor de esta línea, y la variable dn=EMPTY_VALUE y viceversa. EMPTY_VALUE es un valor de búfer vacío, su valor numérico es 2147483647.
A continuación, puede utilizar estos valores como desee.

double up=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,1,1); 
double dn=iCustom(NULL,0,"VininI LRMA color",period,price,Shift,2,1); 
 
Poseidon:
¿Podemos crear un EA que cierre todas las órdenes cuando se dispare el take-profit de la última orden abierta?
Soy un principiante y no sé cómo hacerlo. ¿Puedes hacerlo por mí, si no te importa?
Razón de la queja: