Monday, November 21, 2016

Error Promedio De Órdenes De Envío 131


Hola, en numerosas ocasiones y en situaciones diferentes, sigo recibiendo Error 131 - Volumen de comercio no válido. Backtesting está funcionando bien y luego en algún momento en vez de abrir un nuevo pedido el OrderSend sigue fallando y dando este error. Metatrader es 191. Aquí están los resultados de las funciones relevantes y los valores del volumen de comercio solicitado: Volumen (lotes a abrir): 127.1 Total de lotes abiertos: 119.6 AccountBalance 1357252.5272 AccountEquity 1271049.049 AccountFreeMargin 1149674.7672 AccountMargin 207577.76 AccountLeverage 100 Así que, hay suficiente gratis Margen, todo me parece (a mí) bien. Hay algo que me falta o es esto un error enorme real Casi completamente incapacita capacidades backtesting para mi experto. Esperando que haya una explicación / solución. Alguien de Metaquotes por favor comente sobre esto Im que tiene el mismo problema pero en la compilación 195. Todo estaba trabajando muy bien hasta que cambié las fechas de la ventana de backtesting. Después de que comencé a obtener el error 131 después de que mi experto intentó cambiar el tamaño del lote (Tal vez el volumen se establece en un número constante.). Intenté cambiar las fechas de nuevo a los ajustes originales, pero todavía consigo el error. Durante todo este proceso no cambié nada más que las fechas en el backtester. No cambié mi experto en absoluto ni recompilé nada. No he cambiado otros ajustes además de las fechas. Espero que esto ayude. Ver ejemplo en el artículo championship. mql4 / 2006 / news / 8 después de quot // --- check min, max y stepquot line Gracias por el enlace. Entiendo por qué estoy recibiendo el error ahora. Mis lotes son de tamaño con una precisión de dos dígitos, que no encaja en los parámetros establecidos en esa página. Mi siguiente pregunta, sin embargo, es cómo se establece la precisión del lote en particular con respecto al backtester lot tamaños con una precisión de dos dígitos estaban bien, pero ahora theyre no. Por qué? Cómo se establece este número? La precisión del tamaño del lote es diferente para los diferentes corredores. No sé que el interbankfx ofrece tamaños de microlot y los lotes que comercializo siempre se establecen en una precisión de dos dígitos y nunca tengo problemas. No deberíamos ser capaces de jugar con este número en el backtester Hay una manera de cambiarlo ahora Gracias por su ayuda hasta ahora Ver ejemplo en el artículo championship. mql4 / 2006 / news / 8 después de quot // --- check min, Max y stepquot line Hi Slawa, ha sido un tiempo desde que publiqué la pregunta. Si echa un vistazo a mi primer post, verá que la EA está tratando de abrir 127,1 lotes, por lo tanto, es un volumen de precisión de un solo dígito, que debería funcionar muy bien. Hay un límite de volumen máximo en el backtesting (no para el campeonato, pero en general) OrderSend int OrderSend (símbolo de cadena // símbolo int cmd // operación doble volumen // volumen doble precio // price int slippage. / / Slap de doble parada // stop loss double takeprofit // toma profit string commentNULL // comentario magic0. // número mágico datetime expiration0. // pendiente de caducidad del pedido color arrowcolorclrNONE // color) en Symbol for trading. En Tipo de operación. Puede ser cualquiera de la enumeración de Operaciones Comerciales. En Número de lotes. En Desplazamiento máximo del precio para órdenes de compra o venta. En el nivel Stop loss. En Tome el nivel de beneficio. En el texto del comentario de la orden. La última parte del comentario puede ser cambiada por el servidor. En el número mágico de la orden. Puede utilizarse como identificador definido por el usuario. En el tiempo de caducidad del pedido (sólo para órdenes pendientes). En color de la flecha de apertura en la carta. Si el parámetro falta o si la flecha de apertura del valor CLRNONE no está dibujada en el gráfico. Devuelve el número del ticket asignado al pedido por el servidor comercial o -1 si falla. Para obtener información de error adicional, uno tiene que llamar a la función GetLastError (). En la apertura de una orden de mercado (OPSELL u OPBUY), sólo los últimos precios de la oferta (para la venta) o Ask (para la compra) se puede utilizar como precio abierto. Si se realiza la operación con una seguridad diferente a la actual, se debe utilizar la función MarketInfo () con el parámetro MODEBID o MODEASK para obtener las cotizaciones más recientes de esta seguridad. No se puede aplicar el precio calculado o no normalizado. Si no ha habido el precio abierto solicitado en el hilo de precios o no se ha normalizado según la cantidad de dígitos después del punto decimal, se generará el error 129 (ERRINVALIDPRICE). Si el precio abierto solicitado está completamente desactualizado, el error 138 (ERRREQUOTE) se generará independientemente en el parámetro slippage. Si el precio solicitado está desfasado, pero presente en el hilo, el pedido se abrirá al precio actual y sólo si el precio actual se encuentra dentro del rango de desviación de precios. Los niveles de StopLoss y TakeProfit no pueden estar demasiado cerca del mercado. La distancia mínima de los niveles de parada en puntos puede obtenerse utilizando la función MarketInfo () con el parámetro MODESTOPLEVEL. En el caso de niveles de parada erróneos o no normalizados, se genera el error 130 (ERRINVALIDSTOPS). Un valor cero de MODESTOPLEVEL significa ausencia de restricciones sobre la distancia mínima para Stop Loss / Take Profit o el hecho de que un servidor comercial utiliza mecanismos externos para el control de nivel dinámico, que no pueden traducirse en el terminal cliente. En el segundo caso, GetLastError () puede devolver el error 130, porque MODESTOPLEVEL es realmente quotfloatingquot aquí. En la colocación de una orden pendiente, el precio abierto no puede estar demasiado cerca del mercado. La distancia mínima del precio pendiente del mercado actual en puntos se puede obtener utilizando la función MarketInfo () con el parámetro MODESTOPLEVEL. En caso de precio abierto falso de una orden pendiente, se generará el error 130 (ERRINVALIDSTOPS). La aplicación del tiempo de caducidad del pedido pendiente puede desactivarse en algunos servidores comerciales. En este caso, cuando se especifica un valor distinto de cero en el parámetro expiration, se generará el error 147 (ERRTRADEEXPIRATIONDENIED). En algunos servidores comerciales, la cantidad total de órdenes abiertas y pendientes puede ser limitada. Si se ha excedido este límite, no se abrirá ninguna orden nueva (o no se colocará ninguna orden pendiente) y el servidor comercial devolverá el error 148 (ERRTRADETOOMANYORDERS). // ------------------------------------------------ ------------------ // Función de inicio del programa de guiones // ------------------------ ------------------------------------------ void OnStart () // - - obtener el nivel mínimo de parada doble minstoplevel MarketInfo (Symbol (), MODESTOPLEVEL) Imprimir (quotMinimum Stop Levelquot, minstoplevel, quot pointsquot) precio doble Ask // --- calculado SL y TP precios deben ser normalizados doble stoploss NormalizeDouble (Bid - minstoplevel Point (Dígitos) doble toma NormalizeDouble (Oferta minstoplevel Punto Dígitos) // --- poner el orden de mercado para comprar 1 lote int ticket OrderSend (Símbolo (), OPBUY, 1, precio, 3, stoploss, takeprofit, quotMy orderquot, 16384, 0, clrGreen) if (ticketlt0) Imprimir (quotOrderSend falló con error quot. GetLastError ()) else Imprimir (quotOrderSend colocado con éxitoquot) // --- Forex Blog Manejo OrderSend Error 131 en MetaTrader 4 10 de julio de 2008 5, 2009) by Andriy Moraru OrderSend El error 131 es un problema muy popular que se encuentra generalmente al probar asesores expertos de MT4. Lo que causa este error It146s llamado ERRINVALIDTRADEVOLUME en el código MT4. Eso significa que su asesor experto está tratando de enviar una orden con volumen de comercio no válido. En la mayoría absoluta de los corredores MT4 que fijan algo EA para abrir una orden 0.123 lotes generarán este error. Pero a veces se genera cuando la EA, creada para cuentas mini o micro, se utiliza en la cuenta estándar. Si usted tropieza con OrderSend Error 131 durante sus pruebas, puede averiguar rápidamente la configuración incorrecta de su EA 8212 encontrar la función estándar init () dentro de su código EA146s e insertar estas líneas de código allí: Print (MarketInfo (Symbol () MODELOTSIZE)) Imprimir (MarketInfo (Símbolo () (MODEMINLOT)) Imprimir (MarketInfo (Símbolo () (MODELOTSTEP)) Imprimir (MarketInfo (Símbolo (MODEMA)) La primera línea le dará la información acerca de cuántas unidades un lote Se mantiene cuando se realiza el comercio en esta cuenta (100000 significaría un lote de tamaño estándar). Recuerde que en su registro de experto, esta línea comenzará primero de abajo a arriba, no viceversa. La segunda línea le dirá la cantidad mínima de lotes que puede comerciar (este es el error más común que probablemente sólo necesita para fijar la cantidad de lotes de sus operaciones EA de 0,1 a 1). El tercero dará el paso mínimo para el volumen comercial en lotes. La cuarta línea le dirá la cantidad máxima de lotes que su EA puede comercializar. Por ejemplo, la cuenta demo en FXOpen genera esta información cuando inserto esas líneas en el código: 2008.07.10 15:13:37 Muestra MACD EURUSD, H1: 10000 2008.07.10 15:13:37 Muestra MACD EURUSD, H1: 0.01 2008.07 .10 15:13:37 MACD Muestra EURUSD, H1: 0.01 2008.07.10 15:13:37 MACD Muestra EURUSD, H1: 100000 Esto significa que 1 lote es 100.000 unidades (un tamaño estándar), el volumen mínimo de comercio es de 0,01 lote ( Por lo tanto, se puede operar a partir de 10 en 1 posición en un par de divisas basado en el dólar), paso de volumen de comercio mínimo es también 0,01 lote (uno puede negociar 0,33, 0,4 o 1,25 volúmenes de lote, pero can146t enviar órdenes con tamaño de lote 0,333) El volumen máximo que se puede usar para abrir una posición es de 10.000 lotes. Puede incorporar la función MarketInfo () a un nivel más complejo en su EA, por lo que podría comprobar automáticamente los valores permitidos y corregir su configuración. Pero si no desea codificar mucho, sólo puede usar el código anterior para averiguar los valores correctos y corregir los ajustes manualmente. (8220MODELOTSIZE 8220, MarketInfo (Símbolo () (, MODELOTSIZE), 8220, Símbolo 8220, Símbolo ()) Imprimir (8220MODEMINLOT 8220, MarketInfo (8220MODEMINLOT 8220, (8220MODELOTSTEP 8220, MarketInfo (Símbolo (), 8220, Símbolo 8220, Símbolo ()) Imprimir (8220MODEMAXLOT 8220, MarketInfo (Símbolo (),) MODEMAXLOT), 8220, Símbolo 8220, Símbolo ()) // Ogn POLAt Responder: 27 de agosto 2012 a las 3:14 pm Gracias por su ayuda. Pero he utilizado este código y aprendí que el tamaño máximo del lote es 30. Cómo puedo aumentar Tamaño máximo del lote. Solamente su corredor puede aumentar su tamaño máximo permitido del lote. Usted puede intentar ponerse en contacto con su servicio de apoyo acerca de eso, pero no estoy seguro de que lo aumentará. De verdad tiene que abrir posiciones tan grandes? Puede incorporar la función MarketInfo () a un nivel más complejo en su EA, por lo que podría comprobar automáticamente los valores permitidos y corregir sus configuraciones8221 Por favor, cuál es el código. Lo necesito pero no soy un codificador. Agradecido. Chad Chad, Si usted aren8217t codificador it8217d ser mejor para que usted utilice la solución propuesta en este post. La integración de MarketInfo () en el código para los ajustes automáticos es diferente en cada caso y no podré ayudarte aquí. Más que eso, realmente no lo necesitas si eres un codificador profesional. Dios te bendiga que me estaba volviendo loca tratando de resolver esto. Finalmente entiendo por qué mi EA funciona en mini pero no tan bien en las cuentas normales. Gracias. Deja una respuesta

No comments:

Post a Comment