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

 
STARIJ:
tienes un resumen

Gracias. Lo he revisado y lo he arreglado. Ahora funciona.

 
Artyom Trishkin:
El orden se selecciona por billete, y luego, tras un kilómetro de código, se intenta modificar. Pero puede que ya esté cerrado en ese momento.

Si el pedido estuviera cerrado, entonces OrdersTotal()==0;; respectivamente, el OrderModify() no ocurriría en absoluto.

 
ijonhson:

Si el pedido estuviera cerrado, entonces OrdersTotal()==0; respectivamente, OrderModify() no tendría lugar

Primero, compruebas la cantidad, luego compruebas un montón de códigos en los que la posición podría haberse cerrado (pero ya estás manejando una condición de cantidad mayor que cero), y luego seleccionas y modificas la cerrada.
 

Las órdenes pueden cerrarse 0,01 lotes a la vez si la orden es un lote de 0,59 por ejemplo. Surge una pregunta. ¿Es posible combinar dos pedidos en uno? Por ejemplo, una orden con el lote 0,01 y usted quiere abrir otra orden con el lote 0,02. ¿Pueden combinarse con lotes de 0,03 para evitar el amontonamiento de pedidos, y si es así, cómo?

 
instalar la red MT5
 
Taras Slobodyanik:
instalar la red MT5

¿No hay tal cosa en MT4?

 

Hola de nuevo a todos.


Con el debido respeto a los rectángulos prístinos.


No entiendo - por qué modifica alegremente las órdenes de venta, pero ignora la modificación de las órdenes de compra, incluso cuando se utilizan panderetas de incienso y otras herramientas de optimización irracional.


si (ticket>0)

{

//establecer un Stop Loss y un Take Profit para una orden de compra//

if(OrderSelect (ticket, SELECT_BY_TICKET, MODE_TRADES))

{

doble sl,tp;

si (tipo==OP_BUY)

{

sl=Precio de Apertura de la Orden () - (StopLoss*_Punto);

sl=NormalizarDoble (sl,_Digitos);

tp=Precio Abierto de la Orden () + (TakeProfit*_Punto);

tp=NormalizarDoble (tp,_Dígitos);

}

si (tipo==OP_SELL)

{

sl=Precio de Apertura de la Orden () + (StopLoss*_Punto);

sl=NormalizarDoble (sl,_Digitos);

tp=Precio Abierto de la Orden () - (TakeProfit*_Punto);

tp=NormalizarDoble (tp,_Dígitos);

}

bool mod = false;

int count=0;

while (!mod)

{

mod=OrderModify (ticket, OrderOpenPrice (), sl, tp, 0, clrYellow);

cuenta++;

si (cuenta>=100)

{

mod=true;

romper;

 

¡¡¡¡¡Lo he descubierto!!!!!

 

Por favor, ayúdame, apenas estoy aprendiendo, si se llamó a ZZ desde un búfer y a ZZ desde dos búferes, ¿cómo debo escribirlo correctamente?

// - 2 - ======================== Поиск одного экстремума ЗЗ ============================ 
    double ZZCur = 0;
    while(ZZCur == 0 && i < Bars)
      {
       if(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i)!=0.0) ZZCur =(iCustom(Symbol(), 0, "FastZZ", Depth, 0, i);
       else  if(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i)!=0.0) ZZCur =(iCustom(Symbol(), 0, "FastZZ", Depth, 1, i);
       i++;
      }
// - 2 - ============================ Окончание блока ===================================

// - 3 - ======================== Анализ найденного экстремума ========================== 
    if (ZZCur == 0)
      return(False);           // Если ни один из экстремумов не определен, то это ошибка

No lo estoy escribiendo correctamente, ¿cómo se debe escribir? Gracias

 

No capturó la pieza en la parte superior, tiene más sentido así. Por favor, dígame cuál es el error.

Razón de la queja: