Monday 21 August 2017

Close Order Forex Peace


Forex4You Review Visite o site Forex4you scam TP profit sem quaisquer regras ou razões para o intermediário Fore Forex para você SCAM meu dinheiro, eles não fecham a ordem no ponto TP, eles alteram sua perda Stop. Eles fazem isso até a chamada de margem. Eles respondem que o TP tocou, mas porque a mudança de preço depois disso não podemos fechar seu pedido. Você pode ver sua resposta no meu deleite. Amasing resposta. Eles não têm nenhuma regra para esta resposta, isso diz isso porque forex4he aproveita minha grande quantidade de dinheiro. Como você está em suas Regras de REGULAMENTO 4.10.2. Ou Comprar ordens TakeProfit será ativado, se o preço do lance será maior ou igual ao preço da execução, mas até agora eles sacm meu lucro não me paga. Tenha cuidado com eles, se o seu TP Point Hit não o pagam. . Forexpeacearmycommunitythreadsforex4you-broker-eglobal-forex-com-big-problem-or-sc.47062page-2 Respondido por Forex4you enviado em 14 de outubro de 2016: o Forex4you oferece uma execução totalmente transparente, fornecendo aos clientes informações detalhadas, incluindo - tempo de disparo da ordem, tempo de espera de execução E marque o histórico de tiques. O tempo médio de execução das ordens é publicado no site da empresa. No caso de um preço válido ajustado a execução da ordem estar disponível por um período de tempo menor que o prazo de execução, o pedido será rejeitado devido à expiração do preço. Sinta-se à vontade para se familiarizar com uma resposta detalhada, incluindo o tique-taque por histórico de tiques e o tempo exato de ativação da ordem no link abaixo: forexpeacearmycommunitythreadsforex4you-broker-eglobal-forex-com-big-problem-or-sc.47062page-2post-257578 Eles cobram Taxas enormes para a retirada, esta condição não é para um bom corretor. Pior experiência Responda por Viktor Smirnov enviada 25 de abril de 2016: Prezado Cliente, Lamentamos saber que você ficou insatisfeito com as alterações na comissão de depósito e retirada, mas observe que somos a corretora da Companhia e nosso principal objetivo é fornecer serviços de alta - Soluções tecnológicas relacionadas à negociação, desenvolvimento de qualidade dos serviços e introdução das novas tecnologias. Seja informado de que a nossa Empresa não cobra taxas por depósito ou montante de retirada. Todas as taxas são cobradas pelos próprios sistemas de pagamento. No entanto, compensamos 1,5 de comissão de depósito por todos os sistemas de pagamento. Exclusões são a Skrill e a Neteller, as comissões para depósito através destes sistemas são totalmente compensadas pela Companhia. Você pode encontrar comissões de retirada e depósito em nosso site forex4youenaccountwithdrawal-and-deposit-conditions Por favor, entre em contato conosco por quaisquer perguntas adicionais. Sinceramente, Forex4you Londres, Reino Unido Não está mal. A plataforma era difícil de entender no início, mas estou bem com isso agora. Eu prefiro a conta Dólar já que meu valor de pip é maior com isso. A conta do Cent parece ser filho. Ainda assim, este é um corretor decente. Comecei a negociar com forex4you há um mês. Eu pensei que era um corretor muito bom até agora. O que mudou a minha opinião foi o spread no EURCHF pouco antes do encerramento do mercado. Na sexta-feira, 18 de dezembro de 2015 foi de 56 pips. Isso é insano e quase explodiu minha conta. NDD, ok. Max 10 pips, ok. Mas 56 Respostas de Viktor Smirnov apresentadas 24 de abril de 2016: Caro Daniel, Um alargamento significativo de um spread de mercado variável geralmente pode ocorrer durante um baixo período de liquidez, quando a diferença entre oferta e demanda diminui. Normalmente pode ocorrer durante a noite. Em particular, 23:00 (CET) é uma hora, quando os bancos estão aplicando cálculos de rolagem. Durante este período, o número de participantes do mercado diminui, bem como a liquidez do mercado. Esse tipo de situação faz com que a propagação seja mais ampla. Forex4you é um dos melhores corretores. As retiradas são rápidas. Mas o depósito credcard sorexpay gateway está bloqueado em alguns bancos na Índia. Se você adicionar uma carteira aliada ou paypal, será fácil depositar dinheiro para comerciantes como eu da Índia 2014-02-23 1Star Forex4you todas as coisas como depósito, retirada, comissão ib etc. estão bem. Nas contas NDD, as encomendas serão abertas no preço cotado. Mas na conta do NDD forex4you, todos os pedidos são abertos com as cotações. Se Forex4 você corrigirá os requotes, será um dos melhores corretores no futuro. Você resolverá o problema Forex4you Adicionado por Juris Leznins em 2014-02-28 Conteúdo: Prezado viswanathan, Forex4you oferece vários tipos de conta. As contas DD têm execução de ordem instantânea. Neste tipo de execução, é possível obter requotes, mas como nossas estatísticas mostram que a contagem média de requotes que nossos clientes obtêm é extremamente baixa. As contas do NDD têm a execução do mercado onde as ordens são executadas imediatamente, sem longas filas e requotes. É possível obter deslizamento ou melhoria de preços. Todos os tipos de conta e condições que você pode encontrar on-line no nosso site aqui forex4youenaccountconditions Sinceramente, Forex4you Noman Khalid Abbasi muito muito bom e corretor cooperativo. Eu dou-lhe 100 dos 100 pontos. Meu número de conta é 3030702 E-global cent 2 tudo está tudo bem. Rápida retirada melhor suporte ao cliente etc. e eu também tenho uma sugestão se você fizer sua propagação mais melhor do que você será o número 1 no mercado forex. Fique abençoado. ) Obter código de widget Forex Reviews e Ratings Forex Performance Tests Forex Traders Tribunal Forex Trading Educação e Comunidade Fóruns Forex Calendário e ferramentas copiar Copyright ForexPeaceArmy. Todos os direitos reservados. Forex Peace Army, ForexPeaceArmy, FPA e o FPA Shield Logo são marcas registradas do Forex Peace Army. Todos os direitos reservados de acordo com o direito americano e internacional. Encerramento e exclusão de pedidos Os pedidos comerciais para o fechamento de ordens de mercado são formados usando a função OrderClose (). Function OrderClose () É uma função usada para fechar uma ordem de mercado. A função retorna TRUE, se o comércio for executado com sucesso. Retorna FALSO, se o comércio falhar. Bilhete - o número exclusivo da ordem. Muito - a quantidade de lotes a ser fechada. É permitido especificar um valor menor que a quantidade disponível de lotes na ordem. Nesse caso, se a solicitação comercial for executada com sucesso, a ordem será fechada em parte. Preço - fechar preço. Este parâmetro é definido de acordo com os requisitos e limitações aceitos para realização de negócios (ver Características e Regras de Ordem para Fazer Negociações e Apêndice 3). Se não houver preço solicitado disponível para fechar o pedido de mercado no fluxo de preços ou se estiver desatualizado, este pedido comercial será rejeitado se o preço estiver desatualizado, mas encontrado no fluxo de preços e, ao mesmo tempo, seu desvio A partir do intervalo de preços atual dentro do valor da derrapagem, o pedido comercial será aceito pelo terminal do cliente e enviado ao servidor de comércio. Deslizamento - o desvio máximo permitido do preço solicitado para o fechamento da ordem do preço de mercado (em pontos). Cor: a cor da seta de fechamento em um gráfico. Se este parâmetro não estiver disponível ou seu valor for igual ao CLRNONE, a seta não será exibida no gráfico. Se o programa contiver informações sobre o tipo da ordem a ser fechada, sobre o seu número único, bem como sobre a quantidade de lotes a serem fechados, é muito fácil fechar a ordem. Para isso, você deve usar no código do programa a chamada de função OrderClose () com parâmetros predefinidos. Por exemplo, se o número exclusivo da ordem Comprar for 12345 e se você deseja fechar 0,5 lotes, a chamada para a função que fecha a ordem pode parecer assim: Para decidir quais ordens e em que seqüência deve ser fechada, Você deve ter dados de todos os pedidos abertos na situação atual. No MQL4, há várias funções que podem ser usadas para obter vários dados que caracterizam qualquer ordem. Por exemplo, a função OrderOpenPrice () retorna o valor do preço aberto da ordem (ou do preço solicitado para ordens pendentes), a função OrderLots () retorna a quantidade de lotes, a função OrderType () retorna o tipo da ordem, Etc. Todas as funções que retornam os valores de uma chamada de característica de ordem em sua execução para a ordem que foi selecionada pela função OrderSelect (). Function OrderSelect () Para obter os parâmetros de qualquer uma das suas ordens (não importa o mercado ou pendentes, fechados ou excluídos), você deve primeiro selecioná-lo usando a função OrderSelect (). OrderSelect é uma função que seleciona uma ordem para novas operações com ele. Ele retorna TRUE, se a função for executada com sucesso. Caso contrário, ele retorna FALSE. Índice - a posição ou o número da ordem, depende do segundo parâmetro. Selecione - o símbolo do método de seleção. A seleção de parâmetros pode levar um dos dois valores possíveis: SELECTBYPOS - no índice de parâmetros, o número da ordem na lista é retornado (a numeração começa com 0), SELECTBYTICKET - no índice de parâmetros, o número do ticket (o número de ordem exclusivo) é devolvida. Pool - a fonte de dados para seleção. O pool de parâmetros é usado, quando a seleção de parâmetro é igual ao valor de SELECTBYPOS. O pool de parâmetros é ignorado, se a ordem for selecionada pelo número do ticket (SELECTBYTICKET). O pool de parâmetros pode assumir dois valores possíveis: MODETRADES (por padrão) - a ordem é selecionada em ordens abertas e pendentes, ou seja, entre as ordens exibidas na guia quotTradequot da janela quotTerminalquot MODEHISTORY - a ordem é selecionada em fechado e excluído Ordens, ou seja, entre os pedidos exibidos na guia quotAccount Historyquot da janela quotTerminalquot. Nesse caso, a profundidade do histórico especificado pelo usuário para exibição de pedidos fechados e excluídos é importante. Para demonstrar o método de utilização de funções comerciais para o fechamento de ordens de mercado, resolva um problema: Problema 28. Escreva um script que encerre uma das ordens de mercado disponíveis na conta. A execução do script deve resultar no fechamento da ordem mais próxima da localização do script anexado à janela de símbolos com o mouse. Suponha que existam três ordens de mercado abertas no terminal para o símbolo EurUsd e um pedido pendente aberto para UsdChf: Fig. 90. Exibindo vários pedidos abertos para diferentes símbolos na janela do terminal. Devemos escrever um script desse tipo que possa ser arrastado pelo mouse a partir da janela QuotNavigatorquot para a janela de símbolos, o que deve resultar no fechamento de um dos pedidos de mercado, ou seja, a ordem mais próxima do cursor (a partir do momento em que o usuário Liberou o botão do mouse). Na Fig. 91, você pode ver a alternativa, na qual o cursor está mais próximo da ordem Sell 4372889. É esse pedido que deve ser fechado como resultado da execução do script. Para resolver o problema, devemos selecionar (usando a função OrderSymbol ()) entre todos os pedidos apenas aqueles abertos para o símbolo, na janela da qual o script é descartado. Então, devemos encontrar os preços abertos de todos os pedidos de mercado selecionados (ou seja, executar a função OrderOpenPrice () sucessivamente para cada pedido). Conhecendo os preços abertos, podemos selecionar facilmente um deles que corresponda à afirmação do problema. Para especificar os valores adequados dos parâmetros na função OrderClose (), também precisamos conhecer alguns outros dados sobre a ordem selecionada: a quantidade de lotes (determinada pela função OrderLots ()) eo número de ordem exclusivo (determinado pela Função OrderTicket ()). Além disso, para encontrar um ou outro preço de uma cotação bidirecional, temos que saber o tipo de ordem (determinado pela função OrderType ()). Vamos considerar quais parâmetros devem ser especificados na função OrderSelect () para obter as características de ordem acima. Em primeiro lugar, é necessário escolher o método de seleção de pedidos. Em nosso problema, o método de seleção é determinado pela própria declaração do problema: os dados sobre os números de ordem devem estar indisponíveis no programa a partir do momento do lançamento do script para execução, ou seja, o programa é considerado conter um bloco que faria Determine esses números de ordem. Isso significa que devemos verificar todos os pedidos, um por um, exibidos em quotTerminalquot (Fig. 64.1), então precisamos usar o parâmetro SELECTBYPOS. A fonte para seleção de pedidos também é óbvia. Para resolver o problema, não há necessidade de analisar pedidos fechados e excluídos. Nesse caso, estamos interessados ​​somente em pedidos de mercado, então vamos procurar neles usando o parâmetro MODETRADES na função OrderSelect (). Para o pool de parâmetros, o valor padrão de MODETRADES é especificado no cabeçalho da função, portanto, pode ser ignorado. Abaixo, é mostrado como um bloco para análise de mercado e pedidos pendentes pode ser construído: no cabeçalho do operador do ciclo, o valor inicial é especificado como i1, enquanto que a condição para sair do ciclo é a expressão iltOrdersTotal (). Function OrdersTotal () retorna a quantidade total de pedidos de mercado e pendentes, ou seja, os pedidos que são mostrados na guia quotTradequot da janela quotTerminalquot. É por isso que haverá tantas iterações no ciclo quanto muitos pedidos participarem na negociação. Em cada iteração, quando a condição é calculada no operador se, a função OrderSelect (i-1, SELECTBYPOS) será executada. O seguinte assunto importante deve ser notado aqui: a numeração de pedidos na lista de pedidos de mercado e pendentes começa com zero. Isso significa que a primeira ordem na lista (Fig. 90) é colocada na posição zero, a posição da segunda ordem é numerada como 1, a da terceira ordem é numerada como 2, etc. É por isso que, na função Chamada OrderSelect (), o valor do índice é dado como i-1. Assim, para todos os pedidos selecionados, este índice será sempre 1 menor que o valor da variável i (que coincide com o número da próxima iteração). A função OrderSelect () retorna true, se a ordem for selecionada com sucesso. Isso significa que é possível que uma seleção de pedidos possa falhar. Isso pode acontecer, se a quantidade de pedidos mudou durante o processamento. Ao programar no MQL4, você deve lembrar que um programa aplicativo funcionará no modo em tempo real e que, enquanto estiver processando alguns parâmetros, os valores desses parâmetros podem mudar. Por exemplo, a quantidade de ordens de mercado pode mudar como resultado tanto da abertura do fechamento de pedidos quanto da modificação de pedidos pendentes em mercados. É por isso que você deve manter a seguinte regra ao programar o processamento de pedidos: as ordens devem ser processadas o mais rápido possível, enquanto o bloco de programa responsável por esse processamento não deve, se possível, conter linhas de programas redundantes. De acordo com o código representado na Fig. 64.3, no cabeçalho do operador se, o programa analisa se a próxima ordem está disponível na lista de pedidos no momento em que é selecionada. Se a próxima ordem estiver disponível, o controle será passado para o corpo do operador se for processar os parâmetros da ordem. Deve-se notar que tal construção não ajuda muito, em caso de possíveis conflitos, porque a ordem pode ser perdida (fechada) durante o processamento de seus parâmetros. No entanto, esta solução acaba por ser mais eficiente se, a partir do momento da sua seleção, a ordem não está mais disponível. No corpo do operador se, os parâmetros da ordem selecionada são analisados. Ao executar as funções OrderOpenPrice (), OrderTicket (), OrderType () e outros do tipo, cada um deles retornará o valor de uma determinada característica da ordem selecionada como resultado da execução da função OrderSelect (). Todo o raciocínio acima foi usado no programa que resolveria o Problema 28. Um exemplo de um script simples destinado ao fechamento de uma ordem de mercado, cujo preço aberto está mais próximo da localização do script que os preços abertos de outros pedidos (Closeorder. mq4). Todo o código do programa closeorder. mq4 está concentrado no início da função especial (). No bloco 1-2, algumas variáveis ​​são inicializadas. A variável Dist é a distância do local onde o script foi descartado para a ordem mais próxima. A variável RealOrder é uma bandeira que exibe a disponibilidade de pelo menos uma ordem de mercado no terminal do cliente (valor não negativo). A variável WinPrice é o preço, no qual o usuário anexou o script à janela de símbolos. No bloco 2-6, a ordem é analisada: uma das ordens disponíveis é atribuída para ser fechada. O bloco 6-10 é o bloqueio do fechamento do pedido e do processamento dos erros que podem ocorrer durante o desempenho do comércio. A partir do momento em que o usuário anexou o script à janela de símbolos, os valores das variáveis ​​são calculados no bloco 1-2, a variável WinPrice que toma o valor do preço, ao nível do qual o usuário anexou o script. Agora é necessário encontrar a ordem (com suas características) mais próxima dessa localização. No ciclo para (bloco 2-6), as ordens são pesquisadas. No bloco 2-3, o programa verifica se há uma ordem na próxima linha do quotTerminalquot. Se for encontrada uma ordem, o controle é passado para o corpo do operador se for obter e analisar as características dessa ordem. No bloco 3-4, as ordens abertas para símbolos errados (não o símbolo, para o qual o programa está sendo executado) são filtradas. No nosso caso, é a ordem 4372930 aberta para UsdChf. Function OrderSymbol () retorna o nome do símbolo da ordem selecionada. Se esse nome de símbolo for diferente desse, para o qual o programa está sendo executado, a iteração atual está quebrada, impedindo que o pedido aberto para outro símbolo seja processado. Se o pedido em análise acabar sendo aberto para o quotourquot symbol, mais uma verificação será realizada. O tipo de ordem é determinado usando a função OrderType () (veja Tipos de Operações). Se o tipo de ordem for superior a 1, isso significa que a ordem é pendente. Nesse caso, a iteração atual também está interrompida, porque não estamos interessados ​​em pedidos pendentes. No nosso exemplo, temos tal ordem, mas está aberto para outro símbolo, então já foi filtrado. Todos os pedidos que passam o bloco 3-4 com sucesso são os de mercado. O bloco 4-5 destina-se a selecionar apenas uma ordem de todos os pedidos de mercado que tenham passado com sucesso o bloco anterior. Essa ordem deve ser a mais próxima do preço predefinido (o valor da variável WinPrice). O usuário não precisa requisitar a linha de pedido com o cursor do mouse. A ordem que está mais próxima do que qualquer outro pedido ao cursor a partir do momento do lançamento do script para execução será selecionada. O preço aberto do pedido processado é encontrado usando a função OrderOpenPrice (). Se o valor absoluto da distância entre o preço da ordem atual e a cotação do quotcursor for inferior à mesma distância para a ordem anterior, a ordem atual será selecionada (o valor absoluto da distância é necessário para excluir a influência de A posição do cursor - abaixo ou acima da linha de pedido). Neste caso, este pedido será memorizado na iteração atual do ciclo como corredor frontal por ser fechado. Para este pedido, o número do bilhete (o número individual da ordem) e a quantidade de lotes são calculados no final do bloco 4-5. Neste exemplo (Fig. 90), a quantidade total de pedidos é quatro (três de mercado e uma ordem pendente), então haverá quatro iterações executadas no ciclo, o que resultará na busca de todos os dados necessários para o fechamento de um Ordem selecionada. Em seguida, o controle no programa de execução será passado para o operador do ciclo enquanto (bloco 6-10). No bloco 6-7, os pedidos de mercado encontrados são verificados quanto à disponibilidade. Se nenhuma ordem de mercado for encontrada no bloco 2-4 (é bem possível, em geral), o valor da bandeira RealOrder permanece igual a -1, o que significa a indisponibilidade de pedidos de mercado. Se a verificação no bloco 6-7 não detectar pedidos de mercado, a execução do ciclo enquanto estiver quebrada, o programa termina suas operações. Se o valor da variável RealOrder for igual a 0 ou 1, isso significa que um mercado está predefinido para fechamento e deve ser fechado. No bloco 7-8, de acordo com o tipo de ordem, o preço de fechamento da ordem é calculado. É o valor das ordens de compra por compra e o valor de pedir pedidos de venda (consulte Requisitos e limitações na negociação). No bloco 7-8, os valores da variável auxiliar Texto são calculados. O pedido comercial para o encerramento da ordem é formado na função OrderClose () na linha abaixo: Trade function OrderClose () retorna true, se o comércio for feito com sucesso e falso, se não. Se a solicitação comercial for executada com sucesso no servidor, o valor verdadeiro será atribuído à variável Ans (resposta). Nesse caso, ao executar o bloco 8-9, o programa informará o usuário sobre o encerramento bem sucedido da ordem. Depois disso, a execução do operador do ciclo será interrompida e o programa encerrará suas operações. Caso contrário, o controle será passado para o bloco 9-10 para analisar o erro retornado pelo terminal do cliente para o programa. No início do bloco 9-10, o código de erro é calculado. Depois disso, de acordo com o código de erro, a saída do programa ou a operação repetida são executadas. No primeiro interruptor do operador, o programa processa os erros que são implicitamente superáveis, ou seja, os erros podem ser considerados como dificuldades temporárias na realização do comércio. Todas as ações necessárias são tomadas para cada um desses erros, então a iteração atual é interrompida e a execução do ciclo enquanto reinicia. (Por favor, note que, neste exemplo, usamos para o processamento de erros, o interruptor do operador que foi encerrado como resultado do uso do operador, que, como tal, não se destina a passar do controle fora do interruptor do operador. Esta construção funciona Apenas porque o interruptor do operador é parte dos conteúdos do operador do ciclo externo enquanto o operador continua e interrompe a iteração atual passando o controle para o cabeçalho do operador enquanto). Se o código de erro não for processado no primeiro interruptor do operador, este erro é considerado crítico. Neste caso, o controle é passado para o segundo interruptor do operador, que é executado para informar o usuário que um ou outro erro crítico ocorreu. Além disso, o programa usa o intervalo do operador que interrompe a execução do ciclo enquanto. Saindo do ciclo enquanto, por qualquer motivo, resultará na passagem do controle para o bloco 9-10 que produz uma mensagem sobre o final das operações do programa. O retorno do operador pára a execução do início da função especial () e o programa termina suas operações. O resultado prático obtido após o lançamento do script nas condições indicadas (ver Fig. 90 e 91) é mostrado abaixo. O comércio foi feito com sucesso no servidor. Como resultado do fechamento de uma das ordens, há duas ordens deixadas na janela de EurUsd. O fechamento de pedidos também foi exibido na janela quotTerminalquot: Fig. 94. Após Execução do Script closeorder. mq4. Duas ordens de mercado são exibidas na janela quotTerminalquot. Mais tarde, os outros dois pedidos são fechados usando esse script também. Excluindo ordens pendentes Pedidos comerciais para exclusão de pedidos pendentes são formados usando a função OrderDelete (). Function OrderDelete () A função exclui a ordem pendente anteriormente colocada. Ele retorna TRUE, se ele tiver funcionado com sucesso. Caso contrário, ele retorna FALSE. Bilhete - o número exclusivo de um pedido. Arrowcolor - a cor de uma seta em um gráfico. Se este parâmetro não estiver disponível ou seu valor for igual ao CLRNONE, a seta não será exibida no gráfico. É fácil ver que a função OrderDelete () não contém uma especificação do volume e o preço de fechamento da ordem a ser excluída. O pedido é excluído, independentemente de qualquer preço de mercado. A eliminação parcial de uma ordem também é impossível. Você pode diminuir a quantidade de lotes em uma ordem pendente em duas etapas: exclua o pedido existente e, em seguida, coloque um novo pedido pendente com a quantidade diminuída (qualquer) de lotes. O algoritmo do programa que irá excluir uma ordem pendente pode ser bastante idêntico ao do encerramento da ordem do mercado. Uma pequena diferença é que nenhum preço próximo é necessário para excluir uma ordem pendente, então o programa abaixo não contém o bloco que atualiza os preços de mercado. Um exemplo de um script simples destinado a excluir uma ordem pendente, cujo preço solicitado está mais próximo da localização do script que os preços de outras ordens pendentes (deleteorder. mq4). O bloco de processamento de erros também foi modificado ligeiramente. Você deve considerar a possibilidade de erros relacionados às mudanças de preços (erros 135 e 136) ao fechar ordens de mercado, mas tais erros não ocorrem ao excluir pedidos pendentes. Pelo mesmo motivo, a função RefreshRates () é usada em nenhum lugar do programa. O processamento de erros como erro 4 e erro 137 (ver códigos de erro) pode ser um pouco difícil. Por exemplo, ao obter o erro 137, o programa pode levar em consideração que o quotbroker está ocupado. No entanto, surge uma questão natural: quando o corretor é livre, para que o usuário continue seu erro comercial 137 não fornece essa informação. É por isso que o programador deve decidir-se como construir o programa processando esses erros corretamente. Em um caso simples, a solicitação pode ser repetida após uma certa pausa (em nosso exemplo, em 3 segundos). Por outro lado, após uma série de tentativas mal sucedidas de apagar (ou, em casos comuns, fechar, abrir ou modificar) uma ordem, o servidor pode retornar o erro 141 - muitos pedidos. Este erro resulta em que o script deleteorder. mq4 deixa de funcionar. Geralmente, tais conflitos não são questões de programação. Nesses casos, você deve entrar em contato com o serviço de suporte dos centros de negociação e esclarecer os motivos da rejeição para executar o pedido comercial. O erro 145 pode ocorrer, se uma ordem pendente (em um caso comum, pode ser uma ordem de parada de um pedido de mercado) é muito próxima do preço de mercado. Este erro não ocorre, se você estiver negociando constantemente em um mercado tranquilo. Se os preços mudam rapidamente, seu corretor pode decidir que uma determinada ordem será aberta em breve, então o corretor não permitirá excluí-la ou modificá-la. Esse erro é considerado no script como crítico e resulta em término do programa (não faz sentido para incomodar o corretor com solicitações comerciais). Se o preço mudar depois de um tempo, você pode tentar excluir o pedido, iniciando o script para execução novamente. Geralmente, a ocorrência do erro 145 pode ser evitada, se você considerar o nível de congelamento definido pelo centro de negociação. O nível de congelamento é um valor que determina a faixa de preços, dentro da qual a ordem é considerada como congelada, ou seja, pode ser proibido excluí-la. Por exemplo, se uma ordem pendente for colocada em 1.2500 e o nível de congelamento for igual a 10 pontos, significa que, se o preço variar entre 1.2490 e 1.2510, a eliminação da ordem pendente é proibida. Você pode obter o valor de nível de congelamento executando a função MarketInfo () com o identificador de solicitação de MODEFREEZELEVEL. Encerrar ordens opuestas Oposta (contador) é um pedido de mercado aberto na direção oposta à direção de outro pedido de mercado aberto para o mesmo símbolo. Se você tiver dois pedidos opostos para um certo símbolo, você pode fechá-los simultaneamente, um por outro, usando a função OrderCloseBy (). Você economizará um spread se você executar essa operação. Função OrderCloseBy () A função fecha uma ordem de mercado por outro pedido de mercado aberto para o mesmo símbolo na direção oposta. A função retorna TRUE, se for concluída com sucesso, e FALSE, se não. Bilhete - o número exclusivo da ordem a ser fechada. Oposto - o número único da ordem oposta. Cor: a cor da seta de fechamento em um gráfico. Se este parâmetro não estiver disponível ou seu valor for igual ao CLRNONE, a seta não será exibida no gráfico. Não é necessário que as ordens opostas tenham o mesmo volume. Se você fechar um pedido por uma ordem oposta, o comércio será executado no volume da ordem que tenha o menor volume. Vamos considerar um exemplo. Deixe haver dois pedidos de mercado do mesmo volume no terminal do cliente, um Buy and one Sell. Se fecharmos cada um deles separadamente usando a função OrderClose (), nossa saída econômica será a soma dos lucros obtidos de cada ordem: Fig. 95. Resultado do fechamento separado de pedidos usando a função OrderClose (). No entanto, se usarmos nesta situação, a função OrderCloseBy () destinada ao fechamento oposto de pedidos, a saída econômica será melhor (em comparação com a alternativa anterior) pela quantidade proporcional ao custo de uma distribuição de pedidos: a Fig. 96. Resultado do encerramento de pedidos por outros pedidos usando a função OrderCloseBy (). É óbvio que, se houver ordens opostas a serem fechadas no terminal, seria economicamente correto usar a função OrderCloseBy (), não OrderClose (). Quanto a economizar um spread ao fechar ordens opostas, devemos dar algumas explicações mais gerais. De fato, abrir um pedido (por exemplo, uma ordem de compra) é, implicitamente, um comércio oposto à abertura de uma ordem na direção oposta (ou seja, uma ordem de venda) ao mesmo grau que o fechamento da ordem (a compra ordem). Em outras palavras, é economicamente o mesmo qual das alternativas a utilizar: apenas para fechar uma ordem de mercado ou para abrir uma ordem oposta do mesmo volume (e depois fechar as duas ordens entre si). A diferença entre estas duas alternativas pode consistir apenas em diferentes métodos utilizados em diferentes centros de negociação para calcular o dinheiro a ser desviado para suportar ordens de mercado (ver Fig. 85 e Fig. 88). Também é fácil ver que o preço de fechamento não é necessário ser especificado na função OrderCloseBy () para fechar ordens opostas. É desnecessário, porque o lucro e a perda de duas ordens opostas repitam mutuamente, de modo que a produção econômica total não depende do preço de mercado. Claro, esta regra é efetiva somente para pedidos do mesmo volume. Se, por exemplo, temos duas ordens para um símbolo: uma ordem de compra de 1 lote e uma ordem de venda de 0,7 lotes, esse comércio depende apenas do preço de mercado relacionado com a parte de Compra de 0,3 lot, enquanto que 0,7 lotes de Ambos os pedidos não dependem do preço do símbolo. As ordens opostas não influenciam os resultados comerciais totais. É por isso que as táticas de negociação baseadas na abertura de ordens opostas não possuem conteúdo informal (por esse motivo, alguns centros de negociação fecharam forçosamente quaisquer ordens opostas dentro dos montantes coincidentes). A única influência (negativa) dessas táticas pode consistir em desviar dinheiro de acordo com as regras aceitas em alguns centros de negociação. Além disso, a disponibilidade de várias ordens opostas fornece mais dificuldades no contexto da negociação programada do que uma ordem. Se considerarmos várias comissões e swaps (para cada pedido de mercado separadamente), a necessidade de fechar ordens opostas torna-se óbvia. Um exemplo de um script simples que fecha todas as ordens opostas para um símbolo (closeby. mq4). O algoritmo do script acima é um pouco diferente dos precedentes. Esta diferença consiste em que o mesmo código deve ser executado muitas vezes para fechar vários pedidos (a quantidade de pedidos a serem fechados não limitado) com sucesso. O script foi testado em um conjunto aleatório de ordens de mercado. 5 ordens de diferentes volumes estão representadas na Fig. 97 abaixo. Para fechar as ordens opostas disponíveis, devemos predefinir os critérios de seleção. This criterion in the given algorithm is the order size - the orders of larger volumes are closed first, then the orders of smaller volumes are closed. After the opposite orders of different volumes have been closed, the orders of the resting volumes remain. For example, the closing of opposite orders Buy (1 lot) and Sell (0.8 lot) will result in that order Buy (0.2 lot) remains opened. This is why, after each successful closing, the program must refer to the updated list of orders to find two other largest opposite orders in this updated list. The above calculations are realized in a (conditionally) continuous cycle while, in blocks 2-10. the beginning of the cycle, at each iteration the program supposes that there are no orders of a certain type anymore. For this, the the value of -1 is assigned to the variables HedgBuy and HedgSell. The algorithm of the order-processing block is, in general, preserved (see the code of closeby. mq4). In the order-searching cycle for, namely in block 3-4, like in the preceding programs, quotwrongquot orders are filtered out. In this case, these are orders opened for another symbol and pending orders. In block 4-5, the volume of each order checked in block 3-4 is calculated. If it turns out during calculations that the currently processed order is the largest in volume among all orders processed, its ticket is stored. This means that the order having this ticket is, at this stage of calculations, a candidate for closing of opposite orders. By the moment when the last iteration of the cycle for finishes, the tickets of orders with maximum amount of lots opened in opposite directions have already been known. These orders are selected by the program. If any orders of any types have already become unavailable by this moment, block 5-6 exits the program. Block 6-10 represents error processing. It is completely the same as those considered above (in this and preceding sections). The trade request for closing of opposite orders is formed in block 7-8 using the function OrderCloseBy(). If it fails, according to the error code, the program passes the control either to retry making the trade (for the same tickets) or to the operator return that ends the program operations. If a trade is successfully performed, the program exits the error-processing block, and the current iteration of the most external cycle while will end. the next iteration of this cycle, all calculations will be repeated: searching in the orders available, selecting market orders, selected one ticked for each of order types, forming a trade request for opposite closing, and subsequent error analyzing. This cycle is executed until there are no available orders of a certain type (or, in a particular case, of both types) in the terminal. This event will be calculated in block 5-6, then the program ends its operations. The following messages were received at the execution of the script closeby. mq4 intended for closing of market orders shown in Fig. 97: On the quotAccount Historyquot tab of the quotTerminalquot window, you can see that some orders are closed with a zero profit. This is what we save when closing opposite orders. You can compare economic results in Fig. 97 and Fig. 99: On the quotJournalquot tab in the quotTerminalquot window, you can track the history of order closing (the latest events are on top): the execution of the script, according to the algorithm, the orders of maximum volume available at the moment will be closed. In spite of the fact that the orders were opened in a random sequence (Fig. 97), the first orders to be closed were Buy 778594 and Sell 778595, with the volumes of 1 lot and 0.8 lot, respectively (the lower lines in Fig. 100). Since these orders have different volumes, the opposite closing produced a new order, Buy 778597, with the resting volume of 0.2 lot. Then the program selected orders Buy 778592 and Sell 778593, 0.5 lot each, to be closed as opposite orders. These orders were closed without opening a resting order. By the moment the third iteration started, two orders had remained in the symbol window in the external cycle: initial order Sell 778596 of 0.3 lot and the order opened as a result of the execution of the script, Buy 778597 of 0.2 lot. In the upper lines of Fig. 100, you can see that those orders are also closed as opposite orders. The volumes of those orders were different, so the last trade resulted in that one market order of 0.1 lot remained in the symbol window (please note the economic results): It is convenient to use the script closeby. mq4 in manual trading, especially in cases of many differently-directed market orders available in the symbol window.

No comments:

Post a Comment