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

 

¿Pueden decirme cómo establecer la selección de órdenes por símbolo para OrdersTotal()?

   int total=OrdersTotal();

   if(total==0&&Bid>=OrderBuy&&Bid<=OrderBuy+10*Point)
    {
     if(OrderSend(Symbol(),OP_BUY,Lot,Ask,5,0,0,NULL,0,0,clrNONE)){::Alert(" Order Open ");}
    }

Ahora mismo, si hay una orden abierta en un par, no se abre en otros.

 
MakarFX:

¿Pueden decirme cómo establecer la selección de órdenes por símbolo para OrdersTotal()?

Ahora, si hay una orden abierta en un par, no se abre en otros.

Mira en kodobase, hay un ejemplo en cada EA

 
Vladimir Pastushak:

Mira en kodobase, hay un ejemplo en cada asesor

No soy programador(

Es un poco complicado para mí.

 
MakarFX:

No soy programador(

Es un poco complicado para mí.

no es complicado.

para escribir un EA básico, aquí está toda la funcionalidadhttps://www.mql5.com/ru/forum/131859

Para sus propósitos OrdersTotal() es el número total de órdenes abiertas (numeradas desde 0) en la terminal, entonces necesita seleccionarlas una por una (ir a través del bucle) usando OrderSelect() y manipular las órdenes necesarias

for (i=OrdersTotal()-1; i>=0; i--)
{
  if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) 
  {
   // проверим символ ордера, проверим магикномер ордера....
  }
}
Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
MakarFX:

¿Pueden decirme cómo establecer la selección de órdenes por símbolo para OrdersTotal()?

Ahora mismo, si hay una orden abierta en un par, no se abre en otros.

Tengo que comprobar periódicamente (contarme a mí mismo) mis pedidos según sea necesario.
Tengo en cada EA un bucle (un método enorme) que se llama antes de las acciones importantes:

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

comprobar si hay una orden en el símbolo se resalta

 
Maxim Kuznetsov:

periódicamente, según sea necesario, para comprobar (autocomprobar) sus pedidos.
Tengo un bucle (un método enorme) en cada EA, que se llama antes de las acciones importantes:

for(int pos=OrdersTotal()-1; pos>=0;pos--) {

        if (!OrderSelect(pos,SELECT_BY_POS,MODE_TRADES)) {

                selectFailed=true; /* не удалось "выбрать" ордер - статистика может быть неверной */
                continue;

        }

        if (OrderCloseTime()!=0) { /* ордер закрыт но ещё не удалён из списка*/ continue; }

        if (OrderMagicNumber()==0) { /* ордер выставлен юзером */ } continue;
        else if (OrderMagicNumber()!=_Magic) { /* ордер выставлен другим советником */ continue; }

        if (OrderSymbol()!=_Symbol) { /* ордер с правильным Magic но на другом символе */ continue; }

       /// обработка рабочих ордеров, с правильным Magic на символе советника (то есть наш ордер)

       /// проверяются несработки, считается кол-во, статистика, позиции и прочее 

}

compruebe el orden por el símbolo está resaltado

Por otro lado, entiendo que los tickers de las órdenes históricas pueden perderse. La pregunta es si los tickers de las órdenes(SELECT_BY_TICKET) en MT4 y los tickers de las operaciones y posiciones en MT5 pueden cambiar.

Y también, se puede cambiar el orden después del OrderSelect en el ticket. Por ejemplo, al día siguiente. El EA no está desactivado.

Si la orden pendiente se ha convertido en una orden de mercado, puede verla por su tipo. Si la orden de mercado se ha cerrado, entonces miramos la hora de cierre de la orden, no igual a cero OrderCloseTime()!=0

Si la orden pendiente se ha cerrado por su tiempo de vida, entonces cómo la seguimos por el ticket de la orden.

Y una pregunta, el tiempo de vida es también en órdenes de mercado(MT4), ¿funciona?

 
MakarFX:

¿Pueden decirme cómo establecer la selección de órdenes por símbolo para OrdersTotal()?

Ahora, si hay una orden abierta en un par, no se abre en otros.

La cuestión ya está resuelta. Gracias a todos.

 
¡Hola Estimados Señores! No entiendo qué pasa, ¿por qué Alert: time3-time1 = datetime incorrecto?
datetime time1 = iTime(NULL,0,1);
datetime time3 = iTime(NULL,0,3);
datetime delta3 = (time3-time1);  Alert("time3-time1 = ",delta3); 


 
novichok2018:
¡Hola Estimados Señores! No entiendo lo que está mal, ¿por qué escribe Alert: time3-time1 = wrong datetime?


porque el número es negativo :-)

por esta lógica el tiempo1 es __siempre __más que el tiempo3

 
Maxim Kuznetsov:

porque el número es negativo :-)

por la lógica dada el tiempo1 es __siempre __más que el tiempo3

¡Gracias! A veces el cerebro se desconecta.

Razón de la queja: