Fractal Break Out-Stuck - página 2

 

Actualmente estoy recibiendo el error de los corchetes finales "}".


Pero he vuelto a comprobar las funciones y todas se procesan correctamente.


Probé de otra manera y seguí obteniendo este mismo error.

 
ZacharyRC:

Actualmente estoy recibiendo el error de los corchetes finales "}".


Pero he vuelto a comprobar las funciones y todas se procesan correctamente.


Probé otra forma y seguí obteniendo este mismo error.


He encontrado el error, ¡no importa!
 
ZacharyRC:

Hola deVries:


Me estoy encontrando con problemas en mi código final, con el intento de poner un stop loss modificado para alcanzar el punto de equilibrio después de tantos pips.


¿Ves algún error evidente?

Usted necesita leer esto de nuevo:¿Qué son los valores de retorno de la función ? ¿Cómo los utilizo ? ¿No quieres saber qué pasa con tu OrderModify()? ¿Qué pasa si tu OrderSelect() falla?

 
if(OrdersTotal()>1)
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if(OrderType()==(OP_BUY)&&(Move.BE))
{

Esta no es la forma correcta de obtener las operaciones de tu EA

no puedes estar seguro de que la posición 0 es de tu EA tienes que gestionar

utilizar siempre un bucle para recorrer todas las operaciones abiertas y luego seleccionar de esa manera tienes

tu Symbol() con el que está operando el EA y el MAGICNUMBER que diste con tu EA

.

mi manera es como

 

 for(i = OrdersTotal()-1; i >= 0 ; i--)         //always counting down checking trades
    {
     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)        break;     // if false we abort the loop
     if(OrderMagicNumber()!=MagicNumber || OrderSymbol()!=Symbol()) continue;   //if selected trade not symbol or magicnumber next one
 
RaptorUK:

Necesitas leer esto de nuevo:¿Qué son los valores de retorno de las funciones? ¿Cómo los utilizo ? ¿No quieres saber qué pasa con tu OrderModify()? ¿Qué pasa si tu OrderSelect() falla?


Definitivamente voy a releer esta noche, no tengo una comprensión completa todavía.
deVries:

Esta no es la forma correcta de obtener las operaciones de su EA

no puedes estar seguro de que la posición 0 es de tu EA tienes que gestionar

utilizar siempre un bucle para recorrer todas las operaciones abiertas y luego seleccionar de esa manera tienes

el símbolo() con el que está operando el EA y el número mágico que le diste a tu EA

.

mi manera es como

Yo estaba usando un bucle for() la última vez, y tenía un par de errores y se dio por vencido. Lo intentaré de nuevo y releeré el texto.


Gracias señores.

 
RaptorUK:

Necesitas leer esto de nuevo:¿Qué son los valores de retorno de las funciones? ¿Cómo los utilizo ? ¿No quieres saber qué pasa con tu OrderModify()? ¿Qué pasa si tu OrderSelect() falla?


¡Me siento un poco lento hoy! Después de dejar que esto se hunda, me doy cuenta de que el lenguaje MQL4 puede ser el mejor compañero para encontrar errores, no el tablero de mensajes.



¡TY RaptorUK!

 
ZacharyRC:

¡Me siento un poco lento hoy! Después de dejar que esto se hunda, me doy cuenta de que el lenguaje MQL4 puede ser el mejor compañero para encontrar errores, no el tablero de mensajes.

Exactamente, 100% correcto. :-)
 
deVries:

Esta no es la forma correcta de obtener las operaciones de tu EA

no puedes estar seguro de que la posición 0 es de tu EA tienes que gestionar

utilizar siempre un bucle para recorrer todas las operaciones abiertas y luego seleccionar de esa manera tienes

tu Symbol() con el que está operando el EA y el MAGICNUMBER que diste con tu EA

.

mi manera es como

Ahhhh ya veo, esto me permite hacer un ciclo a través de mis operaciones y decir cuál es cuál y coincidir con los Números Mágicos. El bucle es la mejor manera de lejos.

 
ZacharyRC:

Ahhhh ya veo, esto me permite hacer un ciclo a través de mis operaciones y decir cuál es cuál y coincidir con los Números Mágicos. El bucle es la mejor manera de lejos.

Cuanto más se va a utilizar el más trucos que se aprende a hacer con él....
 

Todavía tengo dificultades. He llevado a cabo errores para averiguar por qué.


El diario ha reportado:

1) Error 4051=Parámetro incorrecto

2) Ticket inválido para modificar el pedido

//----------------------------------------------//
//-----------------EXITING ORDERS---------------//


for(int i=OrdersTotal()-1; i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)  break;


if(OrderMagicNumber()!=MagicNumber || OrderSymbol() !=Symbol()) continue;

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) Print(GetLastError(),i);
if(OrderType()==OP_BUY)
{

 if(Move.BE && StopLoss > 0) 
 {
   if(Bid - OrderOpenPrice() >= Point * StopLoss)
     {
       if(OrderStopLoss() < OrderOpenPrice() + Point * MoveStopTo) 
        {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() + Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
 }
  }
   }
    }
 else{
 
    if(Move.BE && StopLoss > 0) {
               if(OrderOpenPrice() - Ask >= Point * StopLoss)
                {
                  if(OrderStopLoss() > OrderOpenPrice() - Point * MoveStopTo)
                   {
                  OrderModify(OrderTicket(),OrderOpenPrice(), OrderOpenPrice() - Point * MoveStopTo, OrderTakeProfit(), 0, Red);
                  Print("Cant Modify Order"+GetLastError(),i);
}
 }
  }
   }
    }

Razón de la queja: