Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 40

 
trader781:

Corrección de

No hay otra forma de ponerlo en otro sitio, serán parámetros erróneos

Debe tener en cuenta la más reciente.

Intentaré cambiarlo.

Intenté utilizar la función estándar OrderModify() pero se bloquea si muevo muchas órdenes simultáneamente y constantemente

Gracias por la crítica.

Declararlo SIN ARGUMENTO, ¿es realmente tan difícil?

int Counts()
{код функции}

Y llamar a uno vacío también, y poner la elza de allí detrás de corchetes:

if(Counts()==0){че там нужно когда нет ордеров}
else {когда есть ордера}

Y ahora tienes esto:

if(Counts()==0){че там нужно когда else {когда есть ордера} нет ордеров}
 
Alekseu Fedotov:

Pruébalo ^_~



No está funcionando... Todavía no hay acuerdo.
 
Movlat Baghiyev:
No está funcionando... No hay intercambios, no hay intercambios...

¿Pone al menos las órdenes pendientes, no, cuáles son los errores?

...lo he arreglado.

Archivos adjuntos:
0.mq4  8 kb
 
Terminados los argumentos, el terminal se queda colgado.
Archivos adjuntos:
count.mq4  19 kb
 
trader781:
Argumentos terminados. El terminal se mantiene firme.

Así que una especie de bucle se agita sin cesar.

Escribe #property strict al principio del código y arréglalo, muchas advertencias.

Es muy posible la división por 0 en la última función.

Después sólo se ejecutará la primera línea, el bloque de llaves queda huérfano.

En general, escriba primero la lógica en el papel con palabras, de lo contrario se tambalea.

 
Vitalie Postolache:


Se supone que ejecuta un comando con un punto decimal flotante en función de los decimales del gráfico

NormalizarDoble(Pregunta+TomaDeBeneficio*Punto(),Dígitos)

¿y cómo ha visto que algunas líneas no se han ejecutado?

 
trader781:

Se supone que ejecuta un comando con un punto decimal flotante en función de los decimales del gráfico

NormalizarDoble(Pregunta+TomaDeBeneficio*Punto(),Dígitos)

¿Cómo sabe que algunas líneas no se ejecutan?

Sí. Tengo grandes problemas con la lógica. ¿Y qué quedaría del resultado si se escribe en una variable entera? ¿Qué sentido tiene este código?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

Aquí, ¿es tan difícil entender que parte del código es huérfano y se ejecutará independientemente de la condición?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код-сирота
}
 
Vitalie Postolache:

Sí. Hay un gran problema de lógica. ¿Y qué queda del resultado si se escribe en una variable entera? ¿Qué sentido tiene este código?

int lastlot,tp;
lastlot=NormalizeDouble(lastlot*Martin,3);
tp=NormalizeDouble(avg_price+TakeProfit*Point(),Digits);

¿Es tan difícil entender que parte del código es huérfano y no se ejecutará?

else//+-------------если ордера уже есть
otype=FindLastOType(); //код, исполняющийся для else
{
код, который никуда не идёт, сирота
}

Stop

si hay pedidos

El tipo de pedido es

{

entonces se ejecutan las operaciones para ese tipo de orden

}

¿No?

No puedo entender de dónde viene la división cero
 
trader781:

Stop

si hay pedidos

es el tipo de orden

{

entonces las operaciones se realizan para este tipo de orden

}

¿No?

Sí, tienes razón, lo que pasa es que el código está escrito con un estilo tal que el orador anterior lo interpretó mal.

Añadido: ladivisión por cero es una división por cero, y te dice en el registro qué línea

 
trader781:

Stop

si hay pedidos

es el tipo de orden

{

entonces las operaciones se realizan para este tipo de orden

}

¿No?

Corregido arriba. Lo que viene después de else se ejecuta dependiendo de la condición. El bloque de llaves está separado, por lo que no tiene nada que ver con el resto.

No puedo entender de dónde viene la división cero.

Ahí es donde

void ModifyOrders() //+------------модификация ввод тип
  {
   double avg_price; //+------------средняя цена
   price=0;//+------------цена
   bool z;//+------------выход в переменную
   double orderlots=0; //+------------лоты

   avg_price=NormalizeDouble(price/orderlots,Digits);//+------------то средняя ценаравна цена деленная на лот
@Vitaly Muzichenko ¿Dónde está "malinterpretado" aquí? Usa tu cerebro.
Razón de la queja: