OrderClose no funciona - página 3

 

Gracias thrdel, miraré su codificación. Eres realmente muy amable. Gracias de nuevo

 
thrdel:


Si te refieres a que no es la mejor manera de cerrar una orden estoy de acuerdo pero si el tipo no quiere usar OrderSelect (o no sabe cómo) y no deja ninguna orden abierta en el mercado funciona.

Tratamos de ayudarnos unos a otros aquí y tu respuesta no ayudó ni un poco, no le mostraste cómo usar la función Order Select y su EA no está funcionando mejor ahora debido a tu comentario.

La próxima vez que quieras ayudar, hazlo de la manera correcta, pon el código correcto para que otros puedan aprender algo.

 
Gracias a todos los que han respondido a mi pregunta. Mi intención es entrar en el comercio cuando bar2 cumplir con ciertas condiciones. Estoy probando en GBPJPY y abrir un comercio a la vez como yo soy muy nuevo en MQL4. Con una sola operación soy capaz de utilizar el ticket en Orderclose(). Todavía no estoy familiarizado con OrderSelect. Así que la operación se cerrará si la barra 3 cumple cierta condición. Me gustaría hacer una pregunta, ¿hay una manera de almacenar la ejecución del programa dentro de un archivo para fines de depuración? Ya que he encontrado que cuando el programa se ejecuta, no sé qué parte de la ejecución salió mal.
 
chuale:
Gracias a todos los que han respondido a mi pregunta. Mi intención es entrar en el comercio cuando bar2 cumplir con ciertas condiciones. Estoy probando en GBPJPY y abrir un comercio a la vez como yo soy muy nuevo en MQL4. Con una sola operación soy capaz de utilizar el ticket en Orderclose(). Todavía no estoy familiarizado con OrderSelect. Así que la operación se cerrará si la barra 3 cumple cierta condición. Me gustaría hacer una pregunta, ¿hay una manera de almacenar la ejecución del programa dentro de un archivo para fines de depuración? Ya que he encontrado que cuando el programa se ejecuta, no sé qué parte de la ejecución salió mal.

De nada Chuale, yo también aprendí mucho de otros en este foro así que no hay problema. Realmente no necesitas guardar la ejecución del programa en un archivo, hay algunas formas de vigilar los valores de tus variables y cualquier error que pueda surgir. Yo uso principalmente la función Comment() y la función Print (). Puedo enviarte ejemplos si lo necesitas. Como mencioné antes GBPJPY no me dio resultados positivos pero USDJPY sí. Solo hice una prueba retrospectiva de un mes (Ene21/2014 - Feb25/2015) y con mi configuración el retorno fue un poco más de 400 USD. Probaré otros pares en cuanto tenga un poco de tiempo y os lo haré saber. También si necesitas ayuda con el uso de Print() o Comment() para ver los valores en pantalla en tiempo real, házmelo saber. La imagen adjunta anteriormente era el gráfico de rendimiento de tu EA en un periodo de un mes. No se ve tan mal hasta ahora.
 

Estimado thedel,

Gracias

Sí, estoy usando Print(). Necesito saber cómo utilizar OrderSelect() si hay más operaciones abiertas. Para una sola operación, si utilizo SELECT_BY_POS, ¿cuál será el valor del índice (OrderSelect (int index, in select, int pool=MODE_TRADES)? ¿Es 1?

¿o qué valor?

 
chuale:
Gracias a todos los que han respondido a mi pregunta. Mi intención es entrar en la operación cuando la barra 2 cumpla ciertas condiciones. Estoy probando en GBPJPY y abro una operación a la vez ya que soy muy nuevo en MQL4. Con una sola operación soy capaz de utilizar el ticket en Orderclose(). Todavía no estoy familiarizado con OrderSelect. Así que la operación se cerrará si la barra 3 cumple cierta condición. Me gustaría hacer una pregunta, ¿hay una manera de almacenar la ejecución del programa dentro de un archivo para fines de depuración? Ya que he encontrado que cuando el programa se ejecuta, no sé qué parte de la ejecución salió mal.


Aquí hay un ejemplo de cómo utilizar la función Order Select :

En este ejemplo, la función CountTrades comprueba todas las órdenes abiertas y pendientes, descarta las que no tienen un símbolo y un número mágico coincidentes y cuenta sólo las que necesitamos.

En este ejemplo seleccionará desde la más reciente hasta la primera.

Si necesitáis más ayuda con ello hacédmelo saber.

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
/*
On every tick program checks what the value of myTrades is
by calling (executing) the CountTrades() function and asign the value
returned to myTrades..
*/
int myTrades = CountTrades();
/*
Comment() function will display the words in quotes and the value of 
myTrades variable.
*/
Comment("You have "+myTrades+" open trades.");
   
  }
