Pequeño problema con stoplossHola, tengo un problema con los decimales en Metatrader. Si hago un Print (Bid) me devuelve 4 decimales cuando el precio se especifica en 5 y claro al poner los sl y tp me dá error (invalid stoploss).
Si hago un DoubleToStr(Bid,5) me devuelve los 5 pero el OrderSend al tener que pasarselos como double no me lo acepta y me los asigna a cero, ni siquiera me dá ningun error. Si vuelvo a hacer la conversión a double pierdo el ultimo decimal y me quedo como al principio, con 4. Seguro que es una tontería pero es que llevo un rato a vueltas y nada. Salu2
Re: Pequeño problema con stoplossLo muevo aquí, más apropiado. Aunque no soy un programador experto, quizás si nos dices con qué broker te está pasando eso, podemos replicar el problema y buscar una solución
Saludos, FXWizard
Re: Pequeño problema con stoplossPues pone Servidor:Forex.com-Demo (R). Lo hize desde el propio metatrader donde pode Abrir una cuenta.
Salu2
Re: Pequeño problema con stoplossHay una funcion llamada NormalizeDouble , en la que tú redondeas a los dígitos que quieres. También hay una variable del propio MT4 que se llama Digits y contiene el valor de los decimales que te está pasando el broker. Por tanto , si tu número original estaba en la variable MyBid, yo haría lo siguiente:
NewBid = NormalizeDouble(MyBid, Digits); y usaría la variable NewBid para poner el StopLoss (los nombres son sólo un ejemplo). Con eso debería funcionar independientemente del broker y los dígitos que te pase. Suerte.
Re: Pequeño problema con stoplossPrint (Bid);-->1.4178
Print (Digits);-->5 double NewBid = NormalizeDouble(precio, Digits); Print ("NewBid="+NewBid);1.41783000 Le estoy mandando que me redondee a 5 digitos, porque añade los ultimos 3 ceros??? La verdad es que este lenguaje me hace unas cosas raras... Como me cargo esos 3 últimos ceros?? Gracias por la ayuda¡¡¡
Re: Pequeño problema con stoplossA ver:
¿El valor NewBid lo acepta el SendOrder? Si es así, sólo tienes un pequeño problema al mostrar el valor, pero el broker lo acepta bien y funcionará. Si aún así, quieres imprimirlo bien en pantalla, entonces usas Print("NewBid=", DoubleToStr(NewBid, Digits));
Re: Pequeño problema con stoplossHola xere62, antes de nada gracias por la ayuda. He puesto como tu dices la variable en el sendorder pero luego al ejecutar el script me pone "invalid stoploss".
Si lo saco con un print como tu dices lo saca bien, pero el ordersend no acepta DoubletoStr. Es un poco raro, será del metatrader o del broker??
Re: Pequeño problema con stoplossordersend debe aceptar normalizetodouble. Acaso el valor stoploss está demasiado cerca del precio? Muchos brokers tienen una mínima distancia entre el precio y el SL o el TP. Prueba a aumentar ese valor....
8 mensajes
• Página 1 de 1
|
|
Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados