Fixando o erro 130 - MT4 Estas não são soluções para o problema. Eu entendo qual é o problema, não sei como codificá-lo para resolvê-lo. Eu recebo um erro 130 devido ao fato de que meu preço aberto na minha parada de compra é fechar meu preço atual. Se o preço continuar a subir nunca será preenchido. O que eu estou perguntando é que existe uma maneira de aumentar o preço aberto pela quantidade X quando isso acontece até que ele seja preenchido. Os dois links e centenas desses links 62000 contêm a solução, mas você está me dizendo que eles não. Por que Ele está lhe falando a solução. Está bem antes dos seus olhos. O problema parece ser que você precisa de alguém para fazer o trabalho para você. Boa sorte, mas essa não é a maneira de aprender a codificar. Uma dica para você: Para evitar o erro 130 para sua ordem de compra, faça isso: a) obtenha o Stoplevel do seu corretor. B) compare o preço de mercado (Ask) Stoplevel com o preço calculado do BuyStop. Se preço de mercado Stoplevel gt BuyStop-price, set BuyStop-price market-price Stoplevel Buffer-x, então o OrderSend funcionará sem obter erro 130 O buffer-x deve ser definido por você e, quando aplicado, deve ser em pontos, não Em Pips. Juntei-se a Abr 2016 Status: Membro Júnior 1 Post Olá eu tenho este e codificado abaixo, por favor, alguém me ajude a respeito deste erro ruidoso 130 lgnvalid stopgt ---------------------- -------------------------------------------- Soubra2003v2.0.mq4 Copyright 2016, soubra2003 mql5enuserssoubra2003 ---------------------------------------------- -------------------- propriedade copyright quotCopyright 2016, soubra2003v2.0quot propriedade link quotonesoubraquot propriedade versão quot2.00quot descrição da propriedade quot - Esta EA comercializará como abaixo descrição: quot property Descrição quot 1) Condição de compra: O pedido pendente será definido como preço mais alto do anterior. Candle Distance by user. quot descrição da propriedade quot 2) Sell condition: O pedido pendente será definido como preço mais baixo do anterior. Vela - Distância por descrição de propriedade do usuário quot 3) As atualizações das ordens pendentes da buysell serão geralmente com cada nova opção de descrição da propriedade open. quot quot 4) O que há de novo: Trailing Stop, Break Even amp Money Management. quot propriedade estrita inclui ltstdlib. mqhgt string de entrada sep3 quot --------------------- Money Mgmt Settings -------------------- - quot MM opções gtgtgtgtgtgtgtgt entrada bool MM falso Money Management entrada duplo CalcAmount 100 Quantidade para AUTO Entrada de lotes duplo CalcLot 0.01 Auto Tamanho do Lote cada Quantidade entrada dobro Tamanho de Lote 0.10 Tamanho do Lote (Fixed) string de entrada sep1 quot --------- ------------ Configurações de Negociação --------------------- quot Opções de Negociação gtgtgtgtgtgtgtgt input double orderdistance 10 Distance (After Prev. High amper Abaixo Prev. Baixo) extern double buystoploss 50 Comprar Stop Loss extern double sellstoploss 50 Venda Stop Loss extern double buytakeprofit 100 Comprar Take Profit extern double selltakeprofit 100 Vender Receber entrada de lucro int Slippage 5 input strin G sep2 quot --------------------- Break Even amp T. Stop -------------------- - quot Break Even amp T. Stop gtgtgtgtgtgtgtgt entrada bool BreakEven true Break Even Status entrada duplo BreakEvenStart 5.0 Break Even Start entrada duplo BreakEvenValue 1.0 Break Even Value entrada bool TrailingStop true Trailing Stop Status entrada duplo TrailingStopVal 10.0 Trailing Stop Value string de entrada sep4 quot-- ------------------- Outra Configuração --------------------- quot Outras Opções gtgtgtgtgtgtgtgt string de entrada tradescommentquotsoubra2003Version 2.0 Quot Trades Comentário input cor buyarrowcolor clrBlue Comprar Seta Cor entrada cor sellarrowcolor clrRed Vender Seta Color input cor deletearrowcolor clrYellow Excluir Pendente Ordem Seta Cor entrada cor modifyarrowcolor clrWhite Modificado Ordem Seta Cor --- int slippage5 int buymagicnumber821454145 int vendmagicnumber192545451 double tradepointPoint duplo prevcdlhigh duplo prevcdllow duplo Buyprice double sellprice int buyticketno int sell Ticketno double Lotes duplo StopSprdLevel MarketInfo (Symbol (), MODESTOPLEVEL) MarketInfo (Symbol (), MODESPREAD) double BrokerMinLot MarketInfo (Symbol (), MODEMINLOT) double BrokerMaxLot MarketInfo (Symbol (), MODEMAXLOT) prevcdlhigh High1 prevcdllow Low1 buypriceprevcdlhighorderdistancetradepoint sellpriceprevcdllow-orderdistancetradepoint if (buystoplossgt0) buystoplossbuyprice-buystoplosstradepoint outra buystoplossNULL if (buytakeprofitgt0) buytakeprofitbuypricebuytakeprofittradepoint outra buytakeprofitNULL if (sellstoplossgt0) sellstoplosssellpricesellstoplosstradepoint outra sellstoplossNULL if (selltakeprofitgt0) selltakeprofitsellprice-selltakeprofittradepoint outra selltakeprofitNULL if (NewBar ()) CloseAll () CloseAll () if (buycounter ()) RefreshRates () Int tktbuy OrderSend (Symbol (), OPBUYSTOP, Lots, buyprice, slippage, buystoploss, buytakeprofit, tradescomment, buymagicnumber, NULL, buyarrowcolor) if (tktbuylt0) Print (quotOrder falhou com erro: quot, ErrorDescription (GetLastError ())) De outra forma (QuotOrder colocado com sucesso) se (sellcounter ()) RefreshRates () int tktsell OrderSend (Symbol (), OPSELLSTOP, Lotes, preço de venda, deslizamento, sellstoploss, selltakeprofit, tradescomment, sellmagicnumber, NULL, sellarrowcolor) se (tktselllt0) Imprimir (quotOrder falhou Com erro: quot, ErrorDescription (GetLastError ())) else Imprimir (quotOrder colocado com sucesso) Comentário (quot Before Candle High quot, NormalizeDouble (prevcdlhigh, Digits), quot Pendente Buy Order Deve ser quot, NormalizeDouble (buyprice, Digits), quotnquot , Quot Before Candle Low quot, NormalizeDouble (prevcdllow, Digits), quot Pendente Venda Ordem Deve ser quot, NormalizeDouble (sellprice, Digits), quotnquot, quot ------------------ ------------------------------ quot, quotnquot, quot Money Management Status: quot, MM, quotnquot, quot Break Even Status: Quot, BreakEven, quotnquot, quot Status de parada final: quot, TrailingStop, quotnquot, quot -------------------------------- ---------------- quot, quotnquot, quot Broker Stop Out quot, Accou NtStopoutLevel (), quotnquot, quot Broker Stop Level quot, StopSprdLevel, quotnquot, quot Broker Max Lot permitido quot, BrokerMaxLot, quotnquot, quot Broker Min Lot permitido quot, BrokerMinLot) --- BuyTrailingStop () para (int cnt10 cnt1ltOrdersTotal () cnt1 ) Int ticketselectOrderSelect (cnt1, SELECTBYPOS) se (OrderStopLoss () NULL ampamp OrderType () ltOPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () buymagicnumber) se (OrderType () OPBUY) se (TrailingStop ampamp TrailingStopValgt0) RefreshRates () bool ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss () (TrailingStopValtradepoint), OrderTakeProfit (), 0, modifyarrowcolor) se (ticketmodify) Imprimir (quotTStop: A ordem não pode ser modificada. Quot, ErrorDescription (GetLastError ())) else Print (quotTrailing Stop Done. quot) SellTrailingStop () para (int cnt20 cnt2ltOrdersTotal () cnt2) int ticketselectOrderSelect (cnt2, SELECTBYPOS) se (OrderStopLoss () NULL ampamp OrderType () ltOPSELL ampamp OrderSymbol () Símbolo () ampamp OrderMagicNumber () sellmagicnumber) se (OrderType () OPSELL) if (TrailingStop ampamp TrailingStopValgt0) RefreshRates () int ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderStopLoss () - (TrailingStopValtradepoint), OrderTakeProfit () , 0, modifyarrowcolor) se (ticketmodify) Imprimir (quotTStop: A ordem não pode ser modificada. Quot, ErrorDescription (GetLastError ())) else Imprimir (quotTrailing Stop Done. quot) BuyBreakEven () for (int cnt3 0 cnt3 lt OrdersTotal () cnt3 ) Int ticketselect OrderSelect (cnt3, SELECTBYPOS) se (OrderType () lt OPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () buymagicnumber) if (OrderType () OPBUY) se (BreakEvenStart gt 0 ampamp BreakEven) RefreshRates () int ticketmodify OrderModify (OrderTi Cote (), OrderOpenPrice (), OrderOpenPrice () (BreakEvenValuetradepoint), OrderTakeProfit (), 0, modifyarrowcolor) if (ticketmodify) Imprimir (quotBreak Even: Order não pode ser modificado, quot, ErrorDescription (GetLastError ())) else Print (quotBreak Mesmo colocado Sucessivamente. quot) SellBreakEven () for (int cnt4 0 cnt4 lt OrdersTotal () cnt4) int ticketselect OrderSelect (cnt4, SELECTBYPOS) if (OrderType () lt OPSELL ampamp OrderSymbol () Symbol () ampamp OrderMagicNumber () sellmagicnumber) if (OrderType () OPSELL) se (BreakEvenStart gt 0 ampamp BreakEven) RefreshRates () int ticketmodify OrderModify (OrderTicket (), OrderOpenPrice (), OrderOpenPrice () - (BreakEvenValue tradepoint), OrderTakeProfit (), 0, modifyarrowcolor) if (ticketmodify) Imprimir (quotBreak Even: Order não pode ser modificado, quot, ErrorDescription (GetLastError ())) else Print (quotBreak Even Placed Successfuly. quot) --------------------- --------------------------------------------- Função de fim de semana especialista - ----------------------------------- ----------------------------- void closeall () for (int i0 iltOrdersTotal () i) int selectOrderSelect (i, SELECTBYPOS, MODETRADES ) Se (OrderSymbol () Symbol ()) if (OrderSymbol () Symbol ()) if (OrderTymet () Symbol ()) if (OrderTymet () Symbol () SymbolType () Ser removido, Err Desc: quot, ErrorDescription (GetLastError ())) else Print (quotOrder Has been Removed. quot) int OrderSend (símbolo de seqüência de caracteres). Símbolo int cmd. Volume duplo de operação. Volume duplo. Preço int derrapagem. Escorregamento duplo de deslizamento. Stop loss double takeprofit. Faça com que o resultado seja de nada. Comenta int magic0. Número mágico de expiração de data e hora0. Cor pendente de cor de flecha de cor pendente pendente) em Símbolo para negociação. No tipo de operação. Pode ser qualquer da enumeração da operação comercial. Em número de lotes. Em Deslizamento máximo do preço para comprar ou vender ordens. Em Stop loss level. Em Tire o 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. No prazo de caducidade da ordem (somente para pedidos pendentes). Em Cor da seta de abertura no gráfico. Se o parâmetro estiver faltando ou a seta de abertura do valor CLRNONE não for desenhada no gráfico. Retorna o número do ticket atribuído à ordem pelo servidor de comércio ou -1 se falhar. Para obter informações de erro adicionais, é necessário chamar a função GetLastError (). Na abertura de um pedido de mercado (OPSELL ou OPBUY), apenas os preços mais recentes da Oferta (para venda) ou Perguntar (para compra) podem ser usados como preço aberto. Se a operação for realizada com uma segurança diferente da atual, a função MarketInfo () deve ser usada com o parâmetro MODEBID ou MODEASK para obter as últimas cotações para essa segurança. O preço calculado ou não normalizado não pode ser aplicado. Se não houve o preço aberto solicitado no segmento de preço ou não foi 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 desactualizado, o erro 138 (ERRREQUOTE) será gerado de forma independente no parâmetro de deslizamento. Se o preço solicitado estiver desactualizado, mas presente no segmento, a ordem será aberta no preço atual e somente se o preço atual estiver dentro da faixa de preço-derrapagem. Os níveis StopLoss e TakeProfit não podem estar muito perto do mercado. A distância mínima dos níveis de parada nos pontos pode ser obtida usando a função MarketInfo () com o parâmetro MODESTOPLEVEL. No caso de níveis de paragem errados ou não normalizados, o erro 130 (ERRINVALIDSTOPS) será gerado. Um valor zero de MODESTOPLEVEL significa ausência de restrições sobre a distância mínima para Stop LossTake Profit ou o fato de que um servidor de comércio utiliza alguns mecanismos externos para controle de nível dinâmico, que não podem ser traduzidos no terminal do cliente. No segundo caso, GetLastError () pode retornar o erro 130, porque MODESTOPLEVEL está realmente quotfloatingquot aqui. Ao colocar 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 falso preço aberto de uma ordem pendente, o erro 130 (ERRINVALIDSTOPS) será gerado. A aplicação do tempo de caducidade pendente pode ser desativada em alguns servidores comerciais. Nesse caso, quando um valor diferente de zero for especificado no parâmetro de expiração, o erro 147 (ERRTRADEEXPIRATIONDENIED) será gerado. Em alguns servidores de comércio, a quantidade total de pedidos pendentes e pendentes pode ser limitada. Se esse limite foi excedido, nenhuma nova ordem será aberta (ou nenhuma ordem pendente será colocada) e o servidor de troca retornará o erro 148 (ERRTRADETOOMANYORDERS). -------------------------------------------------- ---------------- Função de início do programa de script ------------------------------ ------------------------------------ void OnStart () --- obtenha o mínimo de nível de parada double minstoplevel MarketInfo (Símbolo (), MODESTOPLEVEL) Imprimir (quotMinimum Stop Levelquot, minstoplevel, quot pointsquot) preço duplo Peça --- os preços calculados de SL e TP devem ser normalizados dupla folga NormalizeDouble (Bid - minstoplevel Point Point Digs) double takeprofit NormalizeDouble (Bid minstoplevel Point Digits) --- Coloque o pedido de mercado para comprar 1 lot int ticket OrderSend (Símbolo (), OPBUY, 1, preço, 3, stoploss, takeprofit, quotMy orderquot, 16384,0, clrGreen) if (ticketlt0) Imprimir (quotOrderSend falhou) Com erro. GetLastError ()) else Print (quotOrderSend colocado com sucesso) --- Estou tentando executar várias EAs em dados históricos e continuar recebendo quotOrderSend error 130quot para ACOMODAR e VENDER pedidos sem qualquer lógica. Isso acontece na maioria dos sinais e eu baixei 10 diferentes EAs de domínio público e nenhum trabalha na maioria dos sinais em diferentes resoluções (1M, 1H 4H ...). Estou bem ciente do que o erro significa e eu sou um programador experiente, eu estou imitando valores corretos para stop-loss e take-profit. Eu uso o software metatrader baixado do corretor FxPro. O parâmetro Stop-Level é sempre definido como 100 sob quotSymbol Propertiesquot da maioria dos símbolos, que parece muito comparado ao spread anunciado, mas mesmo quando eu mudo os parâmetros take-profit stop-loss aprovados pelo OrderSend, para algo maior do que 100 não faz importam. Sempre recebo esse temido Error 130 Estou tentando executar várias EAs em dados históricos e continuar recebendo quotOrderSend erro 130quot para ACOMPAR e VENDER pedidos sem qualquer lógica. Isso acontece na maioria dos sinais e eu baixei 10 diferentes EAs de domínio público e nenhum trabalha na maioria dos sinais em diferentes resoluções (1M, 1H 4H ...). Estou bem ciente do que o erro significa e eu sou um programador experiente, eu estou imitando valores corretos para stop-loss e take-profit. Eu uso o software metatrader baixado do corretor FxPro. O parâmetro Stop-Level é sempre definido como 100 sob quotSymbol Propertiesquot da maioria dos símbolos, que parece muito comparado ao spread anunciado, mas mesmo quando eu mudo os parâmetros stop-loss take-profit passados por OrderSend, para algo maior do que 100 não importam. Eu sempre recebi esse temido Erro 130 Eu baixei o software metatrader da Alpari e minha EA e os baixados parecem funcionar. 10 horas desperdiçadas graças ao FxProI criaram uma EA, que funciona bem para mim, mas tentei mudar um pouco, mas não consigo fazer com que funcione. Tudo o que eu quero fazer é abrir um pedido com uma parada final. O problema é que a parada final é diferente para cada troca (depende da alta da vela atual). Isso sempre dá erro de ordem 130, o que significa que a perda de parada está muito próxima. Isso não é possível, porque eu negocio diariamente e a perda de parada é sempre pelo menos 100 pips. Eu acho que o problema pode ser que, de alguma forma, sempre calcula o fim de arrastar 0, porque a parada final sempre é calculada logo após a troca e a função ordermodify é iniciada depois disso. Mas tentei colocar a parada final 150, por exemplo, e ainda me dá esse erro (mas desta vez às vezes). Se alguém pudesse ajudar, ficaria muito satisfeito. Thx aqui é o código (não é inteiro, não caberia aqui) Eu acho que você precisa normalizar expressões quot Bid - Trailingstop Pointquot e quot Ask Trailingstop Pointquot porque o Trailingstop é o dobro. Roger: Eu acho que você precisa Normalizar as expressões quot Bid - Trailingstop Pointquot e quot Ask Trailingstop Pointquot porque o Trailingstop é o dobro. O problema deve estar em outro lugar. Mas obrigado de qualquer maneira -) o problema tem que estar em outro lugar. Mas obrigado de qualquer maneira -) É difícil ter certeza, porque você diz que não enviou o código inteiro. No entanto, pelo seu aspecto, o Trailingstop não é uma variável estática ou global. É declarado na seção quotbullishquot. Portanto, seu valor será definido no momento em que uma ordem é colocada, mas não irá persistir depois disso. Nas chamadas subseqüentes para iniciar (), quando uma ordem é modificada, a variável Trailingstop deve conter zero. Portanto, a chamada para OrderModify () estará tentando definir a parada para Ask 0 Point ou Bid 0 Point. Tente colocar uma derrapagem diferente de zero e verifique se 100 pontos são o que você pensa e não 10 pontos em uma plataforma de 5 casas decimais. Imprima os valores logo após o comércio para ver se eles estão corretos, talvez o indicador esteja retornando valores desonesto às vezes.
Comments
Post a Comment