Forex Error 130
Estoy recibiendo un error al intentar abrir una posición larga: OrderSend Error 130 Error de apertura de Long Order: 130 Aquí está el código, que fue modificado desde 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): // El precio de cierre es menor que la línea superior de Bollinger // if (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 (Symbol (), OPBUY, dLotSize, Ask, 3, Ask - StoplossPoint. Puede pedir TakeprofitPoint, strOrderComment, MAGICID, 0, Green) // Abrir Pedido de Compra Espero que esto funcione. Puede que alguien me ayude 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 poner StopLoss y TakeProfit a 30 pips y estoy recibiendo el error 130 - Paradas no válidas. Tengo cuenta demo AlpariUK y lo estoy probando en par EURUSD con el siguienteMarketInfo: 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, intente 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, intente 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. // Variables regulares extern double LotSize 0.1 extern dual LotIncrement 0.1 extern dual TakeProfitPip 10 extern dual StopLossPip 21 if (Lotes 0) // if (Multiplicador) if (Multiplicador 1) Lotes NormalizeDouble (LotSize, 2) else Lotes NormalizeDouble (LotSize, 2) ) Double xTp 0 si (TakeProfitPip0) xTp Ask (TakeProfitPipPoint) OrderSend (Símbolo (), OPBUY, Lotes, Ask, Slippage, Bid (StopLossPipPoint), Ask (TakeProfitPipPoint), TradeComment, Referencia, Green) GetLastError 0) Write (quotError opening COMPRA order: quot ErrorDescription (Error) quot (Cquot Error quot) Pregunta: quot Pregunta quot Slippage: quot Slippage) else TickPrice Cerrar0 TradeAllowed false if (Lotes 0) // if (Multiplicador) ) Lotes NormalizeDouble (LotSize, 2) else Lotes NormalizeDouble (LotSize, 2) double xTp 0 si (TakeProfitPip0) xTp Bid - (TakeProfitPipPoint) OrderSend (Símbolo), OPSELL, Lotes, Bid, Slippage, Bid (StopLossPipPoint) (TakeProfitPipPoint), TradeComment, Reference, Red) // resOrderSend (Símbolo (), OPSELL, LotsOptimized (), Bid, 3, Bid (StopLossPoint), Bid - (TakeProfitPoint), quotSellquot, MAGICMA, 0, Red) Error GetLastError ) If (Error 0) Write (quotError opening SELL orden: quot ErrorDescription (Error) quot (Dquot Error quot) Puja: quot Puja quot Slippage: quot Slippage) else TickPrice Close0 TradeAllowed false Creo que puedo confirmar que 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 cambié 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. He creado una EA, que funciona bien para mí, pero he intentado cambiar un poco, pero no puedo hacer que funcione. Todo lo que quiero hacer es abrir una orden con una parada de arrastre. El problema es que la parada final es diferente para cada comercio (depende de la alta de la vela actual). Siempre da el error de modificación de orden 130, lo que significa que la pérdida de parada está demasiado cerca. Eso no es posible, porque el comercio diario y la pérdida de parada es siempre por lo menos 100 pips. Supongo que el problema podría ser que de alguna manera siempre calcula la parada de arrastre 0, causa la parada de arrastre siempre se calcula justo después de que el comercio se coloca y la función ordermodify se inicia después de eso. Pero traté de poner la parada 150 por ejemplo y todavía me da ese error (pero esta vez sólo a veces). Si alguien pudiera ayudar, estaría muy contento. Thx aquí es el código (no es entero, no encajaría aquí) Creo que tiene que Normalizar expresiones quot Bid - Trailingstop Pointquot y quot Pide Trailingstop Pointquot porque Trailingstop es doble. Roger: Creo que tienes que Normalizar las expresiones quot Bid - Trailingstop Pointquot y quot Ask Trailingstop Pointquot porque Trailingstop es doble. El problema tiene que estar en otro lugar. Pero gracias de todos modos -) Por lo tanto, poner operador Imprimir: Imprimir (quotBid - quot, Bid, quot TrailingStop - quot, TrailingStop, quot OrderStopLoss - quot, OrderStopLoss (), quot Bid - Trailingstop Point - quot, DoubleToStr , 6)) el problema tiene que estar en otro lugar. Pero gracias de todos modos -) Duro de estar seguro, porque usted dice que havent publicado el código completo. Sin embargo, por su aspecto, Trailingstop no es una variable estática o global. Está declarado en la sección quotbullishquot. Por lo tanto, su valor se establecerá en el momento de una orden se coloca, pero no persistirá después de eso. En las llamadas posteriores a start (), cuando se modifica un pedido, la variable Trailingstop debe contener cero. Por lo tanto, la llamada a OrderModify () intentará establecer el stop para Ask 0 Point o Bid 0 Point. Intente poner un deslizamiento diferente de cero y compruebe que 100 puntos es lo que piensa y no 10 puntos en una plataforma de 5 decimales. Imprima los valores justo después del comercio para ver que son correctos, tal vez el indicador está devolviendo valores desagradables a veces. Es difícil estar seguro, porque dices que no has publicado el código completo. Sin embargo, por su aspecto, Trailingstop no es una variable estática o global. Está declarado en la sección quotbullishquot. Por lo tanto, su valor se establecerá en el momento de una orden se coloca, pero no persistirá después de eso. En las llamadas posteriores a start (), cuando se modifica un pedido, la variable Trailingstop debe contener cero. Por lo tanto, la llamada a OrderModify () intentará establecer el stop para Ask 0 Point o Bid 0 Point. EXACTAMENTE. Eso es lo que he pensado, pero no veo ninguna manera, cómo solucionarlo. Lamentablemente, no he estado programando durante mucho tiempo. Entonces, ves alguna manera, cómo mantener el valor de Trailingstop para la próxima repetición del programa supongo que eso empujaría un poco adelante con este EA. Y gracias a todos por sus respuestas Por lo tanto, poner operador Imprimir: Imprimir (quotBid - quot, Bid, quot TrailingStop - quot, TrailingStop, quot OrderStopLoss - quot, OrderStopLoss (), quot Bid - Trailingstop Point - quot, DoubleToStr Punto, 6)) 2009.05.18 22:31:51 1999.05.17 08:54 Rady EURUSD, Diario: Oferta - 1.0674 TrailingStop - 0 OrderStopLoss - 1.1087 Bid-TrailingstopPoint - 1.067400 La parada de arranque es igual a 0. Eso confirma el puesto de JJCS. Entonces, cómo puedo mantener el valor de la Trailingstop para otro programa de ejecución que estaba pensando en dar ese valor en billete de la orden o número mágico, pero estoy seguro de que hay mejores maneras, cómo hacerlo. Y este es el resto del código. Intente poner un deslizamiento diferente de cero y compruebe que 100 puntos es lo que piensa y no 10 puntos en una plataforma de 5 decimales. Imprima los valores justo después del comercio para ver que son correctos, tal vez el indicador está devolviendo valores desagradables a veces. 2009.05.18 22:50:02 2005.02.01 00:00 Rady EURUSD, diario: abrir 2 comprar parar 0.20 EURUSD en 1.3071 sl: 1.2963 tp: 1.3382 ok 2009.05.18 22:50:02 2005.02.01 00:00 Rady EURUSD , Diario: TS-108 Esta parte debe ser aceptable. Trailing stop es realmente 108 puntos. Trailing stop es igual a 0. Esto confirma el post de JJCS. Entonces, cómo puedo mantener el valor de la Trailingstop para otro programa de ejecución que estaba pensando en dar ese valor en billete de la orden o número mágico, pero estoy seguro de que hay mejores maneras, cómo hacerlo. Trate de declarar Trailingstop como doble estática en lugar de doble. Eso debe sobrevivir a todo lo que no sea recargas de la EA. Para manejar las reinicios, necesitará poner el valor en una variable global (GlobalVariableSet), o en un objeto de texto en el gráfico, o almacenarlo en un archivo. Error de Fijación 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 // www. mql5 / es / users / soubra2003 // ---------------------------- -------------------------------------- propiedad copyright quotCopyright 2016, soubra2003v2.0quot propiedad link quotwww. Onesoubraquot propiedad versión quot2.00quot descripción de la propiedad quot - Este EA se comercializará como abajo descripción: quot descripción de la propiedad quot 1) Comprar condición: La orden pendiente se establecerá 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 () , Err Desc: quot, ErrorDescription (GetLastError ())) else Impresión (quotOrder Has been Removed. quot) Error 130 - stop no válido. 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 deshabilitada. 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 Las posiciones largas sólo se permiten. 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 (Low, Dígitos) CalcStopLossPips (MathAbs (Bid StopLossLevel)) / pp if (UseTakeProfit) TakeProfitLevel NormalizeDouble (Bid - TakeProfitSell Punto, Dígitos) (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)
Comments
Post a Comment