[¡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 751

 
ToLik_SRGV:

El fallo es evidente, abre posiciones en cada tick, ya que la orden perdedora en el historial no va a ninguna parte, por lo que la encuentra en cada tick y rellena los valores de las variables de control con los mismos valores, y entonces se dispara el bloque de apertura de operaciones.


Cómo hacer que no se busque de nuevo, o mejor dicho, que no se busque algo que ya ha sido elaborado

 
FoxUA:

¿Cómo hago para que no lo busque de nuevo, o mejor dicho, que no busque algo que ya ha sido trabajado?

Saca este bloque:

for(int cnt=OrdersHistoryTotal();cnt>0;cnt--)
     {
 OrderSelect(cnt, SELECT_BY_POS, MODE_HISTORY);
{if(OrderMagicNumber()== mag &&
OrderSymbol()==Symbol()) 
{ if (OrderType() == OP_BUY )  {b=1; if (OrderClosePrice()==OrderTakeProfit()) bt=1; 
if (OrderClosePrice()==OrderStopLoss()) bs=1; bl=OrderLots()*100; break;}
if (OrderType() == OP_SELL)  {s=1; if (OrderClosePrice()==OrderTakeProfit()) st=1; 
if (OrderClosePrice()==OrderStopLoss()) ss=1; sl=OrderLots()*100; break;}
            }
            
            
         }
      }

Y reemplazarla por ésta:

   for(int cnt=OrdersHistoryTotal();cnt>0;cnt--){
      static int num_ticket;
      if(!OrderSelect(cnt-1, SELECT_BY_POS, MODE_HISTORY))break;
      if(OrderMagicNumber()== mag && OrderSymbol()==Symbol()){      
      if(num_ticket != OrderTicket())num_ticket = OrderTicket(); else break;
         if(OrderType() == OP_BUY){
            b=1;
            if(OrderClosePrice()==OrderTakeProfit())bt=1;
            if(OrderClosePrice()==OrderStopLoss())bs=1;
            bl=OrderLots()*100;
            num_ticket = OrderTicket();
            break;
         }
         if(OrderType() == OP_SELL){
            s=1;
            if(OrderClosePrice()==OrderTakeProfit())st=1; 
            if(OrderClosePrice()==OrderStopLoss())ss=1;
            sl=OrderLots()*100;
            num_ticket = OrderTicket();
            break;
         }
      }
   }

Se diferencia en que, entre otras cosas, recuerda el número de ticket de la última operación perdedora, respectivamente, lo comprueba, y no permite la apertura por la misma señal.

 
ToLik_SRGV:

Tira esta unidad:


Muchas gracias por la prueba, parece que funciona.

 
Abzasc:

Algo así, supongo.

SZY El botón de inserción de código "SRC" es incómodo de usar, no es fácil de leer.


Muchas gracias, escribí int para UseHourTrade2 en lugar de boole ))
 

Buenas tardes, amigos.

Me gustaría consultar con usted sobre este tema:

Actualmente estoy trabajando en un indicador, que transfiere a la ventana de las lecturas del primer par de divisas (ZigZag), formado en el segundo par de divisas.

Pero, me he encontrado con un problema:

por ejemplo, si hay un gran "hueco" entre comillas: un par cotiza a 1,4237 y el otro a 0,8345, entonces estos indicadores aparecen "dispersos" en la pantalla, lo que no es muy conveniente visualmente...

¿Cómo realizaría la conversión de las "coordenadas" del indicador del segundo par, teniendo en cuenta las cotizaciones del primer par (cómo hacer el precio "relativo")?

Muchas gracias de antemano por los consejos, la recomendación.

 
Morzh09:

Buenas tardes, amigos.

Me gustaría consultar con usted sobre este tema:

Actualmente estoy trabajando en un indicador, que transfiere a la ventana de las lecturas del primer par de divisas (ZigZag), formado en el segundo par de divisas.

Pero, me he encontrado con un problema:

por ejemplo, si hay un gran "hueco" entre comillas: un par cotiza a 1,4237 y el otro a 0,8345, entonces estos indicadores aparecen "dispersos" en la pantalla, lo que no es muy conveniente visualmente...

¿Cómo realizaría la conversión de las "coordenadas" del indicador del segundo par, teniendo en cuenta las cotizaciones del primer par (cómo hacer el precio "relativo")?

Muchas gracias de antemano por los consejos, la recomendación.

Mira el enlace. El escalado en sí se hace allí de forma original.

https://www.mql5.com/ru/code/7933

 

¡Hola!

¿Puede decirme cómo simplificar esto?

si (Saldo > 600)

{

Lot_mod = 0,1;

}

si (Saldo > 700)

{

Lot_mod = 0,11;

}

si (Saldo > 800)

{

Lot_mod = 0,12;

}

si (Saldo > 900)

{

Lot_mod = 0,13;

}

Y así sucesivamente.... Porque es demasiado extenso en esta forma.

Gracias.

 
Lim1:

¡Hola!

¿Puede decirme cómo se puede simplificar esto?

Y así sucesivamente.... Es demasiado extenso en esta forma.

Gracias.





Una ecuación de la forma y=a*x+b ayudará
 
Lim1:

¡Hola!

¿Podría decirme cómo simplificar esto?





determinar la fórmula para calcular el lote y ya está, de lo contrario tendrá que preocuparse por
 

Lim1, inténtalo así:

int BalanceExcessIn100s = MathFloor( ( Balance - 600 ) / 100.01 );
Lot_mod = BalanceExcessIn100s * 0.01 + 0.1;
Razón de la queja: