Forex mql4 error 130


Alguém pode me ajudar com este erro Estou enviando um pedido usando este comando: Ticket OrderSend (símbolo (), OPBUY, 1, Ask, 3, 30, 30, quotBuyOrderquot, 0, 0, verde) Eu quero comprar um lote e Defina StopLoss e TakeProfit para 30 pips e estou recebendo o erro 130 - Paradas inválidas. Eu tenho conta demo AlpariUK e estou tentando-lo no par EURUSD com o 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 Obrigado por qualquer ajuda Im recebendo o mesmo erro com os seguintes trechos de código. Eu simplesmente não posso ver por que meu código está se comportando dessa forma, mas talvez você ou algum outro ligado pessoa pode ser capaz de detectar o que Ive perdeu. Heres o fragmento ofensivo do código. E aqui está a saída de rastreamento mostrando as entradas para o erro eo próprio código de erro. Todas as idéias que Ive começaram erradas aqui Im que começam o mesmo erro com os seguintes snippets do código. Eu simplesmente não posso ver por que meu código está se comportando dessa forma, mas talvez você ou algum outro ligado pessoa pode ser capaz de detectar o que Ive perdeu. Heres o fragmento ofensivo do código. E aqui está a saída de rastreamento mostrando as entradas para o erro eo próprio código de erro. Qualquer idéia que eu tenho errado aqui Procure NormalizeDouble () na Documentação Procure NormalizeDouble () na Documentação Que parece improvável que seja a resposta. Não é como se os preços estão sendo especificados para 6 ou 7 casas decimais (e minha experiência pessoal é que isso não importa de qualquer maneira - o corretor arredonda os preços, conforme necessário). Vale a pena ter em mente que theres uma razão new-ish para o erro 130, que (eu acho) entrou em existência desde os posts originais sobre este segmento em 2008. Se o seu corretor usa algo como a Boston Technologies Bridge, então o s / L e t / p tem que ser colocado separadamente de uma ordem de mercado, e (eu acho) você obtém o erro 130 se você tentar fazer o s / l e t / p como parte da ordem de mercado. Em outras palavras, tente colocar apenas a ordem de compra por si primeiro e, em seguida, fazer um OrderModify () para colocar no s / l e t / p. Isso parece improvável que seja a resposta. Não é como se os preços estão sendo especificados para 6 ou 7 casas decimais (e minha experiência pessoal é que isso não importa de qualquer maneira - o corretor arredonda os preços, conforme necessário). Vale a pena ter em mente que theres uma razão new-ish para o erro 130, que (eu acho) entrou em existência desde os posts originais sobre este segmento em 2008. Se o seu corretor usa algo como a Boston Technologies Bridge, então o s / L e t / p tem que ser colocado separadamente de uma ordem de mercado, e (eu acho) você obtém o erro 130 se você tentar fazer o s / l e t / p como parte da ordem de mercado. Em outras palavras, tente colocar apenas a ordem de compra por si primeiro e, em seguida, fazer um OrderModify () para colocar no s / l e t / p. // Variáveis ​​regulares extern double LotSize 0.1 extern duplo LotIncrement 0.1 extern double 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 se (TakeProfitPip0) xTp Ask (TakeProfitPipPoint) OrderSend (Símbolo (), OPBUY, Lotes, Pergunte, Deslizamento, Licitação (StopLossPipPoint), Pergunte (TakeProfitPipPoint), TradeComment, Referência, Verde Erro GetLastError 0) Write (quotError opening COMPRAR ordem: quot ErrorDescription (Error) quot (Cquot Error quot) Pergunta: quot Pergunta quot Slippage: quot Slippage) else TickPrice Fechar0 TradeAllowed false if (Lotes 0) // if (Multiplier) if Multiplicador 1 ) Lotes NormalizeDouble (LotSize, 2) else Lotes NormalizeDouble (LotSize, 2) double xTp 0 se (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) Erro GetLastError ) If (Error 0) Write (quotError opening SELL ordem: quot ErrorDescription (Error) quot (Dquot Error quot) Licitação: quot Bid quot Slippage: quot Slippage) else TickPrice Close0 TradeAllowed false Eu acredito que posso confirmar que, por exemplo, Alpari Micro Conta (tem que ser uma conta quotlivequot), você tem que fazer OrderSend com zero SL e TP e, em seguida, imediatamente depois, modificar a ordem com o necessário SL e TP para fazê-lo funcionar. Eu faço um OrderSelect logo após para que eu possa usar OrderOpenPrice () como o preço aberto na lista de parâmetros OrderModify. Isso é o que eu mudei no meu código e parece funcionar agora. Eu acho que eu tinha o mesmo problema com Axis comerciante, então talvez eu vou tentar lá em algum momento. A única coisa que eu fiz foi certificar-me de que quando eu mandei o OrderSend, havia um número mágico não zero nele. Boa sorte a todos. Erro 130 - parada inválida. Por que ERRNOERROR 0 Não retornou nenhum erro. ERRNORESULT 1 Não retornou nenhum erro, mas o resultado é desconhecido. ERRCOMMONERROR 2 Erro comum. ERRINVALIDTRADEPARAMETERS 3 Parâmetros comerciais inválidos. ERRSERVERBUSY 4 O servidor comercial está ocupado. ERROLDVERSION 5 Versão antiga do terminal do cliente. ERRNOCONNECÇÃO 6 Nenhuma conexão com o servidor comercial. ERRNOTENOUGHRIGHTS 7 Não há direitos suficientes. ERRTOOFREQUENTREQUESTS 8 Demandas muito frequentes. ERRMALFUNCTIONALTRADE 9 Operação comercial incorreta. ERRACCOUNTDISABLED 64 Conta desativada. ERRINVALIDACCOUNT 65 Conta inválida. ERRTRADETIMEOUT 128 Tempo de espera. ERRINVALIDPRICE 129 Preço inválido. ERRINVALIDSTOPS 130 Paradas inválidas. Volume de negócios inválido. ERRMARKETCLOSED 132 O mercado está fechado. ERRTRADEDISABLED 133 O comércio está desativado. ERRNOTENOUGHMONEY 134 Não há dinheiro suficiente. ERRPRICECHANGED 135 Preço alterado. ERROFFQUOTES 136 Fora das aspas. Broker está ocupado. ERRREQUOTE 138 Requote. ERRORDERLOCKED 139 A ordem está bloqueada. POSIÇÕES ERRADASONLYALLOWED 140 As posições longas só são permitidas. ERRTOOMANYREQUESTS 141 Demasiados pedidos. ERRTRADEMODIFYDENIED 145 Modificação negada por ordem muito próxima do mercado. ERRTRADECONTEXTBUSY 146 O contexto comercial está ocupado. As expirações são negadas pelo corretor. O montante das encomendas pendentes e pendentes atingiu o limite fixado pelo corretor. StopLossLevel NormalizeDouble (Low, Dígitos) CalcStopLossPips (MathAbs (Bid StopLossLevel)) / pp if (UseTakeProfit) TakeProfitLevel NormalizeDouble (Bid - TakeProfitSell Point, :, DoubleToStr (TakeProfitLevel, Dígitos)) OrderSend (Símbolo (), OPSELL, lotsForOrder, NormalizeDouble (Bid, Dígitos), Slippage, NormalizeDouble (Bid (CalcStopLossPips Point), Dígitos) , NormalizeDouble (TakeProfitLevel, Dígitos), Sell (InternalMagicNumber), InternalMagicNumber, 0, DeepPink) OrderSend int OrderSend (símbolo de cadeia // símbolo int cmd // operação volume duplo // volume duplo preço // preço int deslizamento. / / Slap double stoploss // stop loss dupla takeprofit // take profit string comentárioNULL // comentário int magic0. // número mágico datetime expiration0. // pendente ordem expiration cor arrowcolorclrNONE // color) em Symbol para negociação. Em Tipo de operação. Pode ser qualquer uma das enumerações da Operação Comercial. Em Número de lotes. Em Deslizamento de preço máximo para ordens de compra ou venda. No nível Stop loss. Em Take nível de lucro. No texto do comentário da ordem. A última parte do comentário pode ser alterada pelo servidor. Em ordem número mágico. Pode ser usado como identificador definido pelo usuário. Na hora de expiração da Ordem (somente para pedidos pendentes). Em Cor da seta de abertura no gráfico. Se o parâmetro estiver ausente ou se a seta de abertura do valor CLRNONE não estiver desenhada no gráfico. Retorna o número do ticket atribuído ao pedido pelo servidor comercial ou -1 se ele falhar. Para obter informações de erro adicionais, tem de chamar a função GetLastError (). Na abertura de uma ordem de mercado (OPSELL ou OPBUY), somente os preços mais recentes de Oferta (para venda) ou de Pedir (para compra) podem ser usados ​​como preço aberto. Se a operação é executada com uma segurança diferente da corrente, a função MarketInfo () deve ser usada com o parâmetro MODEBID ou MODEASK para obter as cotações mais recentes para essa segurança. Preço calculado ou não-normalizado não pode ser aplicado. Se não houver o preço aberto solicitado no segmento de preços ou não tiver sido normalizado de acordo com a quantidade de dígitos após o ponto decimal, o erro 129 (ERRINVALIDPRICE) será gerado. Se o preço aberto solicitado estiver totalmente desatualizado, o erro 138 (ERRREQUOTE) será gerado independentemente no parâmetro slippage. Se o preço solicitado estiver desatualizado, mas presente no segmento, a ordem será aberta ao preço atual e somente se o preço atual estiver dentro do intervalo de desvio de preço. Os níveis de StopLoss e TakeProfit não podem estar muito próximos do mercado. A distância mínima de níveis de parada em pontos pode ser obtida usando a função MarketInfo () com o parâmetro MODESTOPLEVEL. No caso de níveis de paragem erróneo ou não normalizado, o erro 130 (ERRINVALIDSTOPS) será gerado. Um valor zero de MODESTOPLEVEL significa ausência de quaisquer restrições na distância mínima para Stop Loss / Take Profit ou o fato de que um servidor comercial utiliza alguns mecanismos externos para controle de nível dinâmico, que não podem ser traduzidos no terminal cliente. No segundo caso, GetLastError () pode retornar o erro 130, porque MODESTOPLEVEL é realmente quotfloatingquot aqui. Na colocação de uma ordem pendente, o preço aberto não pode ser muito próximo ao mercado. A distância mínima do preço pendente do mercado atual em pontos pode ser obtida usando a função MarketInfo () com o parâmetro MODESTOPLEVEL. Em caso de preço aberto falso de uma ordem pendente, o erro 130 (ERRINVALIDSTOPS) será gerado. A aplicação do tempo de expiração da ordem pendente pode ser desativada em alguns servidores comerciais. Neste caso, quando um valor diferente de zero é especificado no parâmetro expiration, o erro 147 (ERRTRADEEXPIRATIONDENIED) será gerado. Em alguns servidores comerciais, o montante total de pedidos abertos e pendentes pode ser limitado. Se este limite tiver sido excedido, nenhuma nova ordem será aberta (ou nenhuma ordem pendente será colocada) eo servidor de comércio retornará o erro 148 (ERRTRADETOOMANYORDERS). // ------------------------------------------------ ------------------ // Função de início do programa de script // ------------------------ ------------------------------------------ void OnStart () // - - obter o nível mínimo de stop duplo minstoplevel MarketInfo (Symbol (), MODESTOPLEVEL) Imprimir (quotMinimum Stop Levelquot, minstoplevel, quot pointsquot) preço duplo Ask // --- calculado SL e TP preços devem ser normalizados double stoploss NormalizeDouble (Bid - minstoplevel Point (Digite) Digite o valor de mercado para comprar 1 lote int ticket OrderSend (Símbolo (), OPBUY, 1, preço, 3, stoploss, takeprofit, quotMy orderquot, 16384, 0, clrGreen) if (ticketlt0) Imprimir (quotOrderSend falhou com erro quot. GetLastError ()) else Imprimir (quotOrderSend colocado successfullyquot) // --- Forex Blog OrderSend Erro 130 O que fazer 6 de outubro de 2008 (Última atualização em 23 de abril , 2017) por Andriy Moraru Os consultores especializados que trabalham em um corretor pode parar de trabalhar em outro o problema com eles muitas vezes está em OrderSend Error 130. Se você ver o erro 130 no Log de sua plataforma MetaTrader quando seu consultor especialista deve abrir um Posição, então isso significa que os níveis stop-loss ou take-profit são ajustados para perto do preço de mercado atual. Na documentação MQL esse erro é chamado ERRINVALIDSTOPS (laquoInvalid stopsraquo). Alguns corretor de Forex definir a distância mínima entre o preço atual e os níveis stop-loss / take-profit para evitar scalping ou abusar dos atrasos citação. Isso não é um problema real para a maioria dos consultores especializados que não usam scalping. Para impedir que este erro ocorra, é necessário alterar o código expert146s. Em primeiro lugar, você pode querer saber qual é o mínimo nível que está definido em seu servidor MetaTrader broker146s. Adicionando esta linha de código irá produzir o nível mínimo atual para o par de moedas do gráfico, onde você executa o EA: Print (MarketInfo (Symbol () MODESTOPLEVEL) Você não deve usar stop-loss ou take-profit nível, que Estão mais perto do que MarketInfo (Symbol (), MODESTOPLEVEL) para o preço de mercado atual. Se o seu EA calcula paradas e toma-lucros dinamicamente, isso é o que eu sugiro que você faça: Declare uma variável global para o StopLevel mínimo, por exemplo: int StopLevel Na função init () de seu consultor especialista definir o StopLevel mínimo: StopLevel MarketInfo Symbol (), MODESTOPLEVEL) MarketInfo (Symbol (), MODESPREAD) Observe que a adição de uma diferença de propagação também é necessária. A próxima vez que seu stop-loss ou take-profit for calculado, basta verificar se eles não são inferiores a StopLevel: se StopLoss StopLevel StopLose StopLevel TakeProfit StopLevel Não se esqueça de atualizar as taxas de mercado atuais com RefreshRates () Antes de adicionar os níveis stop-loss / take-profits às taxas reais do mercado. Isso deve ajudar na maioria dos casos. Pelo menos, para mim essa manipulação do OrderSend Error 130 sempre funcionou. Update 2017-12-15: Alguns corretores (ECN ones) don8217t permitir peritos conselheiros para definir stop-loss ou take-profit nível na função OrderSend (), mesmo se it8217s maior do que o seu MODESTOPLEVEL. Neste caso, você terá que mudar seu EA para enviar ordens sem SL e TP e então usar a função OrderModify () para definir stop-loss e take-profit na posição aberta. Se você tiver dúvidas ou sugestões sobre o problema OrderSend Error 130 com consultores especializados, não hesite em responder usando o formulário abaixo. Posts relacionados: 64 Responses to 8220OrderSend Error 130 O que fazer8221 khan Responder: 16 de agosto de 2017 às 5:04 pm Eu continuo recebendo esse erro não parar. Minha função ordersend () é a seguinte: currentOrder OrderSend (currenciesi, OPSELL, 0.1, Bid, 3, Licitante MarketInfo (currenciesi, MODESPREAD)) 0.0001, Bid - (MarketInfo (currenciesi, MODESTOPLEVEL) MarketInfo O material na perda de stop e tomar áreas de lucro foram coisas que a internet me disse para fazer, mas ainda assim ele não funciona. Por favor, ajude Talvez, você está tentando que em ECN conta, onde a colocação de ordens com SL e TP é proibido Nesse caso, você tem que enviar primeiro uma ordem sem SL / TP e, em seguida, modificá-lo para adicionar SL / TP. Khan Responder: 18 de agosto de 2017 às 11:27 pm Você pode me dizer o que eu tenho que colocar em stoploss se eu quiser defini-lo a 5 pips. E takeprofit a dez pips para ambos os negócios de compra e venda Obrigado por responder ao post original. Comprar negociar: Pergunte 8211 5 ponto Pergunte a 10 pontos Venda comércios: Oferta 5 ponto Pergunte 8211 Ponto 10 8220A algum corretor de Forex ajustou a distância mínima entre o preço atual e os níveis de stop-loss / take-profit para evitar scalping ou abusar dos atrasos de cotação. 8221 Qual é a razão para o corretor fazer isso se você pode parar loos à mão Porque it8217s quase impossível de constantemente abusar do baixo stop-loss manualmente. Os abusadores reais criam EAs que fazem isso. Oi, Obrigado pela info 8211, mas eu tenho uma pergunta que eu espero que você possa ajudar. Meu EA coloca pedidos pendentes, com TP e SL colocados entre 25 e 50 pips de aberto. De vez em quando eu recebo o erro 130, eu presumo porque o SL está perto do preço atual. Certamente o erro só deve ocorrer quando SL está muito perto do preço de abertura, NÃO o preço atual em um comércio pendente. Ajustar o SL muito vai mudar a natureza do comércio 8211 quaisquer idéias para este. BTW Estou usando Alpari UK. Obrigado Richard Eu não tenho certeza, mas eu acredito que it8217s não porque SL ou TP estão perto do preço atual, mas porque o seu preço de abertura na ordem pendente é muito perto da corrente. Outro problema atual lida com Execução de Mercado vs Execução Instantânea. Um deles é MM com execução instantânea e o outro não está lidando com Execução de Mercado. Execução de mercado que é feito por STP e ECN não pode enviar TP e SL junto com a ordem. Você tem que modificar a ordem e, em seguida, definir o TP e SL. Por que você acha isso Mark Resposta: 2 de março de 2010 às 12:57 pm Pode ser muito pouco deslizamento é a causa do erro de 130 Como é deslocamento calcolated, e. Deslize é 3. O que é 3, e. Preço 1.1111 3 1.1114 é permitido ou 1.11111 3 1.11114 é permitido Se 3 pips são normais ou fracionários depende da implementação particular de EA, mas o OrderSend Error 130 não tem nada a ver com deslize, mas sim com a taxa de SL, TP ou uma ordem pendente 8217s aberta preço. 130. E parabns por ajudar e esclarecer os nefitos de EA. Gostei da simplicidade da explanação. I allways got orderend erro 130 é muito rentável scalper mq4 você pode por favor corrigir esta ordem enviar erro eu posso mail youUsing a função MQL4 OrderModify MQL4 para Beginners Tutorial Parte completa 82208221Note que neste curso de iniciantes não vamos trabalhar com pedidos pendentes. Se você quiser saber mais sobre ordens pendentes (como Buy-Limit, Sell-Limit, Buy-Stop e Sell-Stop), então olhe para o meu curso premium Algorithmic Trading For Success.82218221 Eu exatamente nees esta parte, como posso comprar Este curso premium estou atualmente trabalhando no Algorithmic Trading For Success curso. Existe algum tópico específico que você gostaria que eu cobrir em relação ao Buy / Sell-Limit e compra / Sell-Stop ordens Oi Kirill Eu preciso de tal coisa: primeiro vou abrir uma ordem de venda ou compra (execução do mercado) vamos dizer com tp10 Pips e sl20 pips, então eu preciso de um especialista para fazer um algoritmo como este: assim como eu abri minha primeira ordem manualmente o especialista deve abrir um. Stop ordem apenas no meio da primeira ordem e seu SL, por exemplo, se a minha primeira ordem foi comprar, tp10, sl20, o especialista deve abrir uma ordem pendente 10 pips abaixo da primeira posição na forma de vender stop com TP igual ao primeiro Ordem SL, Sltp da primeira ordem. Quando a segunda ordem foi executada o perito deve repetir a primeira ordem com o mesmo tp e sl, mas em forma de por stop. E este processo continuará até que todas as ordens sejam atingidas pelo mercado

Comments