//+------------------------------------------------------------------+
int CountTrades()
{
int count=0;// we start counting from zero
int trade;  // define a variable that will hold the total number of trades that are open
// Get the number of trades from OrdersTotal() and asign that value to trade variable.
for(trade=OrdersTotal()-1;trade>=0;trade--)
   {
   OrderSelect(trade,SELECT_BY_POS,MODE_TRADES); // Select orders by position (OP_BUY and OP_SELL) - orders can be selected by position or by ticket
                                                 // select from Open or pending orders = MODE_TRADES or select from History = MODE_HISTORY
   if(OrderSymbol()!=Symbol() || OrderMagicNumber() != MagicNumber)// if the order has a different symbol or magic number, skip to next order
   continue;
   if(OrderSymbol()==Symbol() && OrderMagicNumber() == MagicNumber)// if symbol is right and magic number is right, that is my order ,then
   if(OrderType()==OP_SELL                                         // if it's an open sell do this.....
   || OrderType()==OP_BUY)                                         // if it's an open buy do this......      
   count++;                                                        // in this example increase the counter since I'm counting all my orders
   }
return(count);                                                     // When finished counting, return the result
}
 
thrdel:


Si te refieres a que no es la mejor forma de cerrar una orden estoy de acuerdo pero si el tipo no quiere usar OrderSelect (o no sabe cómo) y no deja ninguna orden abierta en el mercado funciona.

Tratamos de ayudarnos unos a otros aquí y tu respuesta no ayudó ni un poco, no le mostraste cómo usar la función Order Select y su EA no está funcionando mejor ahora debido a tu comentario.

La próxima vez que quieras ayudar, hazlo de la manera correcta, pon el código correcto para que otros puedan realmente aprender algo .


si intentas ayudar entonces explícalo correctamente

Usted dijo

thrdel:

Primero cuentas las órdenes con OrdersTotal().

total=OrdersTotal();


mal ejemplo...... que diste

si el tipo no quiere usar OrderSelect() entonces tiene que dejar de programar EA's

un gran disparate lo que dices aquí, https://www.mql5.com/en/forum/149958/page2#915413

he comentado tu código de ejemplo y te he dicho lo que tenías que hacer

hay un montón de ejemplos que he dado cómo hacer ...

busca en google si quieres encontrarlos

 
thrdel:


Hay un par de cosas que hiciste mal. Asumo que quiere que este EA trabaje en pares JPY en el marco de tiempo M1. ¿Quiere colocar órdenes sólo en la nueva barra y cerrar órdenes sólo en la nueva barra o quiere entrar en la nueva barra y salir si se cumplen las condiciones? Esto es lo que pienso:

Primero cuenta los pedidos con OrdersTotal().

Luego calcula tus variables

Si hay órdenes en el mercado comprueba si tienen que ser cerradas

Si no hay órdenes en el mercado, comprueba si se cumplen las condiciones de entrada.

Hazme saber si tienes alguna duda.

 
al compilar lo siguiente: dice Función de tiempo no definida. Por favor, aconséjeme.
if(Time[0]==previousTime) return(0);         //EA will not go past this point unless it is a new bar
   previousTime=Time[0];                        // If it was a new bar , it's old now but continue to the end
 
chuale:
al compilar lo siguiente: dice Función de tiempo no definida. Por favor, aconséjeme.


ok lo tengo arreglado ya que escribí mal el paréntesis de Time, se supone que debe ser [] en lugar de (). Gracias
Razón de la queja: