Friday, 7 July 2017

Ordermodify Error 1 Mt4 Forex


if (OrderType () OPBUY ampamp Bid gt TakeProfitLong1) if (OrderType () OPBUY ampamp Bid gt TakeProfitLong1 ampamp OrderTakeProfit () TakeProfitLong1) Olá, eu escrevi um EA com base no indicador de QQE e SAR parabólico, eu tenho o problema que eu tenho Ordem modificar erro 1, realmente eu não consigo entender o porquê. Eu imprimi todo o valor necessário na revista, mas isso não ajuda. A EA parece rastrear o stop loss corretamente com SAR quando as condições são atendidas (aqui eu olho para os resultados). N. B. Eu uso na EA o sinal ENTRY (QQE), não é sincronizado com direção de tendência Parabolics. Meu desejo é colocar um primeiro StopLoss anexado à ordem de entrada, em seguida, se se o parabólico é trendind na mesma direção da última ordem e se o parabólico sar é menor do que o stoploss então modificar a ordem stoploss com parabólica. Se Parabólica inversa antes do meu sinal de saída, eu gostaria que o stoploss permanece constante. Você poderia olhar para isso. Obrigado por ajudar a dupla RsiMaCurrent, TrLevelSlowCurrent, RsiMaPrevious, TrLevelSlowPrevious, StopParabolic RsiMaCurrentiCustom (NULL, 0, quotQQEquot, SF, 0,1) TrLevelSlowCurrentiCustom (NULL, 0, quotQQEquot, SF, 1,1) RsiMaPreviousiCustom (NULL, 0, quotQQEquot, SF , 0,2) TrLevelSlowPreviousiCustom (NULL, 0, quotQQEquot, SF, 1,2) StopParabolic iCustom (NULL, 0, quotParabolic Subquot, StepPararabolic, MaxParabolic, 0,0) para (cnt0cntlttotalcnt) OrderSelect (cnt, SELECTBYPOS, MODETRADES) se (OrderType () OPBUY) // posição longa é aberta // deve ser fechada se ((RsiMaCurrent lt TrLevelSlowCurrent) ampamp (RsiMaPrevious gt TrLevelSlowPrevious)) Print (quotCLOSE sinal de corrente 1. quot, RsiMaCurrent, Signal quot 2. quot, TrLevelSlowCurrent, quot Anterior Sinal 1. quot, RsiMaPrevious, quot Signal 2. quot, TrLevelSlowPrevious) OrderClose (OrderTicket (), OrderLots (), Bid, 3, Violet) // fechar posição return (0) // sair // Definir Parabolic Stop, Se Price gt StopParabolic, O sinal poderia ser erlier que um sinal parabólico, // Já configurado StopLoss lt StopParabolic então modificar ordem, o StopLoss pode nunca ir na direção errada if ((Bid gt StopParabolic) ampamp (OrderStopLoss () lt StopParabolic)) OrderModify (OrderTicket (), OrderOpenPrice (), StopParabolic, OrderTakeProfit (), 0, verde) Impressão (quot ( LONG) MODIFICAR STOP para Valeur parabólica quot, StopParabolic, quot quot Bid, Bid) return (0) else // ir para a posição curta // deveria ser fechado if ((RsiMaCurrent gt TrLevelSlowCurrent) ampamp (RsiMaPrevious lt TrLevelSlowPrevious)) Print ( quotCLOSE sinal de corrente 1. quot, RsiMaCurrent, Signal quot 2. quot, TrLevelSlowCurrent, quot Anterior Sinal 1. quot, RsiMaPrevious, quot Signal 2. quot, TrLevelSlowPrevious) OrderClose (OrderTicket (), OrderLots (), Ask, 3, Violet) // perto posição de retorno (0) // exit // parabólica mesmo contanto lado if ((Peça lt StopParabolic) ampamp (OrderStopLoss () gt StopParabolic)) OrderModify (OrderTicket (), OrderOpenPrice (), StopParabolic, OrderTakeProfit (), 0, Green) Imprimir (quot (SHORT) MODIFY STOP para Valeur Parabolic quot, StopParabolic, quot Perguntar, Ask) return (0) você só precisa alterar pelo menos um datum de ordem. Mas deve ser valor aceitável. Melhor aposta é OrderSelect () ticket u want modify. Então u pode usar já em valores de ordem que não querem mudar: por exemplo, OrderModify (ticket, OrderOpenPrice (), aNewSLprice, OrderTakeProfit (), OrderExpiration ()) estes thots abaixo ajuda também stoploss deve ser distância mínima do preço atual. MarketInfo (symbolName, MODESTOPLEVEL) dá distância mínima do preço atual. Btw, BarrowBoy dizer em outro lugar e é sobre os corretores que usam preços sub-pip. Meu corretor é um deles. Se eu usar MarketInfo () chamar acima para GBPUSD i imprimir para registrar isso: MarketInfo GBPUSD, H1: MODESPREAD30 ver 30 que é realmente 3 e zero é décimos pip assim isso significa que eu devo quottimes 10quot valores colocados em chamadas ops de comércio. Por exemplo, 1.12345 imprime como 1.1234 a menos que use DoubleToStr (um identificador duplo, dígitos) - ou mesmo apenas coloque no valor de 8 dígitos, a largura máxima. Meu corretor dá dígitos como 5 e ponto como 0.00001 para nonJPY e 3.0.001 para pares de JPY. Idéias. Talvez ajudar :) u talvez usar a declaração Print () e ver o que u envio em chamadas de operações de comércio, pode melhor descobrir por que o sistema não como o comércio op chamadas Às vezes a minha perda stop é atualizado, às vezes não. 50 pips longe do preço atual deve ser mais do que suficiente. U dizer seus valores estão corretos. Bem, 4 certeza do sistema não está feliz - assim. Parece que os valores podem parecer corretos para u, mas não para o sistema. Sugerir u mostrar código, esta conversa falar inglês não é código - não é preciso, o código é preciso e é truefalse e independentemente wat u ou i ou outros dizem, o código é apenas coisa real que fala. Este não problema que deve consumir muito tempo - por favor mostre código - todo o código. Então podemos finalmente dizer ok. Não sabemos ou - aqui está, você deve fazer esse tipo de coisa para parar de emitir. U dizer seus valores estão corretos. Bem, 4 certeza do sistema não está feliz - assim. Parece que os valores podem parecer corretos para u, mas não para o sistema. Sugerir u mostrar código, esta conversa falar inglês não é código - não é preciso, o código é preciso e é truefalse e independentemente wat u ou i ou outros dizem, o código é apenas coisa real que fala. Este não problema que deve consumir muito tempo - por favor mostre código - todo o código. Então podemos finalmente dizer ok. Não sabemos ou - aqui está, você deve fazer esse tipo de coisa para parar de emitir. Se alguém ainda está olhando para este post eu tenho o mesmo código de erro 0 ao executar o meu EA em GBPUSD em um corretor ECN. Aqui está o meu código para que talvez você possa encontrar o que está errado com ele: para (i1 iltOrdersTotal () i) // Ciclo de busca em ordens se (OrderSelect (i-1, SELECTBYPOS) true) // Se o próximo está disponível int TipoOrderType () // Tipo de ordem if (OrderSymbol () SymbTipogt1) continue // A ordem não é quotoursquot SLOrderStopLoss () // SL da ordem selecionada // ---------------- -------------------------------------------------- ---- 3 - while (true) // Ciclo de modificação // double TSTrailStop // Valor inicial duplo TSNormalizeDouble (TrailStopStopMultd, Dígitos) // Prefiro usar valores Normalize int MinDistMarketInfo (Symb, MODESTOPLEVEL) // Min. Distância if (TS lt MinDist) // Se menor que permitido TSMinDist // Novo valor de TS // ---------------------------- --------------------------------------- 4 - bool Modifyfalse // Não deve ser modificado (Tipo) // Por ordem tipo case 0. // Ordem Comprar if (NormalizeDouble (SL, Dígitos) lt NormalizeDouble (Bid-TSPoint, Dígitos)) // Se for menor do que queremos SLBid-TSPoint // então modifique It String Textquot Comprar quot // Texto para Comprar Modifytrue // Para ser modificado break // Exit switch case 1. // Ordem Sell if (NormalizeDouble (SL, Dígitos) gt NormalizeDouble (AskTSPoint, Dígitos) // Se for maior do que Nós queremos NormalizeDouble (SL, Dígitos) 0) // ou igual a zero SLAskTSPoint // então modificá-lo Textquot Vender quot // Texto para Vender Modifytrue // A ser modificado // Fim do switch if (Modifyfalse) // Se for Não modificado break // Sair enquanto // ----------------------------------------- -------------------------- 5 - TP OrderTakeProfit () // TP da ordem selecionada double Preço OrderOpenPrice () // Preço do Ordem selecionada int TicketOrderTicket () // Ticket da ordem selecionada Alerta (quotModificação toquot, Text, quotquot, Ticket, quot - Aguardando resposta..quot) bool AnsOrderModify (Ticket, Preço, SL, TP, 0) // Modificá-lo I Acho que esta linha é onde o problema é: double TSNormalizeDouble (TrailStopStopMultd, Dígitos) // Eu mudei o código original que eu encontrei no fórum com valores Normalize O valor StopMultd é 10 porque eu uso um corretor ECN. Meu valor TrailStop é, por exemplo, 15 pips, mas, a fim de traduzi-lo para um corretor de 5 dígitos eu tenho que multiplicá-lo por 10 e, em seguida, usar dígitos para cobri-lo a um corretor de 5 dígitos. Todas as sugestões hereI estão recebendo erro 1 uma boa porcentagem do tempo quando modificar a perda de parar em ordens existentes. Ao olhar para o openprice, stoploss atual eo stoploss proposto parece ok. Por exemplo, em um trade curto EURUSDm (depois de verificar os conditons são válidos) eu uso Ask 0.0025 para o novo stoploss por isso pensei que a distância do preço BID seria suficiente na maioria dos casos. A minha pergunta é 1. A minha EA display diz que a sua ok, mas ele falha - poderia ser devido ao arredondamento do local 5 decomal. Por outras palavras, a quinta casa decimal é significativa quando se define o stoploss. Exigindo normalizar dupla o tempo todo Se assim for MT4 deve ser alterado para fazer isso automaticamente 2. Eu verifiquei a propagação com Erro 1 e sua ok em cerca de 185, mas os níveis de parar e congelar são 05. Suponha que este é 0,00005, mas como Eu uso esses números. Eu sei que eles podem impedir uma modificação de comércio, mas como posso determinar se o comércio será aceito ou rejeitado - como exatamente eu uso esses níveis Você olhou para que erro 1 significa quotOrderModify tenta substituir os valores já definidos com os mesmos valores . Um ou mais valores devem ser alterados, então a tentativa de modificação pode ser repetida. SxTed código dá uma boa lista de coisas para verificar para evitar Error1. Não podemos dizer o que está errado com seu código porque não podemos vê-lo.

No comments:

Post a Comment