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

 

Buenas tardes, necesito ayuda con el código, soy novato.

El problema es el siguiente - el trailing funciona sólo en la dirección de compra, y en la dirección de venta no funciona y el código da error"Error de modificación de la orden. Código de error=4051".

Aquí está la parte del código responsable del trailing:

void Trailing(int tral)
{ 
  int Mag=OrderMagicNumber();  

  OrderSelect(Mag,MODE_TRADES);

//+------------------------------------------------------------------+

//|                      tral buy                                    |

//+------------------------------------------------------------------+

  if (OrderType()==OP_BUY)

  if(Bid-OrderOpenPrice()>Point*tral)
    {
    if(OrderStopLoss()<Bid-Point*tral) 
       { 
       bool ress= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*tral,Digits),0,0,Blue); 
       if(!ress) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if(OrderStopLoss()>Ask+Point*tral) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          

 
Ivan Rozhkov:

Buenas tardes, necesito ayuda con el código, soy novato, no creo que sea apropiado insertar todo el código aquí.

El problema es que el trailing sólo funciona en la dirección de compra y no funciona en la dirección de venta y el código da error"Error en lamodificación de la orden. Código de error=4051".

Quien pueda ayudarme a resolver esto, por favor envíe un mensaje a

Este hilo es para la discusión, no para los couloirs.
 
Artyom Trishkin:
El tema es de discusión, no de couloirs.

Por favor, perdóneme ^_^

He pegado parte del código, por favor, indíqueme dónde está el error

 
Ivan Rozhkov:

Por favor, perdóneme ^_^

Inserto parte del código, por favor dígame donde está el error

Mira en este hilo - he publicado una plantilla de arrastre. En algún lugar del medio.
 
Ivan Rozhkov:

Buenas tardes, necesito ayuda con el código, soy novato.

El problema es el siguiente: el trailing funciona sólo en la dirección de compra, y en la dirección de venta no funciona y el código da error"Error de modificación de la orden. Código de error=4051".

Aquí está la parte del código responsable del trailing:

//+------------------------------------------------------------------+

//|                      tral sell                                   |

//+------------------------------------------------------------------+   
  if (OrderType()==OP_SELL)
  if(OrderOpenPrice()-Ask>Point*tral)
    {
    if((OrderStopLoss()==0.0) || (OrderStopLoss()>Ask+Point*tral)) 
       { 
       bool res= OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Ask+Point*tral,Digits),0,0,Red); 
       if(!res) 
          Print("Ошибка модификации ордера. Код ошибки=",GetLastError()); 
       else 
          Print("Цена Stop Loss ордера успешно модифицирована.");
       }
     }
}          
y no me gusta todo el diseño, aquí hay un simple trailing magik, casi igual que el tuyo:

bool trailingpos(int magic_,int trail_p)
  {
   bool res=true; double sl,slnew,tpips=trail_p*Point; int i,k=OrdersTotal();
   for(i=0;i<k;i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==_Symbol && OrderMagicNumber()==magic_)
           {
            switch(OrderType())
              {
               case OP_BUY:
                  slnew=NormalizeDouble(Ask-tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()<slnew)
                     if((sl<slnew) || (sl==0.0))
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
               case OP_SELL:
                  slnew=NormalizeDouble(Bid+tpips,Digits);
                  sl=OrderStopLoss();
                  if(OrderOpenPrice()>slnew)
                     if((sl>slnew) || sl==0.0)
                       {
                        if(!OrderModify(OrderTicket(),OrderOpenPrice(),slnew,OrderTakeProfit(),OrderExpiration(),clrNONE))
                          {res=false; Print(__FUNCTION__,"OrderModify завершилась с ошибкой № ",GetLastError());}
                       }
                  break;
              }
           }
        }
     }
   return(res);
  }
 
¿Cómo escribir correctamente un iCustom para ZigZag, de manera que se emitan los valores de los extremos?
 
02031986dima:
¿cómo escribir correctamente un iCustom para ZigZag, para que produzca los valores de los extremos?

No es necesario que escribas nada, sólo tienes que venir y tomar

Только "Полезные функции от KimIV".
Только "Полезные функции от KimIV".
  • 2011.02.18
  • www.mql5.com
Все функции взяты из этой ветки - http://forum.mql4...
 
Igor Makanu:

No me gusta toda la construcción, aquí hay un simple trailing magik, casi igual al tuyo:

Muchas gracias por tu ayuda, añadiendo tu código al final no funciona por alguna razón, debo estar haciendo algo mal((

if((OrderStopLoss()==0.0)

Lo añadí y funcionó, pero sigue recibiendo spam con errores #1 y #4051

#1-No hay error, pero el resultado es desconocido.

#4051-Valor no válidodel parámetro de la función

 

Hola, hay un array de datos de tipo datatime,

¿Cómo puedo convertirlo en un archivo legible?

Código:

int h=FileOpen("test",FILE_WRITE|FILE_CSV|FILE_UNICODE);
      FileWriteArray(h,timeHistory,0,WHOLE_ARRAY);
      FileClose(h);

Sólo escribe si existe la bandera FILE_BIN, pero escribe de forma ilegible.

Si la bandera FILE_BIN no está presente, el archivo permanece vacío.

 
Karlinvain:

Hola, hay un array de datos de tipo datatime,

¿Cómo puedo convertirlo en un archivo legible?

Código:

Sólo escribe si existe la bandera FILE_BIN, pero escribe de forma ilegible.

Si la bandera FILE_BIN no está presente, el archivo permanece vacío.

FileWriteArray

Nota .

Una matriz de cadenas sólo puede escribirse en un archivo de tipo TXT. En este caso, las cadenas se terminan automáticamente con "\r\n". Dependiendo del tipo de archivo ANSI o UNICODE, las cadenas se convierten a la codificación ansi, o no.