Códigos de mensagens de erro do Advisor Especial no gráfico.
Todos os Expert Advisors criados pela EA Coder exibem um código de mensagem de erro especial nos gráficos MT4 quando ocorre um erro durante a fase de abertura, fechamento ou modificação de um pedido. Se você vir uma mensagem como 'oe131' no seu gráfico quando um novo comércio deveria ser aberto, você saberá que ocorreu um erro.
Tipos de códigos de mensagens de erro.
Os códigos de mensagens de erro sempre começam com duas letras seguidas de um número de código de erro. Os códigos de erro que uso são os mesmos que os usados na linguagem de programação MQL4 e são explicados em detalhes na página de documentação MQL4.
Quando ocorre um erro durante o comércio aberto.
Pegue o nosso exemplo anterior, oe131. Agora sabemos que isso indica um erro durante uma troca aberta, com o código 131. Se você olhar para a lista completa de descrições de código de erro, este significa & # 8220; volume de comércio inválido & # 8221 ;, que nos alerta para verificar as configurações de gerenciamento de dinheiro que definimos para o Consultor Especializado. Este tipo de erro aparece quando um tamanho muito grande é zero, se é muito pequeno ou se é muito grande, porque todos os corretores possuem limitações de tamanho de lote. Alguns não permitem que o tamanho do lote seja menor do que 0,1 enquanto outros permitem tamanhos de lotes tão baixos quanto 0,01. Isso varia entre diferentes corretores e diferentes tipos de contas.
Normalmente, os consultores especializados da EA Coder corrigem o tamanho do lote de acordo com as limitações do corretor, mas exceções podem ser aplicadas porque nem todos os corretores relatam os valores de limitação corretos para as EAs. Um exemplo disto é um corretor informando que o tamanho do lote mínimo permitido é de 0,01 enquanto na realidade ele é realmente 0,1. Em um caso como este, se você definir o EA para usar um tamanho muito grande entre 0,01 e 0,09, ele não conseguirá fazer pedidos, pois não poderá consertar o tamanho do lote devido ao fato de ele ser denunciado incorretamente. Então você receberá a mensagem de erro do e131 impressa no gráfico.
Outro exemplo seria obter o erro do e133. Isso é como o & # 8220; Trade is disabled & # 8221; e isso significa que o corretor não permite trocar esse par. Se esse erro aparecer mesmo quando o cliente tenta abrir o comércio manualmente no mesmo gráfico, então o MT4 EA deve ser anexado a um par semelhante com o sufixo. Por exemplo, se você receber esse erro no EURUSD, procure o nome do par, como EURUSD m ou EURUSD FXF.
Se você conseguir abrir negociações manualmente no mesmo par, pode ser que seu corretor não permita o uso de robôs comerciais (EA & # 8217; s) nesse par ou conta. Entre em contato com eles para obter mais informações.
Erros comerciais de comércio aberto:
128 & # 8211; Tempo limite comercial. 129 & # 8211; Preço inválido. 130 & # 8211; Paradas inválidas. 131 & # 8211; Volume de comércio inválido. 133 & # 8211; O comércio está desabilitado. 134 & # 8211; Dinheiro insuficiente. 146 & # 8211; O contexto comercial está ocupado.
Quando ocorre um erro durante a modificação da ordem.
Vamos dar uma olhada em outro erro comum que você pode receber. Seria impresso no seu gráfico como me130, que significa "# 8220; modifique o erro 130 e # 8221; e significa "# inválido pára" # 8221 ;. Isso nos diz que a perda de parada e / ou os valores de lucro são incorretos ou muito próximos do preço atual do mercado. A distância mínima entre os preços de mercado e de parada é chamada de limitação de StopLevel; esse valor simplesmente diz à EA que tamanho em pips a limitação é. Em corretores de 5 dígitos, isso é relatado como pontos e deve ser convertido em pips. No entanto, isso é algo sobre o qual o usuário não precisa se preocupar, porque o EA Coder Expert Advisors lida com essas coisas automaticamente. Mas se você receber um erro me130, certifique-se de verificar os valores de TP e SL que você está usando.
Erros comuns de modificação do comércio:
128 & # 8211; Tempo limite comercial. 130 & # 8211; Paradas inválidas. 146 & # 8211; O contexto comercial está ocupado.
Quando ocorre um erro durante o fechamento comercial.
Você pode obter um erro ce146 quando a EA tentar fechar um pedido. Isso indica que um erro de & # 8220; fechar & # 8221; ocorreu cujo código é 146. Isso significa "contexto comercial ocupado" # 8221; e é um erro muito comum, especialmente em terminais MT4 mais antigos, quando você possui vários Expert Advisors anexados. Os robôs EA Coder possuem um mecanismo inteligente de gerenciamento de erros incorporado e fará o melhor para evitar o contexto comercial ocupado e # 8221; erros mesmo se você tiver vários robôs operando em sua conta. Mas no caso de você obter um desses erros, apenas tente minimizar o número de EAs executados na mesma conta ou configure-os para evitar operações de negociação ao mesmo tempo, se isso for possível com a EA.
Erros de fechamento do comércio comum:
128 & # 8211; Tempo limite comercial. 146 & # 8211; O contexto comercial está ocupado.
Atraso das operações de negociação.
A EA pode precisar atrasar uma operação comercial para evitar interromper as regras de programação MQL quando ocorrer um erro. Ele repetirá a mesma operação de negociação, se necessário, e terá que esperar em algum lugar entre 1 a 5 segundos entre cada tentativa. Estas são regras muito lógicas da programação da Metatrader e os robôs de negociação da EA Coder obedecem a elas. Veja a lista completa de erros de execução.
Caso haja um atraso na realização de uma operação de negociação (seja abrir, modificar ou fechar um comércio), a EA imprimirá uma pequena imagem do relógio no gráfico. Isso indica que houve algum tipo de erro e a EA teve que atrasar sua operação por alguns segundos para obedecer as regras e não sobrecarregar os servidores dos corretores.
Guia de especialistas no terminal MT4.
Quando ocorrer algum erro, o EA imprimirá uma mensagem de erro mais detalhada na guia de especialistas na parte inferior do terminal MT4. Você pode alternar para essa guia a qualquer momento e se deslocar para baixo para ver uma lista completa de erros, avisos e mensagens informativas. Isso pode ajudar a resolver uma série de problemas rapidamente, mesmo que você não tenha muita experiência em usar a plataforma MT4 e Expert Advisors ou indicadores personalizados.
Abrindo a pasta de arquivos de log diretamente de um terminal MT4.
Quando você está visualizando a guia Peritos pode clicar com o botão direito do mouse em qualquer lugar dessa área e escolher & # 8220; Abrir & # 8221 ;. Isso abrirá a pasta de arquivos de log para você. Esta pasta contém arquivos com as mesmas mensagens que você vê na guia Peritos, mas daqui você pode acessar mensagens de dias e semanas anteriores. Além disso, as mensagens nos arquivos de log são apresentadas em seu formato completo e não são cortadas como algumas das mensagens mostradas na guia Especialistas quando são muito longas.
Relatar um erro para o EA Coder.
Quando você precisa denunciar um erro ao EA Coder, descreva o problema que você está tendo em detalhes, inclua os números comerciais com os quais você está tendo problemas e certifique-se de anexar os arquivos necessários. É muito importante que você envie os arquivos de log da \ MT4-pasta \ experts \ logs \ para que eu possa investigar um erro. Além disso, inclua capturas de tela do gráfico onde EA está sendo executada e, se possível, verifique se o problema está visível na imagem. Isso nos ajudará a fornecer mais suporte útil.
Você pode notar que sua pasta de arquivos de log está vazia ou não possui arquivos de log recentes (o nome do arquivo indica a data em que foram criados). Neste caso, execute as etapas descritas acima, que detalham como abrir a pasta de arquivos de log diretamente da guia de especialistas na parte inferior do seu terminal MT4.
Antes de relatar um problema ou solicitar suporte para saber como funciona um recurso EA, consulte o manual de instruções. Isso pode ajudá-lo a resolver seu problema mais rapidamente e você também aprenderá a usar o aplicativo melhor.
Rotulagem de pedidos durante o backtest da EA.
Nossos consultores especializados possuem um mecanismo especial de rotulagem de pedidos incorporado. Ele é ativado quando você executa EA no Strategy Tester do seu MT4 e criará números de rótulos para cada pedido que seja colocado durante um backtest. Isso ajuda a rastrear seus negócios de forma fácil, pois você verá os números de ordem acima de cada troca no gráfico.
Publicações relacionadas:
Sobre o autor.
Primeiro eu sou pai, marido e depois o autor do livro "Como começar seu próprio serviço de sinais de Forex". Eu também sou um comerciante de Forex, um programador, um empresário e o fundador do e-codeer Forex blog. Criei duas das copiadoras comerciais mais populares e outras ferramentas de negociação para MT4 que já são usadas em todo o mundo por centenas de comerciantes de moeda.
4 Comentários.
meu fxopen mt4 forex está relatando a voltagem inválida. Eu tento todo o altifalante e abra o maior saldo de demonstração, mas a mesma mensagem continua no relatório. porque?
minha plataforma MFIforex ainda mt4 recusou-se a atualizar ou conectar-se à rede. O que posso fazer, vou abrir uma conta ao vivo depois deste teste executando esta demo, mas agora estou a ser desalentado.
é realmente difícil resolver seu problema quando não sei se você está usando a EA criada por mim ou por outra pessoa.
No entanto, acho que você tem esse problema quando a EA não prepara o tamanho certo do lote. Por exemplo, se o seu EA usar o tamanho do lote de 0,15 e seu corretor permite tamanhos de lotes apenas por incrementos de 0,1, você obterá # # 8220; volume inválido & # 8221; erro. Neste caso, você pode usar tamanhos de lotes como este 0.1, 0.2, 0.3, 0.4, etc.
Se o seu corretor permite tamanhos de lotes por incrementos de 0,01, então o tamanho de 0,15 lotes deve funcionar bem se houver dinheiro suficiente em sua conta.
Todos EA & # 8217; s que eu crie automaticamente detectem essas configurações do corretor e preparo o tamanho do lote evitam esse erro.
Você pode querer dar uma olhada no & # 8220? Especialistas & # 8221; guia ou arquivos de log para mais mensagens de erro. Talvez haja uma explicação do tamanho exato do tamanho impresso depois que ele foi rejeitado pelo corretor.
Espero que isto ajude.
Oi, obrigado pela ajuda.
No diário do consultor especialista, diz: tentando fechar a posição curta, no entanto, não há uma posição curta aberta. como resolver isso?
Caro Willy, você precisa entrar em contato com o criador da EA para obter uma resposta a esta pergunta. Se sou eu, entre em contato comigo aqui.
Mas esta mensagem parece que você pode ignorá-la. EA provavelmente tem uma regra para fechar todas as negociações e simplesmente verifica para fechar trocas curtas quando ele dá essa mensagem. Se houver algum negócio curto, a EA deve fechá-los, se não houver negócios, ele simplesmente não faz nada.
Saudações, Rimantas Petrauskas.
Cancelar resposta.
Inscreva-se para obter mais conhecimentos MT4.
Digite seu nome real e o melhor endereço de e-mail abaixo para se inscrever no meu boletim informativo. Seja o primeiro a receber meus novos tutoriais e artigos MT4.
Se você não pode ver o formulário de registro, ele deve estar oculto pela AdBlock e você terá que desativá-lo primeiro para este site.
P. S. Eu também enviarei uma cópia gratuita do meu eBook com conteúdo cheio (valor de US $ 19) que irá ensinar você a identificar fraudes Forex.
Siga-me no facebook.
Posts mais populares.
Rimantas Petrauskas é o autor, comerciante, programador, empresário, pai e marido de Forex. Ele criou software para troca de moeda e entrega de sinal desde 2009 e criou centenas de robôs comerciais para seus clientes. Ele acredita firmemente que, com uma Atitude Mental Positiva, podemos alcançar qualquer objetivo.
Forex Trading com Metatrader.
Creazione di expert adviser, script ed indicador de metatrader per il trading automatico nel mercato do forex.
lunedi 20 giugno 2018.
Metatrader: orderSend error 130.
se (OrderSelect (v_ticket, SELECT_BY_TICKET, MODE_TRADES)) Imprimir ("COMPRAR ordem aberta:", OrderOpenPrice ());
else Print ("Erro ao abrir a ordem BUY:", GetLastError ());
Gli errori sollevati um run-time da metatrader possono essere visualizzati:
sul diario se stiamo eseguendo un backtest sulla casella consiglieri se stiamo utilizando a unidade na demo o con denaro reale.
E 'possibile visualizar a lista completa degli errori de metatrader ao seguente link:
dal codice che abbiamo implementato dal broker e dal tipo di conto (demo / reale) dal cross su cui effettuiamo le nostre operazioni.
Em questo articolo voglio approfondire l'errore 130 che, secondo la guida significa "Invalid Stops". Questo errore vem restituto, geralmente, quando você está interessado em comprar um seguro, tropezando com um trovão com uma vantagem de abertura, i broker infatti hanno delle limitazioni e não consentimento de inserir parar e tirar proveito troppo vicini al prezzo.
6 commenti:
Ciao a tutti! Riguardo lança desconhecidos 130 volevo segnalare un problema che sto riscontrando con il test di un EA. Facendo il backtest infatti l & # 39; EA funziona correttamente e não restituisce nessun messaggio di errore. Se invece lo faccio lavorare em tempo real, quando é que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é o que é praticamente o que é o que é o SL e TP molto larghi. Ho pensato che poteva essere un problema di cifre decimali, ma nell & # 39; EA ho inserito il controllo por normalizzare il valore dei pip anche in caso di 5 cifre decimali. Inoltre se fosse un problema di pips non dovrebbe segnalarlo anche durante il backtest?
Ciao Carlo. A dire il vero non ho avuto il tempo de provador com altri broker, lo faccio lunedi. Cmq il codice e semplicissimo, il controllo dei pips l e n. ° preso da uno dei tuoi EA. Ecco qui le parti fondamentali:
se (Ponto == 0.00001) Poin = 0.0001;
se (Ponto == 0,001) Poin = 0,01;
else Poin = Point;
se (TakeProfit & lt; StopLevel) TakeProfit = StopLevel;
Imprimir ("Aperto Ordine Buy:", OrderOpenPrice ());
else Print (& quot; Errore nell apertura dell ordine Comprar: & quot ;, GetLastError ());
Imprimir ("Aperto Ordine Sell", OrderOpenPrice ());
else Print ("Errore nell apertura dell ordine Sell: & quot ;, GetLastError ());
Ciao Carlo, hai avuto modo di dare un sguardo al codice? Veja como você é um dos melhores da Disney e da Disney! Não é capaz, venha mai, eppure il broker su cui non funziona l & # 39; EA e quello che consente SL e TP piu bassi. Eppure il backtest a essegue correttamente!
Dovresti capire se il broker in cui non funziona e un ECN, em questo caso non puoi inviare gli ordini direttamente con lo stoploss ma devi aprirli senza e poi modifyli.
Caspita! e proprio cosi! e un ECN ma non sapevo che avessero questa particolarita. Ora e chiaro, infatti se non insertisco SL e TP apre gli ordini. Grazie Carlo i tuoi suggerimenti sono semper preziosi :-)
Erro # 130 - Paradas inválidas.
Alguém pode me ajudar com esse erro?
Estou enviando uma Ordem usando este comando: Ticket = OrderSend (Symbol (), OP_BUY, 1, Ask, 3, 30, 30, & quot; Buy_Order & quot ;, 0, 0, Green);
Eu quero comprar um lote e definir StopLoss e TakeProfit para 30 pips e estou recebendo o erro # 130 - Paradas inválidas.
Eu tenho uma conta demo AlpariUK e estou tentando em par EURUSD com o seguinte MarketInfo:
Obrigado por qualquer ajuda.
Stoploss e TakeProfit precisam ser um preço, não um número inteiro de pips.
Stoploss e TakeProfit precisam ser um preço, não um número inteiro de pips.
Eu tenho o mesmo problema com parar na minha EA, as Variáveis são as seguintes:
Mas recebo sempre o erro 130 para Stoplos, mesmo que eu estabeleça um Stoplos a partir de zero 0 do que ele funciona, mas onde é o erro, uso valores duplos ou não :-)?
Você deve converter seu stoploss para um preço.
Você deve converter seu stoploss para um preço.
Sim, isso é certo, então isso funciona, obrigado.
Você deve converter seu stoploss para um preço.
Estou recebendo o mesmo erro com os seguintes trechos de código. Eu simplesmente não consigo ver por que meu código está se comportando dessa maneira, mas talvez você ou alguma outra pessoa ligada possa detectar o que eu perdi.
Aqui está o trecho ofensivo do código.
e aqui está o resultado do rastreamento que mostra as entradas para o erro e o próprio código de erro. Alguma idéia do que eu tenho errado aqui?
Estou recebendo o mesmo erro com os seguintes trechos de código. Eu simplesmente não consigo ver por que meu código está se comportando dessa maneira, mas talvez você ou alguma outra pessoa ligada possa detectar o que eu perdi.
Aqui está o trecho ofensivo do código.
e aqui está o resultado do rastreamento que mostra as entradas para o erro e o próprio código de erro. Alguma idéia do que eu tenho errado aqui?
Procure por NormalizeDouble () na Documentação!
Procure por NormalizeDouble () na Documentação!
Parece improvável que seja a resposta. Não é como se os preços estejam 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 lembrar que existe uma nova razão para o erro # 130, que (eu acho) surgiu desde as postagens originais neste tópico em 2008. Se seu corretor usa algo como a Boston Technologies Bridge, então o s / l e t / p devem ser colocados separadamente de uma ordem de mercado e (eu acho) você obtém o erro # 130 se você tentar fazer s / l e t / p como parte do pedido de mercado.
Em outras palavras, tente colocar apenas a ordem de compra por si só e, em seguida, faça um OrderModify () para colocar no s / l e t / p.
Parece improvável que seja a resposta. Não é como se os preços estejam 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 lembrar que existe uma nova razão para o erro # 130, que (eu acho) surgiu desde as postagens originais neste tópico em 2008. Se seu corretor usa algo como a Boston Technologies Bridge, então o s / l e t / p devem ser colocados separadamente de uma ordem de mercado e (eu acho) você obtém o erro # 130 se você tentar fazer s / l e t / p como parte do pedido de mercado.
Em outras palavras, tente colocar apenas a ordem de compra por si só e, em seguida, faça um OrderModify () para colocar no s / l e t / p.
extern double LotSize = 0,1;
external double LotIncrement = 0,1;
Extern Double TakeProfitPip = 10;
external double StopLossPip = 21;
se (Multiplicador == 1)
Lots = NormalizeDouble (LotSize, 2);
Lots = NormalizeDouble (LotSize, 2);
se (TakeProfitPip! = 0) xTp = Ask + (TakeProfitPip * Point);
OrderSend (Symbol (), OP_BUY, Lots, Ask, Slippage, Bid + (StopLossPip * Point), Ask + (TakeProfitPip * Point), TradeComment, Reference, Green);
Escreva ("Erro ao abrir a ordem BUY:" + ErrorDescription (Error) + "(C & quot; + Error + & quot;) Pergunte: & quot; + Ask + & quot; Slippage: & quot; + Slippage);
se (Multiplicador == 1)
Lots = NormalizeDouble (LotSize, 2);
Lots = NormalizeDouble (LotSize, 2);
se (TakeProfitPip! = 0) xTp = Bid - (TakeProfitPip * Point);
Escreva ("Erro ao abrir a ordem de VENDA:" + ErrorDescription (Error) + "(D & quot; + Error + & quot;) lance: & quot; + Bid + & quot; Slippage: & quot; + Slippage);
Eu acredito que posso confirmar isso por exemplo. Alpari Micro Account (tem que ser uma conta "quatual em tempo real"), você precisa fazer OrderSend com zero SL e TP e, em seguida, imediatamente, modifique a ordem com o SL e TP necessários para que ele funcione. Eu faço um OrderSelect diretamente depois para que eu possa usar OrderOpenPrice () como o preço aberto na lista de parâmetros OrderModify.
Foi o que eu mudei no meu código e parece funcionar agora.
Eu acho que tive o mesmo problema com o comerciante do Eixo, então talvez eu tente novamente novamente.
A única coisa que fiz foi certificar-se de que, quando enviei o OrderSend, havia um número mágico não zero sobre ele.
ordenar erro 130.
Olá. Acabei de atualizar do MT4 build201 para o MT4 build207. Uma EA mina que costumava funcionar bem com build201 começou a me dar mensagens de erro repetidas: ordermodify error 130. Eu não fiz nenhuma modificação na EA, e a mesma EA quando voltou para build201 trabalhou sem mensagem de erro. abaixo está a função relacionada que vem causando a mensagem de erro. (a variável newSL é normalizada).
Este código é muito simples e direto. Eu verifiquei novamente e novamente, mas não consegui descobrir o que está causando as mensagens de erro. alguém poderia ver alguma luz sobre isso?
int ModifySL (double newSL)
se (OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
se (OrderType () == OP_BUY & amp; amp; OrderSymbol () == Symbol () & amp; & amp; OrderMagicNumber () == magic_base)
se (newSL & gt; 0.0 & amp; amp; & amp; (OrderStopLoss () & lt; = 0. 0 || OrderStopLoss () & lt; newSL))
OrderModify (OrderTicket (), OrderOpenPrice (), newSL, OrderTakeProfit (), 0, clr_modify);
se (OrderType () == OP_SELL & amp; & amp; OrderSymbol () == Symbol () & amp; & amp; OrderMagicNumber () == magic_base)
se (newSL & gt; 0.0 & amp; & amp; (OrderStopLoss () & lt; = 0. 0 || OrderStopLoss () & gt; newSL))
OrderModify (OrderTicket (), OrderOpenPrice (), newSL, OrderTakeProfit (), 0, clr_modify);
Ok, aqui está a função na minha EA que chama a função ModifySL acima () e passa a variável newSL para ela.
int precision = MarketInfo (Symbol (), MODE_DIGITS);
// ---- verifique o sinal longo.
longEntry = NormalizeDouble (High [1] + (Filter + Spread) * Point, precision); // esta linha de código calcula o preço de entrada para um sinal longo. se, ao mesmo tempo, uma posição curta estiver presente, o preço de entrada longo também se torna o.
novo passo para a entrada curta.
// ---- verifique o sinal curto.
shortEntry = NormalizeDouble (Low [1] - Filter * Point, precision);
else ModifySL (longEntry); // isso exige a função ModifySL () acima e passa a variável longEntry como o novo stoploss para posições curtas existentes.
// ---- enviar sinal para passar por muito tempo.
// ---- enviar um sinal para ficar curto.
// ---- enviar sinal para não fazer nada.
No meu melhor conhecimento, não consegui ver nada de errado com esta função. para não mencionar que funciona bem com o MT4 build201. isso sugere que pode haver um bug com a versão mais recente do MT4?
oh, btw, as variáveis na função GetOpenSignal () que não são declaradas localmente são todas variáveis globais.
E também, quando faço backtesting, sempre uso o método Open Prices Only.
Como vencer o Ordersend Error 130 no MetaTrader 4.
Pela demanda popular, estratégias comprovadas sobre como vencer o pesadelo de todos os comerciantes algorítmicos & # 8217; # 8217; Erro 130.
De onde vem esse erro? O que significa para o seu consultor especialista? Como você pode encontrar a parte do seu código que está causando o erro? Nós abordamos tudo isso e mais & # 8230;
Para começar, uma definição formal do nosso amigo, Documentação MQL4:
Isso é certo! Isso é tudo o que você obtém do MetaQuotes. E o resto & # 8230; Vai saber!
Ordersend O erro 130 é mencionado brevemente em outras seções da documentação. No entanto, não há um guia completo para o que # 8220; Invalid Stops & # 8221; realmente significa e como lidar com isso, talvez, o problema mais comum na programação de Forex.
Mas não é uma preocupação! É por isso que escrevi este artigo. Deixe-se passar por isso juntos!
O assassino silencioso.
Então, & # 8230; você lançou seu consultor especialista e # 8230; nada acontece. Não COMPRAR pedidos, sem encomendas, sem pedidos pendentes, nem mesmo mensagens de erro nos logs & # 8230 ;. Apenas silêncio. Você decide esperar algumas horas / dias / semanas, e nada realmente muda & # 8211; as tabelas vão para cima e para baixo, mas você não vê nenhum lucro. Isso pode continuar para sempre # 8230;
A verdadeira razão é simples & # 8211; Você realmente está recebendo ERR_INVALID_STOPS (qual é o termo técnico correto para o problema), mas você não pode vê-lo. Isso é porque 130 é um assassino silencioso. Um assassino de sangue frio do seu cérebro e calma interior 🙂
Não há como extrair esse erro por meio de logs de consultores especializados ou mesmo registros de terminal. A única maneira de capturá-lo é adicionando os mecanismos de segurança corretos em seu código. Aqui, um exemplo que você pode adaptar ao seu código:
O que estamos fazendo aqui é tomar o número do ticket e que o OrderSend () retorna e verificando se ele é menor do que zero. Se sim, então é um sinal do MetaTrader 4 que nos diz que houve um problema com o pedido.
O código de erro é impresso na tela usando Alert () e a função GetLastError () incorporada. Este código dará uma janela pop-up como na imagem acima na parte superior deste artigo.
Nota: você pode usar Print () em vez de Alert () para redirecionar a mensagem diretamente para o registro EA & # 8217; s em vez de exibi-la na tela.
Core of Ordersend Erro 130.
Paradas inválidas é o nome real para o culpado com o qual estamos lidando hoje. Então, o que as paradas inválidas no MetaTrader 4 realmente significam?
Para um pedido de mercado (COMPRAR ou VENDER), as paradas inválidas significam que o StopLoss e / ou o TakeProfit que você solicitou não foram possíveis para o seu pedido. Portanto, uma vez que um pedido não pode ser preenchido apenas parcialmente, o pedido não foi executado. Para um pedido pendente (COMPRAR STOP, COMPRAR LIMITE, VENDENDO STOP ou LIMIT DE VENDA), as paradas inválidas significam que (1) houve problemas com o SL / TP (o mesmo que acima) OU (2) o problema foi com o preço de entrada que você especificou para a própria ordem.
Como podemos ver, o problema é sempre com um (ou muitos) dos preços que seu Forex Robot especificou em sua solicitação ao servidor de comércio. Agora que conhecemos o nosso inimigo # 8211; Deixe-o vencer!
1) StopLoss & amp; TakeProfit são preços.
Existem várias causas possíveis de ERR_INVALID_STOPS e uma das mais frequentes entre iniciantes é especificar o StopLoss e TakeProfit em pips em vez de níveis de preços reais. Como isso:
Esta pessoa tentou definir um StopLoss de 20 pips e um TakeProfit de 40 pips. Big NO-NO & # 8230; .. A maneira correta e única de especificar seu SL e TP é através dos níveis de preços:
A propósito, assumimos que o preço atual do ASK é 1.1606 e o preço atual do BID é 1.1605 (ou seja, 1 pip spread).
2) 4 dígitos versus 5 dígitos.
Outra razão pela qual você poderia obter ERR_INVALID_STOPS é se você estiver configurando os parâmetros de entrada de sua EA em Pips (pontos de 4 dígitos) quando o Robot está antecipando pontos de 5 dígitos. Vamos ver um exemplo:
Este código funcionará bem em um corretor de 4 dígitos, no entanto, falhará em um corretor de 5 dígitos. O motivo é que, em um corretor de 4 dígitos, Point () equivale a 0.0001, enquanto que em um ponto de correção de 5 dígitos (igual a 0,00001).
Basicamente, sem ajustes adicionais, em um corretor de 5 dígitos, a EA tentará configurar o StopLoss e TakeProfit em apenas 2 e 4 pips longe do preço da Oferta, respectivamente!
Por isso, no caso de um corretor de 5 dígitos, você deve aumentar os seus parâmetros StopLoss e TakeProfit dez vezes. Como isso:
No entanto, tenha cuidado! Alguns EA & # 8217; s já possuem módulos que detectarão o número de dígitos após o decimal e ajustarão automaticamente seus parâmetros de entrada para você. Nessas situações, multiplicar os insumos em 10 pode realmente levar a uma performance errônea.
Nota: Planejo publicar um artigo separado onde discutiremos como criar nossos próprios módulos para detectar o número de dígitos após o decimal.
3) corretores ECN.
As contas ECN têm suas próprias especificidades. Um deles é & # 8211; Ao negociar através de um corretor ECN você não poderá definir um StopLoss e / ou TakeProfit com seu Pedido de Mercado (COMPRAR ou VENDER). Se você tentar fazer isso & # 8211; você obterá o erro 130.
No entanto, é claro, você precisa definir um StopLoss (e talvez TakeProfit) para o seu pedido, e isso deve ser feito o mais rápido possível após o pedido ter sido executado. Experimente este código:
Você pode adicionar esta função ao seu código (no final) e depois usá-lo em vez de OrderSend () em seu código principal. Esta função adiciona uma etapa extra no processo de envio de um pedido de mercado.
Em primeiro lugar, ele envia o pedido para executar uma ordem de mercado retirando o StopLoss e o TakeProfit. Em seguida, ele modifica o pedido de mercado recém-aberto, adicionando o SL e o TP desejados.
Existe, é claro, o risco de a ordem ser executada, mas a modificação falhará. No entanto, nesse caso, a função notificará prontamente o comerciante de que o StopLoss e o TakeProfit não foram configurados.
Sinta-se à vontade para modificar esta função de acordo com suas necessidades e estilo de negociação.
4) Stop-Levels.
Stop-Levels é um mecanismo para que os corretores se protejam de certos riscos relacionados com a volatilidade e a liquidez. Em termos simples, você não poderá configurar seu StopLoss ou TakeProfit OU qualquer ordem pendente mais próxima do que um número predeterminado de Pips para o preço atual do mercado.
Para descobrir o que o Stop Level é para um par de moedas específico, você precisa pressionar CTRL + U no seu teclado, selecione o par de moedas desejado e clique em & # 8220; Propriedades & # 8221; como mostrado na ilustração abaixo:
Neste exemplo, Stop Level for AUDUSD é 3 Pips. Isso significa que você não poderá configurar o StopLoss para seu pedido mais próximo do que 3 Pips para o preço no qual o pedido será aberto.
Isso também significa que qualquer pedido pendente terá que ser definido pelo menos 3 Pips longe do preço atual do mercado.
Se você Robot tentar quebrar essas regras e definir um StopLoss / TakeProfit ou Pending Order dentro do intervalo Stop Level, então ele obterá Erro 130 & # 8220; Invalid Stops & # 8221 ;. Então, fique atento ao Nível de Parada da moeda onde o seu EA & # 8217; s está negociando # 8211; não especifique parâmetros de StopLoss e TakeProfit excessivamente pequenos.
Também vale a pena notar que os pares de moedas mais exóticas podem ter níveis de parada muito mais significativos. Por exemplo, para AUDNZD, o Nível de Parada com o mesmo corretor que no exemplo acima é de 20 Pips. Para GBPSEK (British Pound vs Swedish Krone) e # 8211; 100 Pips.
5) Normalização de duplas.
Com alguns corretores, você encontrará que, por uma razão desconhecida, os preços Ask e Bid são transferidos para o comerciante com dígitos insignificantes adicionais após a decimal. Por exemplo:
Em vez de 1.1606, o corretor lhe daria 1.160600001.
Agora, esse fenômeno não tem efeito sobre o comércio manual, além disso, uma vez que o terminal MT4 está conectado para exibir um certo número de dígitos após o ponto decimal (4 ou 5) e # 8211; você não poderá notar nenhuma diferença!
No entanto, estes & # 8216; insignificantes & # 8217; dígitos após o decimal podem ter um efeito dramático sobre Expert Advisors causando & # 8230; & # 8230; & # 8230; Isso é certo! Nosso velho amigo, OrderSend Error 130!
Aqui é uma estratégia que eu uso pessoalmente para proteger meus robôs desta questão:
Este pequeno truque limpo permite que você normalize (em termos simples & # 8211; Round) todos os preços que você está inserindo na função OrderSend (). Desta forma, você cortou todos os # 8216; insignificantes & # 8217; dígitos após o ponto decimal.
Conclusão.
Hoje, vimos que pode haver várias causas (pelo menos 5) para o erro 130. Embora isso seja bastante, as questões subjacentes são triviais e podem ser corrigidas em questão de minutos.
Portanto, o Erro 130 não deve ser temido! Se você encontrou este culpado, é apenas uma questão de passar pela lista acima, encontrando a situação que se aplica a você e aplicando a solução prescrita.
Espero que você tenha encontrado este artigo útil!
Deixe-me saber se você tem alguma dúvida usando a seção de comentários abaixo.
COMEÇAR COM A ADADEMIA DE NEGOCIAÇÃO FOREX.
Eu sou um comerciante de Forex, um cientista de dados, um empreendedor, um treinador online. Essas são minhas principais ocupações. Estive no Forex Trading desde 2007 e, como eles dizem, eu vi o bom, o ruim e o feio. Eu sobrevivi ao GFC e aprendi muito ao longo do caminho. Hoje eu quero compartilhar todos os meus conhecimentos e idéias com você.
Graças a Kirill, essas informações me ajudaram a resolver o erro de preço de entrada pendente.
A qualquer momento! Feliz por ajudar.
então eu entendo que você não pode definir um SL e TP para o seu pedido de mercado ao negociar com um ECN Broker.
Você pode talvez explicar o porquê? Qual é a razão pela qual você não pode fazer isso?
E por que você pode fazer isso com o resto dos corretores (Market Makers)?
Na execução do mercado (ECN), você não garante um preço certo no qual seu pedido será preenchido. O seu pedido será executado no próximo preço disponível, que pode ser de 10 pips ou mesmo 100 pips longe do que você especificou. Essa é a principal razão pela qual o SL e o TP não podem ser configurados imediatamente.
Na execução instantânea, você pode configurar o SL e o TP imediatamente porque você pode controlar a derrapagem máxima. Se o preço estiver muito longe do que você deseja, o pedido não será executado.
Espero que isto ajude,
sim, definitivamente ajudou.
Obrigado pela sua resposta e pelo link para o artigo.
As coisas são claras para mim saber.
Você pode talvez também recomendar um bom corretor que ofereça a Execução do Mercado?
Tanto quanto eu entendi, os negociantes da Dealing Desk geralmente manipulam o preço, então eles são mais perigosos do que os corretores ECN que oferecem a execução do mercado.
Estou feliz por poder ajudar! Aqui, minha revisão dos corretores de Forex:
RoboForex tem uma boa solução ECN. Além disso, estou no processo de reavaliar esta lista, então as mudanças virão em breve (provavelmente maio). Enquanto isso, sinta-se livre para participar das discussões no Fórum ForexBoat:
Ele acabou de lançar na semana passada, então não podemos prometer que você receberá uma resposta rápida. Mas com o tempo as pessoas vão compartilhar suas experiências.
O SimpleSystem v8.9 é capaz de lidar com o Erro 130 e conter todos os códigos mencionados acima?
Categorias.
Curso: Forex Trading for Beginners (3) Curso: MQL4 para Iniciantes Completos (45) Curso: Testador de Estratégia para Iniciantes (8) FOREX (6) Forex Stategy (6) Estratégia Forex (3) Forex Trading para Iniciantes (7) Forex VPS (1) Entrevistas (1) MQL4 (1) Uncategorized (18)
Postagem recente.
Tags populares.
COMEÇAR COM A ADADEMIA DE NEGOCIAÇÃO FOREX.
Forexboat Pty Ltd (ABN: 29 609 855 414), um Representante Autorizado Corporativo (AR No. 001238951) da HLK Group Pty Ltd (ACN: 161 284 500) que detém uma Licença Australiana de Serviços Financeiros (AFSL nº 435746). Qualquer informação ou conselho contida neste site é de natureza geral e não constitui um conselho pessoal ou de investimento. Não aceitamos nenhuma responsabilidade por qualquer perda ou dano, incluindo, sem limitação, qualquer perda de lucro, que possa surgir direta ou indiretamente do uso ou dependência de tais informações. Você deve procurar um conselho financeiro independente antes de adquirir um produto financeiro. Todas as operações de produtos e instrumentos financeiros e de valores mobiliários envolvem riscos. Lembre-se de que os resultados do desempenho passado não são necessariamente indicativos de resultados futuros.
A informação neste site pode ser acessada em todo o mundo, no entanto, não é direcionada a residentes em qualquer país ou jurisdição onde tal distribuição ou uso seja contrário à lei ou regulamento local. Forexboat Pty Ltd não está registrado com qualquer regulador dos EUA, incluindo a National Futures Association (& # 8220; NFA & # 8221;) e Commodity Futures Trading Commission (& # 8220; CFTC & # 8221;); portanto, produtos e serviços oferecidos neste site não são destinado a residentes dos Estados Unidos.
Comments
Post a Comment