Forex Mql4 Error 130
Puede alguien ayudarme con este error? Estoy enviando una Orden usando este comando: Ticket OrderSend (Symbol (), OPBUY, 1, Ask, 3, 30, 30, quotBuyOrderquot, 0, 0, Green) Quiero comprar 1 lote y Fije StopLoss y TakeProfit a 30 pips y estoy recibiendo el error 130 - paradas inválidas. Tengo cuenta de demostración AlpariUK y estoy tratando de que el par EURUSD con el followingMarketInfo: MODEPOINT - gt 0,0001 MODEDIGITS - gt 4 MODESPREAD - gt 2 MODESTOPLEVEL - gt 2 MODELOTSIZE - gt 100000 MODETICKVALUE - gt 10 MODETICKSIZE - gt 0,0001 MODEMINLOT - gt 0,01 MODELOTSTEP - gt 0.01 MODEMAXLOT - gt 99999 Gracias por cualquier ayuda Estoy recibiendo el mismo error con los siguientes fragmentos de código. Simplemente no puedo ver por qué mi código se está comportando de esta manera, pero tal vez usted o algún otro conmutado en la persona podría ser capaz de detectar lo que he perdido. Heres el fragmento ofensivo de código. Y aquí está la salida de rastreo mostrando las entradas al error y el propio código de error. Cualquier idea de lo que he hecho mal aquí estoy recibiendo el mismo error con los siguientes fragmentos de código. Simplemente no puedo ver por qué mi código se está comportando de esta manera, pero tal vez usted o algún otro conmutado en la persona podría ser capaz de detectar lo que he perdido. Heres el fragmento ofensivo de código. Y aquí está la salida de rastreo mostrando las entradas al error y el propio código de error. Cualquier idea de lo que Ive tiene mal aquí Busque NormalizeDouble () en la documentación Busque NormalizeDouble () en la documentación Que parece poco probable que sea la respuesta. No es como si los precios se especifican a 6 o 7 lugares decimales (y mi experiencia personal es que esto no importa de todos modos - el corredor rondas los precios según sea necesario). Vale la pena tener en cuenta que theres una razón nueva-ish para el error 130, que (creo) ha entrado en existencia desde los mensajes originales en este hilo en 2008. Si su corredor utiliza algo así como el Boston Technologies Bridge, a continuación, el s / L y t / p tienen que ser colocados por separado de una orden de mercado, y (creo) se obtiene el error 130 si intenta hacer el s / l y t / p como parte de la orden de mercado. En otras palabras, trate de colocar solo el orden de compra por sí mismo en primer lugar, y luego haga un OrderModify () para poner en el s / l y t / p. Eso parece poco probable que sea la respuesta. No es como si los precios se especifican a 6 o 7 lugares decimales (y mi experiencia personal es que esto no importa de todos modos - el corredor rondas los precios según sea necesario). Vale la pena tener en cuenta que theres una razón nueva-ish para el error 130, que (creo) ha entrado en existencia desde los mensajes originales en este hilo en 2008. Si su corredor utiliza algo así como el Boston Technologies Bridge, a continuación, el s / L y t / p tienen que ser colocados por separado de una orden de mercado, y (creo) se obtiene el error 130 si intenta hacer el s / l y t / p como parte de la orden de mercado. En otras palabras, trate de colocar solo el orden de compra por sí mismo en primer lugar, y luego haga un OrderModify () para poner en el s / l y t / p. // las variables regulares extern doble Tamaño de terreno 0,1 extern doble LotIncrement 0,1 extern doble TakeProfitPip 10 extern doble StopLossPip 21 si (Lotes 0) // si (multiplicador) si (1) Comercio al multiplicador NormalizeDouble (Tamaño de terreno, 2) otro montón NormalizeDouble (Tamaño de terreno, 2 ) doble xtp 0 si (TakeProfitPip0) xtp Pregunta (TakeProfitPipPoint) OrderSend (Símbolo (), OPBUY, Lotes, para hacer, deslizamiento, Oferta (StopLossPipPoint), Ask (TakeProfitPipPoint), TradeComment, de referencia, verde) Error GetLastError () si (Error 0) Escribir (quotError apertura orden de compra: ErrorDescription quot (error) quot (Cquot quot error) Pregunta: Pregunta quot quot deslizamiento: quot deslizamiento) otra cosa TickPrice CLOSE0 TradeAllowed falso si (Lotes 0) // si (multiplicador) si (1 Multiplicador Lotes NormalizeDouble) (Tamaño de terreno, 2) Lotes demás NormalizeDouble (Tamaño de terreno, 2) doble xtp 0 si (TakeProfitPip0) xtp bid (TakeProfitPipPoint) OrderSend (Símbolo (), OPSELL, Lotes, Puja, deslizamiento, Oferta (StopLossPipPoint), BID - (TakeProfitPipPoint), TradeComment, de referencia, rojo) // resOrderSend (Símbolo (), OPSELL, LotsOptimized (), Bid, 3, Oferta (StopLossPoint), bid (TakeProfitPoint), quotSellquot, MAGICMA, 0, rojo) Error GetLastError ( ) si (Error 0) Escribir (apertura quotError orden de VENTA: quot ErrorDescription (error) quot (dquot quot error) de la subasta: la subasta quot quot deslizamiento: quot deslizamiento) otra cosa TickPrice CLOSE0 TradeAllowed falsa creo que puedo confirmar que para, por ejemplo. Alpari Micro Cuenta (tiene que ser una cuenta quotlivequot), tiene que hacer OrderSend con cero SL y TP y luego inmediatamente después, modificar el orden con el SL y TP necesarios para que funcione. Hago un OrderSelect directamente después de que pueda utilizar OrderOpenPrice () como el precio abierto en la lista de parámetros OrderModify. Eso es lo que he cambiado en mi código y parece que funciona ahora. Creo que tuve el mismo problema con Axis comerciante así que tal vez lo intentaré allí de nuevo algún tiempo. La única otra cosa que hice fue asegurarse de que cuando envié el OrderSend, había un número mágico no cero en él. Buena suerte a todos. Error 130 - parada no válida. Por qué ERRNOERROR 0 No se devolvió ningún error. ERRNORESULT 1 No se devuelve ningún error, pero el resultado es desconocido. ERRCOMMONERROR 2 Error común. ERRINVALIDTRADEPARAMETERS 3 Parámetros comerciales no válidos. ERRSERVERBUSY 4 El servidor comercial está ocupado. ERROLDVERSION 5 Versión antigua del terminal cliente. ERRNOCONNECTION 6 No hay conexión con el servidor comercial. ERRNOTENOUGHRIGHTS 7 No hay suficientes derechos. ERRTOOFREQUENTREQUESTS 8 Demandas demasiado frecuentes. ERRMALFUNCTIONALTRADE 9 Funcionamiento comercial defectuoso. ERRACCOUNTDISABLED 64 Cuenta desactivada. ERRINVALIDACCOUNT 65 Cuenta no válida. ERRTRADETIMEOUT 128 Tiempo de espera. ERRINVALIDPRICE 129 Precio no válido. ERRINVALIDSTOPS 130 Paradas no válidas. Volumen de comercio no válido. ERRMARKETCLOSED 132 El mercado está cerrado. ERRTRADEDISABLED 133 El comercio está deshabilitado. ERRNOTENOUGHMONEY 134 No hay suficiente dinero. ERRPRICECHANGED 135 Precio modificado. ERRÓFONOS 136 Fuera de comillas. ERRBROKERBUSY 137 El corredor está ocupado. ERRREQUOTE 138 Requerir. ERRORDERLOCKED 139 El orden está bloqueado. POSICIONES ERRONALESONLYALLOWED 140 Sólo se permiten posiciones largas. ERRTOOMANYREQUESTS 141 Demasiadas solicitudes. ERRTRADEMODIFYDENIED 145 Modificación negada porque el pedido es demasiado cercano al mercado. ERRTRADECONTEXTBUSY 146 El contexto comercial está ocupado. ERRTRADEEXPIRATIONDENIED 147 Las expiraciones son denegadas por el corredor. ERRTRADETOOMANYORDERS 148 El importe de las órdenes abiertas y pendientes ha alcanzado el límite establecido por el corredor. StopLossLevel NormalizeDouble (bajo, Dígitos) CalcStopLossPips (MathAbs (Bid StopLossLevel)) / pp si (UseTakeProfit) TakeProfitLevel NormalizeDouble (Bid - TakeProfitSell Point, Dígitos) otra cosa TakeProfitLevel 0.0 Imprimir (Sell StopLoss:, DoubleToStr (StopLossLevel, Dígitos)) Imprimir (TP (Bid, Dígitos)) OrderSend (Símbolo (), OPSELL, lotsForOrder, NormalizeDouble (Bid, Dígitos), Slippage, NormalizeDouble (Bid (CalcStopLossPips), Dígitos) , NormalizeDouble (TakeProfitLevel, Dígitos), Sell (InternalMagicNumber), InternalMagicNumber, 0, DeepPink) OrderSend int OrderSend (símbolo de cadena // símbolo int cmd // operación doble volumen // volumen doble precio // price int slippage. / / / / / / / / / / / / / / / / / / / / / / / / / / / - - - - - - - - - - - - - - - - - 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 de acuerdo con la cantidad de dígitos después del punto decimal, se generará el error 129 (ERRINVALIDPRICE). Si el precio abierto solicitado está completamente desfasado, 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 generará 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 pedidos abiertos 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, price, 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 OrderSend Error 130 Qué hacer 6 de octubre de 2008 (Última actualización el 23 de abril , 2013) por Andriy Moraru Los expertos asesores que trabajan en un corredor pueden dejar de trabajar en otro el problema con ellos a menudo se encuentra en OrderSend Error 130. Si ves Error 130 en el registro de su plataforma MetaTrader cuando su experto asesor debe abrir un , Entonces eso significa que los niveles stop-loss o take-profit se ajustan al precio de mercado actual. En la documentación MQL este error se llama ERRINVALIDSTOPS (laquoInvalid stopsraquo). Algunos corredores de Forex establecen la distancia mínima entre el precio actual y los niveles de stop-loss / take-profit para evitar la escalpación o el abuso de los retrasos de cotización. Eso no es un problema real para la mayoría de los asesores expertos que no usan scalping. Para evitar que se produzca este error, debe cambiar el código expert146s. En primer lugar, es posible que desee saber qué es lo mínimo que se establece en su servidor MetaTrader de broker146s. La adición de esta línea de código producirá el nivel mínimo actual para el par de divisas del gráfico, donde se ejecuta el EA: Print (MarketInfo (Symbol () (MODESTOPLEVEL)) No debería utilizar el stop-loss o el nivel take-profit Están más cerca que MarketInfo (Symbol (), MODESTOPLEVEL) al precio de mercado actual. Si su EA calcula las paradas y toma beneficios de forma dinámica, esto es lo que le sugiero que haga: Declare una variable global para el StopLevel mínimo, por ejemplo: int StopLevel En la función init () de su asesor experto define el StopLevel mínimo StopLevel MarketInfo Symbol (), MODESTOPLEVEL) MarketInfo (Symbol (), MODESPREAD) Tenga en cuenta que también se requiere agregar una diferencia de propagación. La próxima vez que se calcula su stop-loss o toma-ganancia, sólo verifique que no sean menores que StopLevel: if (StopLoss Stop Stop) StopLoss StopLevel si (TakeProfit lt StopLevel) TakeProfit StopLevel Don146t olvide actualizar las tarifas actuales del mercado con RefreshRates () Antes de agregar los niveles stop-loss / take-profits a las tasas reales del mercado. Eso debería ayudar en la mayoría de los casos. Al menos, para mí, la manipulación de la OrderSend Error 130 siempre ha funcionado. Actualización 2011-12-15: Algunos corredores (ECN) don8217t permiten a los asesores expertos establecer el stop-loss o tomar el nivel de beneficio en la función OrderSend (), incluso si 8217s mayor que su MODESTOPLEVEL. En este caso, you8217ll tiene que cambiar su EA para enviar órdenes sin SL y TP y luego usar la función OrderModify () para establecer stop-loss y take-profit en la posición abierta. Si tiene alguna pregunta o sugerencia sobre el problema de OrderSend Error 130 con los asesores expertos, no dude en responder usando el formulario de abajo. Mensajes relacionados: 64 Respuestas a 8220OrderSend Error 130 Qué hacer8221 khan Responder: 16 de agosto 2013 a las 5:04 pm Sigo recibiendo este error sin parar. Mi función ordersend () es la siguiente: currentOrder OrderSend (currenciesi, OPSELL, 0.1, Bid, 3, Bid (MarketInfo (currenciesi, MODESTOPLEVEL)) MarketInfo (currenciesi, MODESPREAD) Las cosas en la pérdida de la parada y las áreas de la toma del beneficio eran cosas que el Internet me dijo que hacer pero con todo todavía no trabaja. Por favor, ayuda Tal vez, usted está intentando que en la cuenta ECN, donde está prohibido realizar pedidos con SL y TP En ese caso, usted tiene que enviar primero una orden sin SL / TP y luego modificarlo para agregar SL / TP. Khan Responder: 18 de agosto 2013 a las 11:27 pm Puede decirme lo que tengo que poner en stoploss si quiero establecer a 5 pips. Y takeprofit a diez pips para los oficios de la compra y de la venta Gracias por contestar al poste original. Comprar un comercio: Pregunte 8211 5 puntos Pídale 10 puntos Vende operaciones: Oferta 5 Punto Pida 8211 10 Punto 8220Algunos corredores de Forex establecen la distancia mínima entre el precio actual y los niveles de stop-loss / take-profit para evitar la escalpación o el abuso de los retrasos de cotización. 8221 Cuál es la razón para que el corredor haga eso si usted puede parar loos a mano Porque it8217s casi imposible abusar constantemente de la parada-pérdida baja manualmente. Los abusadores reales crean EAs que hacen eso. Hola, Gracias por la info 8211 pero tengo una pregunta que espero que pueda ayudar. Mi EA coloca órdenes pendientes, con TP y SL colocados entre 25 y 50 pips de abierto. De vez en cuando consigo el error 130, presumo porque el SL está cercano al precio actual. Seguramente el error sólo debe ocurrir cuando SL está demasiado cerca del precio de apertura, NO el precio actual en un comercio pendiente. Ajustar el SL demasiado cambiará la naturaleza del comercio 8211 cualquier idea para éste. BTW Estoy usando Alpari Reino Unido. Gracias Richard No estoy seguro, pero creo que it8217s no porque SL o TP están cerca del precio actual, sino porque su precio de apertura en el orden pendiente es demasiado cerca de la corriente. Otro problema actual se refiere a la Ejecución del Mercado vs Ejecución Instantánea. Uno es MM con ejecución instantánea y el otro es no tratar con la Ejecución del Mercado. La ejecución del mercado que realiza STP y ECN no puede enviar TP y SL junto con el pedido. Usted tiene que modificar el orden y luego establecer el TP y SL. Por qué lo piensas así? Mark Responder: 2 de marzo 2010 a las 12:57 pm Puede ser demasiado poco el deslizamiento es la causa del error 130 Cómo se calcola el deslizamiento, p. El deslizamiento es 3. Qué es 3, p. Precio 1.1111 3 1.1114 es permitido o 1.11111 3 1.11114 es permitido Si 3 pips son normales o fraccionales depende de la implementación particular de EA, pero OrderSend Error 130 no tiene nada que ver con el deslizamiento, sino con la tasa de SL, TP o un orden pendiente 8217s abierto precio. Parábolas por explicar y averiguar 130. E parabns por ajudar y esclarecer los nefitos de EA. Gostei de la simplicidad de la explicación. I allways obtuvo error ordersend 130 es muy rentable scalper mq4 puede por favor arreglar este pedido enviar error puedo correo electrónicoUsar la función MQL4 OrderModify MQL4 para principiantes Tutorial Parte 19 82208221Note que en este curso para principiantes no estaremos trabajando con órdenes pendientes. Si quieres saber más acerca de órdenes pendientes (como Buy-Limit, Sell-Limit, Buy-Stop y Sell-Stop), entonces mira mi curso premium Algorithmic Trading For Success.82218221 Exactamente necesito esta parte, cómo puedo comprar Este curso premium actualmente estoy trabajando en el Algorithmic Trading For Success curso. Hay algún tema específico que le gustaría que yo cubriera en relación con Comprar / Vender-Limitar y comprar / vender-Alto pedidos Hola Kirill Necesito tal cosa: primero voy a abrir una orden de venta o compra (ejecución del mercado) permite decir con tp10 Pips y sl20 pips, entonces necesito un experto para hacer un algoritmo como este: al igual que abrí mi primera orden manualmente el experto debe abrir una. Por ejemplo, si mi primera orden fue comprar, tp10, sl20, el experto debe abrir una orden pendiente 10 pips por debajo de la primera posición en forma de venta de parada con TP igual a la primera Orden SL, Sltp de primer orden. Cuando se ejecuta el segundo orden, el experto debe repetir el primer orden con el mismo tp y sl pero en forma de by stop. Y este proceso continuará hasta que todos los pedidos sean golpeados por el mercado
Comments
Post a Comment