суббота, 5 мая 2018 г.

Erro 130 forex


Eu tenho uma mensagem de erro # 130 e não entendo o que é isso.


Eu negocio no forex EUR / USD.


Esse erro vem do stop-profit e do stoploss, mas não vejo o que. Eu tento valores mpany.


Não totalmente certo, mas e se você usar & quot; Bid + 25 * Point, Bid-50 * Point & quot; em vez dos dois valores que você usa? Também poderia ajudar se você quiser usar os níveis reais, tente 14000 * Point e 13000 * Point ou 140000 * Point, dependendo se o seu corretor usar pips fracionários ou não.


Mas eu nunca usei valores reais, apenas a distância do OrderOpenPrice.


Eu tentei as duas maneiras, mas não funciona. muito estranho, eu não entendo. Meu corretor é FXCM.


Posso recomendar-lhe este link? Faz parte do livro MQL. Características da ordem e regras para fazer negócios.


Você já leu o livro?


Você não ficaria desapontado :)


Eu tentei, mas ainda não funciona. Eu vi que quando eu quero colocar uma negociação manualmente, eu não posso colocar stoploss e lucro target = & gt; está em "cinzento". Quando escolho Buy Limit ou Buy stop, os campos SL e PT estão disponíveis.


Por isso, tentei com a opção & quot; OP_BUYLIMIT & quot ;, & quot; OP_SELLLIMIT & quot ;, & quot; OP_BUYSTOP & quot; e & quot; OP_SELLSTOP & quot ;, e funciona perfeitamente.


Pode não ser possível usar o PT e o SL com o & quot; OP_SELL & quot; e & quot; OP_BUY & quot; do ordersend ()?


Eu vou ler o link anterior para ver se encontro algo.


Se alguém tem uma solução?


Muito obrigado por seus esforços ;)


Eu tentei, mas ainda não funciona. Eu vi que quando eu quero colocar uma negociação manualmente, eu não posso colocar stoploss e lucro target = & gt; está em "cinzento". Quando escolho Buy Limit ou Buy stop, os campos SL e PT estão disponíveis.


Por isso, tentei com a opção & quot; OP_BUYLIMIT & quot ;, & quot; OP_SELLLIMIT & quot ;, & quot; OP_BUYSTOP & quot; e & quot; OP_SELLSTOP & quot ;, e funciona perfeitamente.


Pode não ser possível usar o PT e o SL com o & quot; OP_SELL & quot; e & quot; OP_BUY & quot; do ordersend ()?


Eu vou ler o link anterior para ver se encontro algo.


Se alguém tem uma solução?


Muito obrigado por seus esforços ;)


Posso garantir que todos nós usamos StopLoss e TakeProfit com os tipos OP_SELL e OP_BUY na função OrderSend ().


Você normalmente os configurará em variáveis ​​externas como um número relativo de pips de distância do preço e os incluirá na função OrderSend () como um preço absoluto calculado, como mostramos acima.


Eu recomendo que você use a seguinte função (apenas como um teste temporário - você pode até criar um pequeno EA que faça apenas este comando na função init ()):


Imprimir (& quot; O nível de stop do meu corretor é: & quot; MarketInfo (Symbol (), MODE_STOPLEVEL));


Olá olosta, eu uso Alpari UK - eles usam 3,5 pip preços - sem problemas com o seu envio.


Considere o uso de Print () de todos os OrderSend (.reals.);


Dessa forma não pode haver discussões sobre o que ou não o que você está dando OrderSend ().


Por favor, use DoubleToStr (& lt; yourValue & gt ;, Digits) nas suas chamadas Print ().


A menos que você tenha uma visão completa do que está pedindo ao seu código, não é tão fácil adivinhar isso, é?


ticket int = OrderSend (Symbol (), OP_SELL, lotes, Bid, 3, Bid + 250 * Point, Bid-500 * Point, "Ordre Court", 0,0, Vermelho);


EURUSD, M5: abrir # 57382862 vender 0.01 EURUSD em 1.39068 sl: 1.39318 tp: 1.38568 ok.


EURUSD, M5: MODE_LOTSIZE = 100000.00000000, & quot; Base CCY & quot;


EURUSD, M5: MODE_DIGITS = 5.


EURUSD, M5: MODE_POINT = 0.00001000.


EURUSD, M5: MODE_TIME = 2009.07.10 13:08:02.


É isso que você está me pedindo para colocar?


Coloquei aqui minha config com o MarketInfo ()


