Preguntas de los principiantes MQL5 MT5 MetaTrader 5 - página 799
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Gracias. He buscado y no he podido encontrarlo...
Entonces la siguiente pregunta, digamos que el paso es 25, entonces cómo arreglar el redondeo a un número divisible por 25, ¿tal vez hay una función?
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
https://www.mql5.com/ru/docs/standardlibrary/tradeclasses/csymbolinfo/csymbolinfonormalizeprice
Gracias, pero no estoy usando la biblioteca comercial estándar.
Sin código, sin comentarios.
Sí, eso es raro. Adjunto el archivo, pero no lo he comprobado. Es culpa mía. Ahora estoy adjuntando tanto el código como el extracto de código donde el probador da una línea con [paradas inválidas]. Quiero entender cómo funciona la estructura de MqlTradeRequest cuando se modifica la posición. En mi caso es cuando cambio de parada en el SAR. No puedo deshacerme del mensaje [Paradas no válidas] del probador. Herramienta de empalme RTS.
Sí, eso es raro. Adjunto el archivo, pero no lo he comprobado. Es culpa mía. Ahora estoy adjuntando tanto el código como el extracto de código donde el probador da una línea con [paradas inválidas]. Quiero entender cómo funciona la estructura de MqlTradeRequest cuando se modifica la posición. En mi caso es cuando cambio de parada en el SAR. No puedo deshacerme del mensaje [Paradas no válidas] del probador. Herramienta de empalme RTS.
Este no es ese fragmento de código en el que deberíamos buscar un error, a primera vista. Lo único que me molesta es la triple selección de un mismo puesto. Es redundante.
Tiene un error en las paradas incorrectas, probablemente debería empezar su búsqueda desde el lugar donde se calculan estas paradas.
Sí, eso es raro. Adjunto el archivo, pero no lo he comprobado. Es culpa mía. Ahora adjunto tanto el código como el extracto del código donde el probador da una línea con [Paradas no válidas]. Quiero entender cómo funciona la estructura de MqlTradeRequest cuando se modifica la posición. En mi caso es cuando cambio de parada en el SAR. No puedo deshacerme del mensaje [Paradas no válidas] del probador. Empalme RTS.
Para entenderlo bien es necesario especificar qué tipo de cuenta hadge o netting
Si el tipo de cuenta fuege
Ha elegido una posición para el símbolo, pero puede que no sea exactamente lo que quería ver...
Y ahora hemos elegido la posición exacta que queríamos.
A continuación, intente de nuevo elegir la posición correcta
De nuevo, la probabilidad de que hayas elegido la posición equivocada es muy alta
Para comprobar cómo se comporta la función OrderSend() en este caso, debería hacerlo, pero es mejor hacerlo como debe ser y si el error no desaparece, imprimir no sólo el código de error, sino también la entrada de la posición, el precio de la posición, el precio del nuevo stop y take. Esto es lo mínimo.
Para una comprensión completa es necesario especificar qué tipo de cuenta hadge o netting
Gracias por sus comentarios. El tipo de cuenta es de compensación. Empalme RTS. ¿Es esa la parte difícil? Una posición en un símbolo. Puedes elegir el camino que quieras, y aún así llegarás a esa posición. No son órdenes pendientes, ¿verdad? Por eso no entiendo aún más: ¿qué pasa? He probado todas las variantes.
Gracias por los comentarios. Compensación del tipo de cuenta. Instrumento de empalme RTS. ¿Es esa la parte difícil? Una posición en un símbolo. Puedes elegir el camino que quieras, y aún así llegarás a esa posición. No son órdenes pendientes, ¿verdad? Por eso no entiendo aún más: ¿qué pasa? He probado todas las variantes.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategia
Preguntas de los principiantes MQL5 MT5 MetaTrader 5
Alexey Viktorov, 2017.11.22 09:29
Para comprobar cómo se comporta la función OrderSend() en este caso, hay que hacerlo y comprobarlo, pero es mejor hacerlo como debe ser y si el error no desaparece imprimir no sólo el código de error sino también la entrada de la posición, el precio de la posición, el precio del nuevo stop y la toma. Esto es lo mínimo.
Por eso no entiendo aún más - ¿QUÉ PASA? He probado todas las opciones.
Inserte esta línea donde se produce el error
Print(ToString(request) + ToString(result));
Foro sobre trading, sistemas de trading automatizados y pruebas de estrategias de trading
Peculiaridades del lenguaje mql5, sutilezas y trucos
fxsaber, 2017.02.25 16:27
Traducción de las estructuras MqlTrade a una cadena#define TOSTRING2(A) #A + " = " + EnumToString(A) + " (" + (string)(A) + ")\n"
string ToString( const MqlTradeTransaction &Trans )
{
return(TOSTRING(Trans.deal) + TOSTRING(Trans.order) + TOSTRING(Trans.symbol) +
TOSTRING2(Trans.type) + TOSTRING2(Trans.order_type) + TOSTRING2(Trans.order_state) +
TOSTRING2(Trans.deal_type) + TOSTRING2(Trans.time_type) +
TOSTRING(Trans.time_expiration) + TOSTRING(Trans.price) + TOSTRING(Trans.price_trigger) +
TOSTRING(Trans.price_sl) + TOSTRING(Trans.price_tp) + TOSTRING(Trans.volume) +
TOSTRING(Trans.position) + TOSTRING(Trans.position_by));
}
string ToString( const MqlTradeRequest &Request )
{
return(TOSTRING2(Request.action) + TOSTRING(Request.magic) + TOSTRING(Request.order) +
TOSTRING(Request.symbol) + TOSTRING(Request.volume) + TOSTRING(Request.price) +
TOSTRING(Request.stoplimit) + TOSTRING(Request.sl) + TOSTRING(Request.tp) +
TOSTRING(Request.deviation) + TOSTRING2(Request.type) + TOSTRING2(Request.type_filling) +
TOSTRING2(Request.type_time) + TOSTRING(Request.expiration) + TOSTRING(Request.comment) +
TOSTRING(Request.position) + TOSTRING(Request.position_by));
}
string ToString( const MqlTradeResult &Result )
{
return(TOSTRING(Result.retcode) + TOSTRING(Result.deal) + TOSTRING(Result.order) +
TOSTRING(Result.volume) + TOSTRING(Result.price) + TOSTRING(Result.bid) +
TOSTRING(Result.ask) + TOSTRING(Result.comment) + TOSTRING(Result.request_id) +
TOSTRING(Result.retcode_external));
}
#undef TOSTRING
#undef TOSTRING2
Inserte esta línea donde se produce el error
Pegado. Aquí está el resultado del probador:
2017.11.22 18:22:51.127 2016.11.09 12:00:00 exchange buy 1.00 RTS Splice at 98080 sl: 94130 (98070 / 98080 / 98070)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 deal #4 buy 1.00 RTS Splice at 98080 done (based on order #4)
2017.11.22 18:22:51.127 2016.11.09 12:00:00 trato realizado [#4 comprar 1.00 RTS Splice en 98080]
2017.11.22 18:22:51.127 2016.11.09 12:00:00 orden realizada comprar 1,00 a 98080 [#4 comprar 1,00 RTS Splice a 98080]
2017.11.22 18:22:53.561 2016.11.09 14:05:00:00 failed modify #4 buy 1.00 RTS Splice sl: 94130, tp: 0 -> sl: 94316, tp: 0 [Paradas no válidas]
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.action = TRADE_ACTION_SLTP (6)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.magic = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Símbolo de solicitud = RTS Empalme
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Volumen de solicitud = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Precio de solicitud = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.stoplimit = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Solicitud.sl = 94316.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.tp = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Desviación de solicitud = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type = ORDER_TYPE_BUY (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_filling = ORDER_FILLING_FOK (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.type_time = ORDER_TIME_GTC (0)
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.expiration = 1970.01.01 00:00:00
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Solicitud.comentario =
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Petición.posición = 4
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Request.position_by = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode = 10016
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.deal = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.order = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Resultado.volumen = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Resultado.precio = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Resultado.oferta = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Resultado.ask = 0.0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.comment = Paradas no válidas
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.request_id = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Result.retcode_external = 0
2017.11.22 18:22:53.576 2016.11.09 14:05:00 Alerta: Error de modificación de posición por código de error TP y SL: 4756
Mételo. Aquí está el resultado del probador:
¿Modo servidor y probador?