Respuesta

CustomFunction para cerrar órdenes con el beneficio actual

3 respuestas

Mike H.

Abonado, bbp_participant, comunidad, 76 respuestas.

Visitar el perfil

hace 10 años #111629

Terminé poniendo dicho código en un simple indicador personalizado utilizando buffers para ser reconocido por el Asistente de EA. Veré el lunes si el EA que se está creando cerrará las órdenes según sea necesario utilizando el búfer del indicador personalizado. En realidad, el principal problema que tengo es ser capaz de entender dónde poner y cómo utilizar una FUNCIÓN dentro del Asistente EA. ¿Puede decirme que ponga la FUNCIÓN en el customfunction.mq4? No soy un mago escribiendo código, que es por lo que compré el EA Wizard. ¿Podría alguien explicarme dónde y cómo introduzco una FUNCIÓN en el software EA Wizard para que éste pueda utilizarla?

 

Supongo que lo he resuelto. Ver archivo adjunto...

doble beneficio()

{

   OrderSelect(NULL,0);

   double beneficio = OrderProfit() + OrderSwap();

   rentabilidad (beneficio);

}

 

Revisión realizada desde el primer envío. (sólo queda un error)

Necesito una condición de función personalizada que simplemente obtenga el beneficio actual de una orden abierta. Por lo tanto, si el valor de la función es mayor que cero, entonces el EA cerrará las órdenes abiertas los viernes. Estoy tratando de averiguar cómo agregar la siguiente función en C:\SQ_EAWizard\code\CustomFunctions.mq4. ¿Creo que la siguiente función funcionará?
doble beneficio();

 

REVISIÓN:

doble beneficio();
{
   OrderSelect();
   double profit = OrderProfit(NULL) + OrderSwap(NULL);
   rentabilidad (beneficio);
}

 

1 error:

1:8;'profit' - no se ha definido dll para la función importada

 

VIEJO:

{
   OrderSelect();
   beneficio = OrderProfit() + OrderSwap();
   rentabilidad (beneficio);
}
Estoy intentando añadir esa función a CustomFunctions.mq4:
double ejemploFuncion(double valor) {
   return(2 * valor);
}
¿Cómo hago para que la variable profit no sea global?
Al compilar, ¿por qué aparece un error que indica que no se puede importar un archivo .dll?

0

Mark Fric

Administrador, sq-ultimate, 2 respuestas.

Visitar el perfil

hace 10 años #122753

Te contesté en otro hilo, también puse un ejemplo de función de beneficio.

 

Esta es la función por defecto utilizada por el Asistente de EA para determinar el beneficio abierto (sin swaps ni comisiones), puede copiarla utilizando un nombre diferente

y modificarlo para que incluya también los swaps y las comisiones.

 

double sqGetOpenPLInMoney(int orderMagicNumber) {
   doble pl = 0;
 
   for (int cc = TotalPedidos() - 1; cc >= 0; cc-) {
      if (!OrderSelect(cc, SELECT_BY_POS) ) continue;
      if(OrderType() != OP_BUY && OrderType() != OP_SELL) continuar;
      if(OrderSymbol() != Symbol()) continuar;
      if(orderMagicNumber != 0 && OrderMagicNumber() != orderMagicNumber) continue;
 
      pl += OrderProfit();
   }
 
   return(pl);
}

 

No estoy seguro de por qué hay llamada de error dll, parece que MT4 no puede encontrar la función. Puede comprobar su EA si su función está ahí?

 

Mark

Mark
Arquitecto de StrategyQuant

0

Mike H.

Abonado, bbp_participant, comunidad, 76 respuestas.

Visitar el perfil

hace 10 años #122762

Sí, Mark,

       Recuerdo haber mirado esa condición. Pasé de usarla porque no incluía el swap. No me preocupa la comisión porque pago por spread....

Tal vez pueda modificar el código antes de compilar... En realidad, he estado modificando el código para Orden Abierta Este Minuto & Orden Cerrada Este Minuto a 1320 segundos en lugar de 60 segundos. 60 segundos no es suficiente para ver si la dirección del par de divisas puede cambiar...

0

Mike H.

Abonado, bbp_participant, comunidad, 76 respuestas.

Visitar el perfil

hace 10 años #122770

Mi indicador personalizado en el que se utilizó la función OpenProfit dentro ha funcionado muy bien. Incluso calculó el Swap también.

0

Viendo 3 respuestas - de la 1 a la 3 (de un total de 3)