15:23:09 test2 EURUSD, M1: informações de mercado MODE_LOW: 1.3877.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_HIGH: 1.4024.


15:23:09 test2 EURUSD, M1: informação de mercado MODE_TIME: 1247235780.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_BID: 1.39.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_ASK: 1.3903.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_POINT: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_DIGITS: 5.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_SPREAD: 22.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_STOPLEVEL: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_LOTSIZE: 100000.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_TICKVALUE: 1.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_TICKSIZE: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_SWAPLONG: -5.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_SWAPSHORT: -5.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_STARTING: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_EXPIRATION: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_TRADEALLOWED: 1.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_MINLOT: 0.1.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_LOTSTEP: 0.1.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_MAXLOT: 100.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_SWAPTYPE: 1.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_PROFITCALCMODE: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_MARGINCALCMODE: 0.


15:23:09 test2 EURUSD, M1: informação de mercado MODE_MARGININIT: 100000.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_MARGINMAINTENANCE: 100000.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_MARGINHEDGED: 50000.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_MARGINREQUIRED: 500.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_FREEZELEVEL: 0.


15:23:09 test2 EURUSD, M1: OrderSend falhou com o erro # 130.


Onde estão os resultados da declaração Print ()?


Deve saber exatamente o que passar para OrderSend ()


por favor, faça como CB diz. use Print () e imprima todos os valores que você está passando para OrderSend (), não apenas aqueles que você acha que estão com falha. E não deixe de fora aqueles que você sente que estão ok.


Não é bom "sentir", "talvez". Você deve saber 100% quais valores e Print () é seu amigo.


Por que o MODE_POINT retorna zero?


Eu me lembro de algum problema, mas não agora. Você tem EURUSD listado na janela do Market Watch? Caso contrário, adicione este símbolo & gt; teste de repetição2.


Desde MODE_DIGITS: 5 eu esperaria MODE_POINT: 0.00001.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_POINT: 0.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_DIGITS: 5.


15:23:09 test2 EURUSD, M1: informações de mercado MODE_SPREAD: 22.


Veja por que é vital saber o que você envia para uma função?


Há questões aqui - como descobrir? É simples = Imprimir ()


Qualquer expressão, qualquer valor - qualquer que seja, tocado por Point talvez incorreto - mesmo para qualquer coisa, sim?


Sua saída de impressão () irá dizer-lhe porque você vai fazer manualmente o cálculo ASIF Point ou o que for, é como o esperado. Então você verá que seu cálculo é & lt; & gt; saída, sim? Então você pode começar a aprofundar em por que o seu calc e output não é o mesmo - pode até ser que é o seu calc que está com defeito! e codifique ok.


use Print () em todos os lugares! Não seja cauteloso, tenha problema e deve resolver, sim?


Eu usei EXATAMENTE a mesma linha de código que você postou para OrderSend () MAS eu tive que definir lotes por: lotes duplos = 0.01;


Erro # 130 - Paradas inválidas.


Alguém pode me ajudar com esse erro?


Estou enviando um pedido 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 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 inteiro de pips.


Stoploss e TakeProfit precisam ser um preço, não um inteiro de pips.


Eu tenho o mesmo problema com parar no meu EA, as variáveis ​​são as seguintes:


Mas eu sempre recebo o erro 130 para Stoplos, mesmo se eu definir um Stoplos de zero 0 do que funciona, mas onde está o erro, eu uso valores duplos ou não :-)?


Você tem que converter seu stoploss para um preço.


Você tem que converter seu stoploss para um preço.


Sim, é certo que funcione, obrigado.


Você tem que 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 porque meu código está se comportando dessa maneira, mas talvez você ou alguma outra pessoa ligada possa ser capaz de detectar o que eu perdi.


Aqui está o trecho de código ofensivo.


e aqui está a saída de rastreio mostrando 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 porque meu código está se comportando dessa maneira, mas talvez você ou alguma outra pessoa ligada possa ser capaz de detectar o que eu perdi.


Aqui está o trecho de código ofensivo.


e aqui está a saída de rastreio mostrando 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!


Isso parece improvável que seja a resposta. Não é como se os preços estivessem 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 há uma nova razão para o erro # 130, que (eu acho) veio a existir desde os posts originais deste tópico em 2008. Se o 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ê recebe 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 primeiro e, em seguida, faça um OrderModify () para inserir s / l e t / p.


