asesor experto - preguntas varias - página 34

 
Marco vd Heijden:

No eso es para verificar si es una cuenta demo o una cuenta real, el concurso se utiliza raramente.
Lote máximo puede ser muy fácil.

Gracias por la pronta respuesta.

Sólo tengo que aplicar el tamaño de lote máximo sólo cuenta demo.
( pero por supuesto en realidad la cuenta real - esto es sólo para la prueba - Quiero probar si la cuenta Demo, si el tamaño del lote mejor, entonces el tamaño del lote máximo no abrirá órdenes de venta y compra - pero si la cuenta real o la cuenta de concurso - por lo que este tamaño del lote máximo no se aplicará tanto de ellos ( en vivo o concurso ) )

¿Podría utilizar el operador de cambio?

Muchas gracias.
( Lo intentaré más tarde. )

 
Sí, puede utilizar el operador de conmutación.
 
Marco vd Heijden:
//---
// calculate lotsize here
//---

// check if lotsize is not too high

if(lotsize>lotsize_max)
{
  lotsize=losize_max;
}

Quiero preguntar - usted quiere decir - si " lotsize > lotsize_max " el tamaño del lote debe ser " lotsize = lotsize_max " para la cuenta Demo? ¿Lo he entendido bien, por favor?

Muchas gracias.
( Estoy trabajando en ello )

 
Max Enrik:

Quiero preguntar - usted quiere decir - si " lotsize > lotsize_max " el tamaño del lote debe ser " lotsize = lotsize_max " para la cuenta Demo? ¿Lo he entendido bien, por favor?

Muchas gracias.
( Estoy trabajando en ello )

Intenta
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;
 
honest_knave:
Prueba con
if(IsDemo() && lotsize>lotsize_max) lotsize=lotsize_max;

Oh, qué bien. Muchas gracias.

----
funcion deberia preguntarme - Si o No- Creo que esto podria ser mejor por ahora. ( Solo necesito experiencia para esta funcion que como funciona para mi en la cuenta demo ( por supuesto en vivo ) - Probare esta funcion el lunes - si puedo terminar esta parte del codigo )
( ahora no sé lo suficiente sobre esta función - espero que pueda hacer hasta mañana )

Cualquier comentario bueno sería la mejor ayuda para mí.
Gracias de antemano.

 

Sí, por supuesto, por todos los medios ir con él sin el lotsmax y si luego más tarde quiere afinar su estrategia o quiere limitar el riesgo puede utilizarlo por lo que no es una necesidad como tal actualmente.

Puedes simplemente eliminarlo solo quería mostrarte algunas líneas de mi mecanismo de seguridad.


Si desea una confirmación, puede utilizar un

MessageBox()

https://docs.mql4.com/common/messagebox


int result=MessageBox(" This is a Messagbox, Do you want to proceed?","Warning",MB_YESNO);

if(result==IDYES)
{
  // Yes Pressed
   Print("OK");
}

if(result==IDNO)
{
  // No Pressed
}

Aquí están las principales banderas que se establecen en la función messagebox después del mensaje:

Constante

Valor

Descripción

MB_OK

0x00000000

La ventana de mensajes contiene sólo un botón: OK. Por defecto

MB_OKCANCEL

0x00000001

La ventana de mensajes contiene dos botones: OK y Cancelar

MB_ABORTRETRYIGNORE

0x00000002

La ventana de mensaje contiene tres botones: Abortar, Reintentar e Ignorar

MB_YESNOCANCEL

0x00000003

La ventana de mensaje contiene tres botones: Sí, No y Cancelar

MB_YESNO

0x00000004

La ventana de mensajes contiene dos botones: Sí y No

MB_RETRYCANCEL

0x00000005

La ventana de mensaje contiene dos botones: Reintentar y Cancelar

MB_CANCELTRYCONTINUE

0x00000006

La ventana de mensaje contiene tres botones: Cancelar, Intentar de nuevo, Continuar


Y aquí los valores de retorno:

Constante

Valor

Descripción

IDOK

1

Se ha pulsado el botón "OK".

IDCANCEL

2

Se ha pulsado el botón "Cancelar".

IDABORT

3

Se ha pulsado el botón "Abortar".

IDRETRY

4

Se ha pulsado el botón "Reintentar".

IDIGNORE

5

Se ha pulsado el botón "Ignorar".

IDYES

6

Se ha pulsado el botón "Sí".

IDNO

7

Se ha pulsado el botón "No".

IDTRYAGAIN

10

Se ha pulsado el botón "Intentar de nuevo".

IDCONTINUE

11

Se ha pulsado el botón "Continuar".


Messagebox() no funciona en el probador.

MessageBox - Common Functions - MQL4 Reference
MessageBox - Common Functions - MQL4 Reference
  • docs.mql4.com
MessageBox - Common Functions - MQL4 Reference
 
Marco vd Heijden:

Sí, por supuesto, por todos los medios ir con él sin el lotsmax y si luego más tarde quiere afinar su estrategia o desea limitar el riesgo puede utilizarlo por lo que no es una necesidad como tal actualmente.
Puedes simplemente eliminarlo solo quería mostrarte algunas líneas de mi mecanismo de seguridad.

Muchas gracias más por su de gran ayuda.

Así que, acabo de intentar como el método de abajo, ¿estoy haciendo bien, por favor?
( Necesitaba preguntar antes de llevarlas a mi archivo principal .mq4 - estoy trabajando en ello )

Gracias de antemano.

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }

  if(result_message==IDNO)
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}
 

Sólo un consejo de estilo, que hará que tu código sea (muy, muy ligeramente) más eficiente... pero bueno, ¡todo suma!

Tienes una caja de mensajes con 2 botones. Si no es IDYES, debe ser IDNO (o la función no se completó con éxito).

Así que no hay necesidad de probar result_message dos veces.

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }
   else
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}

Si prefieres verlo por escrito, utiliza una sentencia 'else if':

if(sparam==SellButton)
{
  result_message=MessageBox("Do you want to proceed?","Warning",MB_YESNO);

  if(result_message==IDYES)
    {
     ordersell(); // Send Order function here
     Print("Clicked YES"," Sell Order Applied");
    }

  else if(result_message==IDNO)
    {
     Print("Clicked NO"," Sell Order Canceled");
    }
  ObjectSetInteger(0,sparam,OBJPROP_STATE,false);
}
 
honest_knave:

Sólo un consejo de estilo, que hará que tu código sea (muy, muy ligeramente) más eficiente... pero bueno, ¡todo suma!
Tienes una caja de mensajes con 2 botones. Si no es IDYES, debe ser IDNO (o la función no se completó con éxito).
Así que no hay necesidad de probar result_message dos veces.

Muchas gracias por todo.
Ahora, puedo ponerlos en el EA principal.
( también necesito experiencia para MessageBox() )

 
Max Enrik:

Muchas gracias por todo.
Ahora, puedo ponerlos en el EA principal.
( también necesito experiencia para MessageBox() )

No había nada de malo en que se escribiera de la otra manera, es sólo una cosa de preferencia personal. Me alegro de que lo hayas solucionado.