Forex Ea Error 130


OrderSend Error 130 Error de apertura de Long Order: 130 Aquí está el código, que fue modificado de un asesor experto que puede abrir operaciones sin error. Así que no estoy seguro de por qué estoy recibiendo este error. // (Tendencia de la curva de la luz) // El precio de cierre es menor que la línea superior de Bollinger // si (trendlt0) // La tendencia es hacia abajo ticketOrderSend (Symbol (), OPBUY, Lotes, Ask, 3, Ask-TrailingStop, 0, quotCounter Trend : Long Order Placedquot, 16384,0, Green) // Abrir orden larga si (ticketgt0) si (OrderSelect (ticket, SELECTBYTICKET, MODETRADES)) Print (quotBUY orden abierta. Quot, OrderOpenPrice ().vot, GetLastError ()) return (0) return (0) Verifique que su valor de stop es correcto, y si sigue siendo un problema, Normalized. Print (quot ---------------------------------- stop value is quot, Ask-TrailingStop) ticketOrderSend (Símbolo ), OPBUY, Lotes, Ask, 3, Ask-TrailingStop, 0, quotCounter Trend: Long Order Placedquot, 16384,0, Green) // Open Long order Su pedido puede ser 1,340 en el EUR / USD por ejemplo. Cuál es el valor de su TrailingStop. Debe ser algo como 0.0010 o 0.0020 o 0.0011 o 0.133 o etecetera. Si desea que TrailingStop sea un número entero que un usuario ingresa, como 10 por ejemplo, entonces usted tiene que hacerlo 0.0010 primero para poder restar Lo de Ask. Puede hacer esto por lo siguiente: TrailingStop Point. Punto en el EURUSD 0.0001. Por lo tanto, puede que desee cambiar su código a lo siguiente: Ask - (TrailingStop Point), que es el mismo que Ask-TrailingStop Point. A continuación se muestra el código de uno de mis scripts, para que pueda ver cómo se puede hacer esto. OrderSend (Símbolo (), OPBUY, dLotSize, Ask, 3, Ask - StoplossPoint. Pregunte a TakeprofitPoint, strOrderComment, MAGICID, 0, Green) // Abrir Pedido de Compra Espero que esto funcione. Fixing Error 130 - MT4 Estas no son soluciones al problema . Entiendo cuál es el problema, no sé cómo codificarlo para resolverlo. Consigo el error 130 debido al hecho de que mi precio abierto en mi parada de la compra es cerca de mi precio actual. Si el precio sigue subiendo nunca se llenará. Lo que me pregunto es que hay una manera de aumentar el precio abierto por X cantidad cuando esto sucede hasta que se llena Los dos enlaces y cientos de esos 62000 enlaces contienen la solución, pero me estás diciendo que no. ¿Cómo es que El te está diciendo la solución? Está justo delante de tus ojos. El problema parece ser que usted necesita a alguien para hacer el trabajo para usted. Buena suerte, pero esa no es la forma de aprender a codificar. Una sugerencia para usted: Para evitar el error 130 para su orden de compra, haga lo siguiente: a) obtenga el Stoplevel de su corredor b) compare el precio de mercado (Ask) Stoplevel con su precio BuyStop calculado. Si Stoplevel Buffer-x, entonces el OrderSend trabajará sin conseguir el error 130 Buffer-x tiene que ser definido por se y cuando está aplicado debe estar en puntos, no En Pips. Se ha unido a abril de 2016 Estado: Junior Member 1 Mensaje Hola Tengo este ea codificado a continuación, por favor, cualquiera me ayude con respecto a este error ruidoso 130 ltinvalid stopsgt // -------------------- ---------------------------------------------- // soubra2003v2. 0.mq4 // Copyright 2016, soubra2003 // mql5 / es / users / soubra2003 // ------------------------------ ------------------------------------ propiedad copyright quotCopyright 2016, soubra2003v2.0quot propiedad link quotonesoubraquot propiedad version quot2 .00quot descripción de la característica quot - Este EA negociará como abajo descripción: quot descripción de la característica quot 1) Condición de la compra: La orden pendiente será fijada como precio más alto de prev. Velas Distancia por user. quot descripción de la propiedad quot 2) condición de venta: La orden pendiente se establecerá como precio inferior de prev. 3) Las actualizaciones de las órdenes pendientes de compra / venta serán por lo general con cada nueva descripción de la descripción de la propiedad de open. quot 4) Lo que es nuevo: Trailing Stop, Break Even amperio Money Management. quot property strict Incluyen ltstdlib. mqhgt cadena de entrada sep3 quot --------------------- Configuración de Mgmt de dinero ------------------ --- quot // MM Opciones gtgtgtgtgtgtgtgt entrada bool MM false // Gestión de dinero entrada doble CalcAmount 100 // Cantidad para AUTO Entrada de lote doble CalcLot 0.01 // Auto Tamaño de lote cada Cantidad entrada doble Tamaño de lote 0.10 // Entrada de Tamaño de Lote (Fija) String sep1 quot --------------------- Ajustes de Trading --------------------- quot // Opciones de Negociación gtgtgtgtgtgtgtgt input double orderdistance 10 // Distancia (Después de Prev. High amp Baja Prev. Baja) extern double buystoploss 50 // Comprar Stop Loss extern doble sellstoploss 50 // Vender Stop Loss extern doble buytakeprofit 100 // Comprar Take Profit extern double Selltakeprofit 100 // Venta Take Profit entrada int Slippage 5 cadena de entrada sep2 quot --------------------- Break Even amp T. Parar -------- ------------- quot // Break Even amp T. Parar gtgtgtgtgtgtgtgt entrada bool BreakEven true // Break Even Entrada de estado doble BreakEvenStart 5.0 // Break Even Start entrada doble BreakEvenValue 1.0 // Break Even Value Entrada bool TrailingStop true // Trailing Stop Estado entrada doble TrailingStopVal 10.0 // Trailing Stop Value cadena de entrada sep4 quot --------------------- Otra Configuración ----- ---------------- quot // Otras opciones gtgtgtgtgtgtgtgt input string tradescommentquotsoubra2003Version 2.0quot // Trades Comentario color de entrada buyarrowcolor clrBlue // Comprar Arrow Color color de entrada sellarrowcolor clrRed // Vender flecha Entrada de color Color deletearrowcolor clrYellow // Borrar Orden Pendiente Arrow Color color de entrada modifyarrowcolor clrWhite // Orden Modificada Arrow Color // --- int slippage5 int buymagicnumber821454145 int sellmagicnumber192545451 doble tradepointPoint doble prevcdlhigh doble prevcdllow doble buyprice doble sellprice int buyticketno int sellticketno doble Lotes doble StopSprdLevel MarketInfo (Símbolo () (MODEMA) (MODEM) (Símbolo () (MODESTOPLEVEL)) MarketInfo (Símbolo (), MODESPREAD) doble BrokerMinLot MarketInfo (Símbolo () MODEMINLOT) otra cosa buystoplossNULL si (buytakeprofitgt0) buytakeprofitbuypricebuytakeprofittradepoint demás buytakeprofitNULL si (sellstoplossgt0) sellstoplosssellpricesellstoplosstradepoint demás sellstoplossNULL si (selltakeprofitgt0) selltakeprofitsellprice-selltakeprofittradepoint demás selltakeprofitNULL si (NewBar ()) CloseAll () RefreshRates CloseAll () si (buycounter ()) () int tktbuy OrderSend ( (Tktbuylt0) Imprimir (quotOrder falló con error: quot, ErrorDescription (GetLastError ())) else Imprimir (quotOrder colocado con éxitocuot) ) If (sellcurrent) (tktselllt0) Imprimir (quotOrder falló con error: quot) , ErrorDescription (GetLastError ())) else Imprimir (quotOrder colocado correctamentequot) Comentario (quot Anterior Candle High quot, NormalizeDouble (prevcdlhigh, Dígitos), quot Pendiente Buy Order Debe ser quot, NormalizeDouble (buyprice, Bajo quot, NormalizeDouble (prevcdllow, Dígitos), quot Pending Sell Order Debe ser quot, NormalizeDouble (sellprice, Dígitos), quotnquot, quot ---------------------- -------------------------- quot, quotnquot, quot, Quotnquot, quot, Quot, Quotnquot, Quot, Quotnquot, quotnquot, quotnquot, quot, quot, quot, quotnquot, quotnquot ------------------------------------ Quot, quot, quot, quotnquot, quotnquot, Quotnquot, quotnquot, Quotnquot, Quotnquot, quot, BrokerMaxLot, quotnquot, quot, BrokerMaxLot, quotnquot, quot (Cnt1, SELECTBYPOS) if (OrderStopLoss () NULL ampamp OrdenTipo () ltOPSELL ampamp OrderSymbol () Símbolo () (OrderBoot) (OrderBoot) (OrderBoot) (OrderBoot) () (OrderBoot) () (OrderBoot) ) If (ticketmodify) Print (quotTStop: La orden no se puede modificar. (Cnt2, SELECTBYPOS) if (OrderStopLoss () NULL ampamp OrderType () ltOPSELL (cnt2, SELECTBYPOS) if (OrderTypeStop) () (OrderType) (OrderType) (OrderType) (OrderType) (OrderType) (OrderType) (OrderType) (OrderTypeProduct) (OrderTypeProfile) (), () () () () () () () () () () () () () OrdersTotal () cnt3) int ticketSelect OrderSelect (cnt3, SELECTBYPOS) if (OrderType () lt OPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () buymagicnumber) if (OrderType () OPBUY) if (BreakEvenStart gt 0 ampamp BreakEven) RefreshRates ) Int ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () (BreakEvenValuetradepoint), OrderTakeProfit (), 0, modifyarrowcolor) if (ticketmodify) Imprimir (quotBreak Even: Orden no se puede modificar, quot, ErrorDescription GetLastError () ) Else Print (quotBreak Even Placed Successfuly. quot) // SellBreakEven () para (int cnt4 0 cnt4 lt PedidosTotal () cnt4) int ticketselect OrderSelect (cnt4, SELECTBYPOS) if (OrderType () lt OPSELL ampamp OrderSymbol () Symbol () (OrderType) (OrderType ()), OrderOpenPrice () - (BreakEvenValue punto de comercio), OrderTakeProfit (), 0 , Modifyarrowcolor) if (ticketmodify) Imprimir (quotBreak Even: Orden no se puede modificar, quot, ErrorDescription (GetLastError ())) else Imprimir (quotBreak Even Placed Successfuly. quot) // ------------ -------------------------------------------------- ---- // Función de estrecha de expertos // --------------------------------------- --------------------------- void closeall () para (int i0 iltOrdersTotal () i) int selectOrderSelect (i, SELECTBYPOS, MODETRADES) if (OrdenSímbolo () Símbolo ()) si (OrderType () OPBUYSTOP OrderType () OPSELLSTOP) si (OrderMagicNumber () buymagicnumber OrderMagicNumber () sellmagicnumber) bool deleteOrderDelete (OrderTicket () Cómo superar el error Ordersend 130 en MetaTrader 4 Por la demanda popular, las estrategias probadas sobre cómo superar cada peor pesadilla algoritmica de los trader8217s 8211 Error 130 (Err) (Error de descripcion) (Error de descripcion (GetLastError () ¿De dónde viene este error? ¿Qué significa para su experto asesor Cómo puede encontrar la parte de su código que está causando el error Hacemos frente a todo esto y more8230 Para empezar, una definición formal de nuestro amigo, MQL4 Documentación: That8217s derecho Eso es todo lo que obtiene de MetaQuotes. Y el resto8230 Ir figura Error de ordenamiento 130 se menciona brevemente en otras secciones de la documentación. Sin embargo, no hay una guía exhaustiva de lo que 8220Invalid Stops8221 realmente significa y cómo lidiar con esto, tal vez, el problema más común en la programación de Forex. Pero no es una preocupación por qué he escrito este artículo. Let8217s obtener a través de este conjunto El asesino silencioso So8230 lanzó su asesor experto y8230 no pasa nada. Ninguna orden de compra, ninguna orden de venta, ninguna orden pendiente, ni siquiera los mensajes de error en el logs8230. Sólo silencio. Usted decide esperar unas horas / días / semanas, y nada realmente cambia 8211 las cartas van arriba y abajo, pero usted don8217t ver cualquier beneficio. Esto puede durar eternamente8230. La verdadera razón es sencilla de que realmente obtengas ERRINVALIDSTOPS (que es el término técnico correcto para el problema), pero no puedes verlo. That8217s porque 130 es un asesino silencioso. Un asesino a sangre fría de tu cerebro y calma interior No hay manera de captar este error a través de registros de expertos consejeros o incluso registros de terminal. La única manera de atraparlo es agregando los mecanismos a prueba de fallos adecuados en su código. Aquí hay un ejemplo que puedes adaptar a tu código: Lo que estamos haciendo aquí es tomar el número del ticket y que OrderSend () devuelve y verificando si es menor que cero. Si es así, entonces esa es una señal de MetaTrader 4 diciéndonos que hubo un problema con la solicitud. El código de error se imprime en la pantalla mediante Alert () y la función GetLastError () incorporada. Este código dará una ventana emergente como en la imagen arriba en la parte superior de este artículo. Nota: puede utilizar Print () en lugar de Alert () para redirigir el mensaje directamente al registro de EA8217s en lugar de mostrarlo en la pantalla. Núcleo de Ordersend Error 130 Paradas no válidas es el verdadero nombre del culpable con el que estamos tratando hoy. Entonces, ¿qué significa que las paradas no válidas en MetaTrader 4 significan realmente Para un pedido en el mercado (COMPRAR o VENDER) paradas no válidas significa que el StopLoss y / o TakeProfit que solicitó no fueron posibles de configurar para su pedido. Por lo tanto, dado que una petición no se puede cumplir sólo parcialmente, la orden no se ejecutó en absoluto. Para una orden pendiente (LÍMITE DE COMPRA, LÍMITE DE COMPRA, LÍMITE DE VENTA o LÍMITE DE VENTA) significa que (1) / TP (igual que arriba) O (2) la emisión fue con el precio de entrada que especificó para la orden misma Como podemos ver, el problema es siempre con uno (o muchos) de los precios que su robot de Forex especificó en su Solicitud al servidor comercial. Ahora que sabemos que nuestro enemigo 8211 let8217s lo venció 1) StopLoss amp TakeProfit son los precios Hay varias causas posibles de ERRINVALIDSTOPS, y uno de los más frecuentes entre los principiantes es especificar el StopLoss y TakeProfit en pips en lugar de los niveles de precios reales. Como esto: Sin embargo, tenga cuidado Algunos EA8217s ya tienen módulos que detectarán el número de dígitos después del decimal y ajustarán automáticamente sus parámetros de entrada para usted. En estas situaciones la multiplicación de entradas por 10 puede conducir realmente a un rendimiento erróneo. Nota: Planeo publicar un artículo aparte donde discutiremos cómo crear nuestros propios módulos para detectar el número de dígitos después del decimal. 3) Corredores ECN Las cuentas ECN tienen sus propias especificaciones. Uno de ellos es 8211 al negociar a través de un corredor ECN no podrá establecer un StopLoss y / o TakeProfit con su orden de mercado (COMPRAR o VENDER). Si intenta hacer esto 8211 obtendrá el Error 130. Sin embargo, por supuesto, usted necesita establecer un StopLoss (y tal vez TakeProfit) para su orden, y esto debe hacerse tan pronto como sea posible después de que el pedido ha sido ejecutado. Pruebe este código: Puede agregar esta función a su código (al final) y luego usarlo en lugar de OrderSend () en su código principal. Esta función añade un paso adicional en el proceso de envío de un pedido de mercado. En primer lugar, enviar la solicitud para ejecutar una orden de mercado eliminando el StopLoss y TakeProfit. A continuación, modifica el orden de mercado recién abierto añadiendo el SL y el TP deseados. Existe, por supuesto, el riesgo de que se ejecute el pedido, pero la modificación fallará. Sin embargo, en ese caso la función notificará inmediatamente al comerciante que el StopLoss y el TakeProfit no se han fijado. No dude en modificar esta función para adaptarla a sus necesidades y estilo de negociación. 4) Stop-Levels Los Stop-Levels son un mecanismo para que los corredores se protejan de ciertos riesgos relacionados con la volatilidad y la liquidez. En términos simples, no podrá establecer su StopLoss o TakeProfit O cualquier orden pendiente más cerca de un número predeterminado de Pips al precio de mercado actual. Para averiguar cuál es el nivel de parada para un par de divisas específico, debe presionar CTRLU en su teclado, seleccione el par de divisas deseado y haga clic en el botón 8220Properties8221 como se muestra en la siguiente ilustración: En este ejemplo, el nivel de parada para AUDUSD es de 3 pips . Esto significa que no podrá establecer el StopLoss para su pedido más cercano a 3 pips al precio al que se abrirá la orden. Esto también significa que cualquier orden pendiente tendrá que ser fijado por lo menos 3 pips lejos del precio de mercado actual. Si Robot trata de romper estas reglas y establece un StopLoss / TakeProfit o Orden pendiente dentro del rango de Stop Level, entonces obtendrá el Error 130 8220Invalid Stops8221. Por lo tanto, sólo tenga en cuenta el nivel de detención de la moneda donde su EA8217s están operando 8211 don8217t especificar parámetros de StopLoss y TakeProfit excesivamente pequeños. También vale la pena señalar que pares de divisas más exóticas pueden tener niveles de parada mucho más significativos. Por ejemplo, para AUDNZD el Stop Level con el mismo corredor que en el ejemplo anterior es de 20 Pips. Para GBPSEK (Libra Británica vs Corona Sueca) 8211 it8217s 100 Pips. 5) Normalización de dobles Con algunos corredores usted encontrará que por una razón desconocida los precios de Ask y Bid se pasan al comerciante con dígitos adicionales despreciables después del decimal. Por ejemplo: En lugar de 1.1606 el corredor le daría 1.160600001 Ahora este fenómeno no tiene ningún efecto en la negociación manual, además puesto que el terminal MT4 está cableado para mostrar un cierto número de dígitos después del punto decimal (4 o 5) 8211 no lo hará Ser capaz de notar cualquier diferencia en absoluto Sin embargo, estos 8216negligible8217 dígitos después de la decimal puede tener un efecto dramático sobre Expert Advisors causando823082308230 that8217s derecho Nuestro viejo amigo, OrderSend Error 130 Here8217s una estrategia que personalmente uso para proteger a mis robots de este problema: Pequeño truco ordenado le permite normalizar (en términos simples 8211 Ronda) los precios que usted está entrando en la función OrderSend (). De esta manera, cortar todos los 8216negligible8217 dígitos después del punto decimal. Conclusión Hoy vimos que puede haber múltiples (al menos 5) causas de error 130. Aunque esto es muy pocos, los problemas subyacentes son todos triviales y se pueden corregir en cuestión de minutos. Por lo tanto, el Error 130 no debe ser temido Si usted ha encontrado a este culpable, it8217s apenas una cuestión de ir a través de la lista arriba, encontrando la situación que se aplica a usted y aplicando la solución prescrita. Espero que hayas encontrado este artículo útil Házmelo saber si tienes alguna pregunta usando la sección de comentarios de abajo. ¿A qué esperas? Empieza con la adicción al comercio de divisas

Comments