Isso parece improvável que seja a resposta. Não é como se os preços estivessem 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 há uma nova razão para o erro # 130, que (eu acho) veio a existir desde os posts originais deste tópico em 2008. Se o 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ê recebe 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 primeiro e, em seguida, faça um OrderModify () para inserir s / l e t / p.


LotSize duplo externo = 0,1;


extern duplo LotIncrement = 0.1;


duplo externo TakeProfitPip = 10;


PararLossPip duplo externo = 21;


if (multiplicador == 1)


Lotes = NormalizeDouble (LotSize, 2);


Lotes = NormalizeDouble (LotSize, 2);


if (TakeProfitPip! = 0) xTp = Perguntar + (TakeProfitPip * Point);


OrderSend (Symbol (), OP_BUY, Lotes, Ask, Slippage, Bid + (Ponto StopLossPip *), Ask + (TakeProfitPip * Point), TradeComment, Referência, Verde);


Escreva (& quot; Erro ao abrir a encomenda BUY: & quot; + ErroDescrição (Erro) + & quot; (C & quot; + Erro + & quot; Perguntar: & quot; + Perguntar + & quot; Deslizamento: & quot; + Deslizamento);


if (multiplicador == 1)


Lotes = NormalizeDouble (LotSize, 2);


Lotes = NormalizeDouble (LotSize, 2);


if (TakeProfitPip! = 0) xTp = lance - (ponto de TakeProfitPip *);


Escrever (& quot; Erro ao abrir a ordem SELL: & quot; + ErroDescrição (Erro) + & quot; (D & quot; + Erro + & quot;) Oferta: & quot; + Bid + & quot; Deslizamento: & quot; + Deslizamento);


Eu acredito que posso confirmar isso por exemplo. Conta Micro Alpari (tem que ser uma conta "viva"), você tem que fazer OrderSend com zero SL e TP e, em seguida, imediatamente depois, modificar o pedido com o SL e TP necessários para fazê-lo funcionar. Eu faço um OrderSelect logo depois 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.


Acho que tive o mesmo problema com o Axis trader, então talvez eu tente de novo.


A única outra coisa que fiz foi garantir que, quando eu mandasse o OrderSend, havia um número mágico que não era zero.


Blog Forex.


Experiência de negociação Forex em primeira mão e informações sobre o mercado de câmbio que será útil para os comerciantes.


Inscreva-se para receber atualizações diárias diretamente na sua caixa de entrada de e-mail.


Manipulando o OrderSend Error 131 no MetaTrader 4.


O OrderSend Error 131 é um problema muito popular que geralmente é encontrado ao testar consultores especialistas em MT4. O que causa esse erro? Chama-se ERR_INVALID_TRADE_VOLUME no código MT4. Isso significa que seu consultor especialista está tentando enviar um pedido com volume comercial inválido. Na maioria absoluta dos corretores de MT4 que definem algum EA para abrir um pedido, 0.123 lotes gerarão esse erro. Mas às vezes é gerado quando o EA, criado para contas mini ou micro, é usado na conta padrão. Se você tropeçar no OrderSend Error 131 durante o seu teste, você pode descobrir rapidamente as configurações erradas do seu EA & # 8212; encontre a função init () padrão dentro do código do seu EA e insira estas linhas de código lá:


A primeira linha lhe dará as informações sobre quantas unidades um lote contém quando você negocia nesta conta (100000 significaria um lote de tamanho padrão). Lembre-se de que, no registro de seu consultor especialista, essa linha será a primeira a partir de baixo para cima, e não vice-versa. A segunda linha irá dizer-lhe a quantidade mínima de lotes que você pode negociar (este é o erro mais comum; você provavelmente só precisará corrigir a quantidade de lotes que seu EA negocia de 0.1 para 1). O terceiro dará o passo mínimo para o volume de negócios em lotes. A quarta linha dirá a quantidade máxima de lotes que seu EA pode negociar.


Por exemplo, uma conta de demonstração no FXOpen gera essa informação quando insiro essas linhas no código:


2008.07.10 15:13:37 Amostra MACD EURUSD, H1: 10000.


2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01.


2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01.


2008.07.10 15:13:37 MACD Sample EURUSD, H1: 100000.


Isso significa que 1 lote é 100.000 unidades (um tamanho padrão), o volume mínimo de comércio é 0,01 lote (então, pode-se negociar a partir de $ 10 em 1 posição em um par de moedas baseado em dólar), passo de volume mínimo de comércio também é 0,01 lote ( pode-se negociar volumes de lote de 0,33, 0,4 ou 1,25, mas não pode enviar pedidos com 0,333 de tamanho de lote) e o volume máximo que se pode usar para abrir uma posição é de 10.000 lotes.


Você pode incorporar a função MarketInfo () em um nível mais complexo ao seu EA, para que ele possa verificar automaticamente os valores permitidos e corrigir suas configurações. Mas se você não deseja codificar muito, você pode usar o código acima para descobrir os valores corretos e corrigir as configurações manualmente.


Blog Forex.


Experiência de negociação Forex em primeira mão e informações sobre o mercado de câmbio que será útil para os comerciantes.


Inscreva-se para receber atualizações diárias diretamente na sua caixa de entrada de e-mail.


OrderSend Error 130 - O que fazer?


Os consultores especialistas que trabalham em um corretor podem parar de trabalhar em outro; o problema com eles geralmente está no Erro OrderSend 130. Se você vir o Erro 130 no log da sua plataforma MetaTrader quando seu consultor especialista deve abrir uma posição, isso significa que os níveis de stop loss ou take-profit estão definidos para fechar ao preço de mercado atual. Na documentação da MQL, esse erro é chamado ERR_INVALID_STOPS (& laquo; Paradas inválidas & raquo;). Alguns corretores Forex definem a distância mínima entre o preço atual e os níveis de stop loss / take-profit para evitar escalpelamento ou abuso dos atrasos de cotação. Isso não é um problema real para a maioria dos consultores especializados que não usam escalpelamento. Para evitar que esse erro ocorra, você precisa alterar o código do especialista.


Primeiro, você pode querer saber o que é o nível de stop mínimo definido no servidor MetaTrader da sua corretora. Adicionar essa linha de código gerará o nível de stop mínimo atual para o par de moedas do gráfico, onde você executa o EA:


Você não deve usar o nível stop loss ou take-profit, que são mais próximos do que MarketInfo (Symbol (), MODE_STOPLEVEL) ao preço de mercado atual. Se o seu EA calcula paradas e lucros com dinamismo, isso é o que eu sugiro que você faça:


O que é o OrderSend Error 130?


Os consultores especialistas que trabalham em um corretor podem parar de trabalhar em outro; o problema com eles geralmente está no Erro OrderSend 130. Se você vir o Erro 130 no log da sua plataforma MetaTrader quando seu consultor especialista deve abrir uma posição, isso significa que os níveis de stop loss ou take-profit estão definidos para fechar ao preço de mercado atual. Na documentação da MQL, esse erro é chamado de ERR_INVALID_STOPS ("Paradas inválidas"). Alguns corretores Forex definem a distância mínima entre o preço atual e os níveis de stop loss / take-profit para evitar escalpelamento ou abuso dos atrasos de cotação. Isso não é um problema real para a maioria dos consultores especialistas que não usam escalpelamento. Para evitar que esse erro ocorra, você precisa alterar o código do especialista.


Primeiro, você pode querer saber qual é o nível de nível mínimo definido no servidor MetaTrader da sua corretora. Adicionar essa linha de código gerará o nível de stop mínimo atual para o par de moedas do gráfico, onde você executa o EA:


Você não deve usar o nível de stop loss ou take-profit, que são mais próximos do que o MarketInfo (Symbol (), MODE_STOPLEVEL) ao preço de mercado atual. Se o seu EA calcula paradas e lucros com dinamismo, isso é o que eu sugiro que você faça:


Declare uma variável global para o StopLevel mínimo; por exemplo.:


Na função init () de seu orientador especialista, defina o nível mínimo de StopLevel:


StopLevel = MarketInfo (Symbol (), MODE_STOPLEVEL) + MarketInfo (símbolo (), MODE_SPREAD);


Observe que adicionar uma diferença de spread também é necessário.


Na próxima vez que seu stop-loss ou take-profit for calculado, basta verificar que eles não sejam inferiores a StopLevel:


if (StopLoss & lt; StopLevel) StopLoss = StopLevel;


if (TakeProfit & lt; StopLevel) TakeProfit = StopLevel;


Não se esqueça de atualizar as taxas de mercado atuais com RefreshRates () antes de adicionar os níveis de stop-loss / take-profit às taxas reais de mercado.


Isso deve ajudar na maioria dos casos. Pelo menos, para mim, essa manipulação do erro OrderSend 130 sempre funcionou.

Комментариев нет:

Отправить комментарий