Sunday 18 March 2018

Close for forex


Metatrader 4: como fechar uma posição.


Para obter lucros com a diferença de cursos, é necessário fechar a posição. Para fechar uma posição, o comerciante deve fazer um comércio contrário ao primeiro que ele executou. Por exemplo, se o primeiro comércio comprasse um lote de EUR / USD, um lote da mesma moeda deve ser vendido para fechar o cargo.


Uma posição pode ser fechada total ou parcialmente, dependendo do volume de um comércio executado na direção contrária.


Existem algumas maneiras de fechar a posição:


Clique duas vezes na posição aberta na guia "Comércio" da janela "Terminal" Clique com o botão direito do mouse para obter o menu de contexto na guia "Comércio" da janela "Terminal" e (Foto 37)


Foto. 37 - menu Fechar ordem.


Clique em Fechar ordem. A ordem # ____. "Janela aparece (figura 38).


Foto. 38 - Janela Close Order MT4.


Telefone: +44 125 920 7457 FAX: +44 (0) 844 507 0446.


Londres 78 York Street W1H 1DP.


info @ paxforex.


Suporte 24/5.


Legal (Direitos autorais) © 2018 - 2018 PAXFOREX Todos os direitos reservados.


Número de registro do grupo Laino 21973 IBC 2018. Aviso de risco: Observe que a comercialização de produtos alavancados pode envolver um nível significativo de risco e não é adequado para todos os investidores. Você não deve arriscar mais do que está preparado para perder. Antes de decidir negociar, assegure-se de compreender os riscos envolvidos e levar em consideração seu nível de experiência. Procure conselhos independentes, se necessário.


Por favor, goste do site PaxForex na sua rede favorita e obtenha acesso à página de registro da conta de bônus gratuita!


Metatrader 4: como fechar uma posição.


Para obter lucros com a diferença de cursos, é necessário fechar a posição. Para fechar uma posição, o comerciante deve fazer um comércio contrário ao primeiro que ele executou. Por exemplo, se o primeiro comércio comprasse um lote de EUR / USD, um lote da mesma moeda deve ser vendido para fechar o cargo.


Uma posição pode ser fechada total ou parcialmente, dependendo do volume de um comércio executado na direção contrária.


Existem algumas maneiras de fechar a posição:


Clique duas vezes na posição aberta na guia "Comércio" da janela "Terminal" Clique com o botão direito do mouse para obter o menu de contexto na guia "Comércio" da janela "Terminal" e (Foto 37)


Foto. 37 - menu Fechar ordem.


Clique em Fechar ordem. A ordem # ____. "Janela aparece (figura 38).


Foto. 38 - Janela Close Order MT4.


Telefone: +44 125 920 7457 FAX: +44 (0) 844 507 0446.


Londres 78 York Street W1H 1DP.


info @ paxforex.


Suporte 24/5.


Legal (Direitos autorais) © 2018 - 2018 PAXFOREX Todos os direitos reservados.


Número de registro do grupo Laino 21973 IBC 2018. Aviso de risco: Observe que a comercialização de produtos alavancados pode envolver um nível significativo de risco e não é adequado para todos os investidores. Você não deve arriscar mais do que está preparado para perder. Antes de decidir negociar, assegure-se de compreender os riscos envolvidos e levar em consideração seu nível de experiência. Procure conselhos independentes, se necessário.


Por favor, goste do site PaxForex na sua rede favorita e obtenha acesso à página de registro da conta de bônus gratuita!


Como fechar um comércio.


Fechar um comércio é simples. Depois de fechar um comércio, ele aparece na janela de posições fechadas. Saiba como fechar um comércio neste vídeo.


Com o Trading Station, suas posições de compra e venda estão fechadas com o botão Fechar. O menu Quantidade (K) especifica a quantidade de posição para fechar, tudo ou parte. Parte da posição pode ser fechada se mais de um lote foi aberto. Depois de fechar um comércio, aparece na janela de Posições fechadas.


Vídeos educacionais: todos os vídeos são fornecidos apenas para fins educacionais e os clientes não devem confiar no conteúdo ou políticas, pois podem diferir em relação à entidade com a qual você está negociando. Além disso, quaisquer opiniões, análises, preços ou outras informações contidas neste site são fornecidas para fins educacionais e não constituem conselhos de investimento. A FXCM não aceita a 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 tal informação.


Mídia relacionada.


Recursos adicionais.


Escolher categoria.


Tem uma opinião sobre a libra?


Forex, propagação de apostas e CFDs.


Conta de Prática Gratuita.


Obtenha Free & Pound; 50,000, juntamente com um guia LIVRE de negociação Forex.


Parabéns,


Você se registrou com sucesso para uma FXCM Forex Practice Account.


Comece a negociar - FREE £ 50,000 Practice Account.


Salve seu Login & amp; Senha.


Use o login e a senha abaixo para acessar sua demo em nossas plataformas de web, desktop ou móveis. Suas credenciais de login também foram enviadas para você.


Outras opções de plataforma:


Quer o nosso aplicativo inovador Trading Station Mobile? Escolha uma plataforma de negociação móvel abaixo:


Não vê seu dispositivo móvel? Você sempre pode entrar na Trading Station a partir do seu Mac ou PC. Verifique o seu e-mail para obter instruções.


O registro de demonstração está atualmente em baixo para manutenção programada.


Aviso de Risco: Nosso serviço inclui produtos que são negociados na margem e correm risco de perdas em excesso de seus fundos depositados. Os produtos podem não ser adequados para todos os investidores. Certifique-se de que compreende perfeitamente os riscos envolvidos.


Sobre a FXCM.


Plataformas Populares.


Lançamento do software.


Mais recursos.


Serviço ao cliente.


Políticas FXCM.


Aviso de investimento de alto risco: o trading forex / CFD's na margem comporta um alto nível de risco e pode não ser adequado para todos os investidores, pois poderá sofrer perdas em excesso de depósitos. A alavancagem pode funcionar contra você. Os produtos são destinados a clientes profissionais e de varejo. Devido às certas restrições impostas pela legislação e regulamentação locais, os clientes minoristas residentes na Alemanha podem sustentar uma perda total de fundos depositados, mas não estão sujeitos a obrigações de pagamento subsequentes além dos fundos depositados. Esteja ciente e compreenda todos os riscos associados ao mercado e à negociação. Antes de negociar quaisquer produtos oferecidos pela Forex Capital Markets Limited, incluindo todas as agências da UE, a FXCM Australia Pty. Limited, quaisquer afiliadas de empresas acima mencionadas ou outras empresas do grupo de empresas FXCM [coletivamente o "Grupo FXCM"], considerem cuidadosamente sua situação financeira e seu nível de experiência. Se você decidir comercializar produtos oferecidos pela FXCM Australia Pty. Limited ("FXCM AU") (AFSL 309763), você deve ler e entender o Guia de Serviços Financeiros, a Declaração de Divulgação do Produto e os Termos de Negócios. O Grupo FXCM pode fornecer comentários gerais que não se destinam a conselho de investimento e não devem ser interpretados como tais. Procure um conselho financeiro separado. O Grupo FXCM não assume qualquer responsabilidade por erros, imprecisões ou omissões; não garante a precisão, integridade das informações, texto, gráficos, links ou outros itens contidos nesses materiais. Leia e compreenda os Termos e Condições nos sites do Grupo FXCM antes de tomar novas medidas.


O Forex Capital Markets Limited ("FXCM LTD") é uma subsidiária operacional do grupo de empresas FXCM (coletivamente, o "Grupo FXCM"). Todas as referências neste site para "FXCM" referem-se ao Grupo FXCM.


O Forex Capital Markets Limited é autorizado e regulamentado no Reino Unido pela Autoridade de Conduta Financeira. Número de registro 217689.


Tratamento tributário: o tratamento fiscal do Reino Unido das suas atividades de apostas financeiras depende das circunstâncias individuais e pode estar sujeito a alterações no futuro, ou pode diferir em outras jurisdições.


Direitos autorais e cópia; 2018 Forex Capital Markets. Todos os direitos reservados.


Companhia incorporada em Inglaterra e Wales No.04072877 com sede social como acima.


Utilizamos cookies para melhorar o desempenho e a funcionalidade do nosso site, o que, em última análise, melhora a sua experiência de navegação. Ao continuar a navegar neste site, você concorda com o uso de cookies. Você pode alterar suas configurações de cookies a qualquer momento. Esse website utiliza cookies. Ao continuar a usar este site, você concorda com isso. Saber mais.


Seu navegador está desatualizado!


Atualize seu navegador agora para ver este site corretamente. Atualize meu navegador agora ou visite esta página no seu celular ou tablet.


Fechar e Executar Pedidos.


Encerramento de ordens de mercado.


Os pedidos comerciais para o fechamento de pedidos de mercado são formados usando a função OrderClose ().


Função Ordem fechar ()


É 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 único da ordem.


muito - o montante de lotes a ser fechado. É 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 Requisição para Negociação e Apêndice 3). Se não houver preço disponível disponível para fechar o pedido de mercado no fluxo de preços ou se estiver desatualizado, esse pedido comercial será rejeitado; se o preço estiver desatualizado, mas encontrado no fluxo de preços e, ao mesmo tempo, seu desvio do preço atual varia 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 a CLR_NONE, a seta não será exibida no gráfico.


Se o programa contiver informações sobre o tipo de ordem a ser fechada, sobre seu número exclusivo, 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 lot, a chamada para a função que fecha a ordem pode parecer assim:


Para decidir sobre quais ordens e em qual seqüência deve ser fechada, você deve ter dados de todos os pedidos abertos na situação atual. No MQL4, há uma série de 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 pedidos 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 um dos seus pedidos (independentemente do 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 FALSO.


í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. Parâmetro 'selecionar' pode tomar um dos dois valores possíveis:


SELECT_BY_POS - no parâmetro 'index', o número da ordem na lista é retornado (a numeração começa com 0),


SELECT_BY_TICKET - no parâmetro 'index', o número do ticket (o número de ordem exclusivo) é retornado.


pool - a fonte de dados para seleção. O parâmetro 'pool' é usado, quando o parâmetro 'select' é igual ao valor de SELECT_BY_POS. O parâmetro 'pool' é ignorado, se a ordem for selecionada pelo número do ticket (SELECT_BY_TICKET). O parâmetro 'pool' pode assumir dois valores possíveis:


MODE_TRADES (por padrão) - a ordem é selecionada em ordens abertas e pendentes, isto é, entre os pedidos exibidos no & quot; trade & quot; guia do & quot; Terminal & quot; janela;


MODE_HISTORY - a ordem é selecionada em ordens fechadas e excluídas, ou seja, entre as ordens exibidas no & quot; Account History & quot; guia do & quot; Terminal & quot; janela. 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, vamos resolver um problema:


Suponha que existam três ordens de mercado abertas no terminal para o símbolo Eur / Usd e um pedido pendente aberto para Usd / Chf:


Fig. 90. Exibindo vários pedidos abertos para diferentes símbolos na janela do terminal.


Devemos escrever esse script que pode ser arrastado pelo mouse a partir do & quot; Navegador & quot; janela na janela de símbolos, que deve resultar no fechamento de uma das ordens de mercado, ou seja, a ordem mais próxima do cursor (a partir do momento em que o usuário soltou o botão do mouse). Na Fig. 91, você pode ver a alternativa, na qual o cursor está mais próximo da ordem Vender 4372889. É esse pedido que deve ser fechado como resultado da execução do script.


Fig. 91. Script closeorder. mq4 usado para fechar a ordem selecionada.


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. No nosso problema, o método de seleção é determinado pela própria declaração do problema: os dados sobre 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 determinaria esses números de ordem. Isso significa que devemos verificar todos os pedidos, um por um, exibidos em "Terminal & quot; (Fig. 64.1), então precisamos usar o parâmetro SELECT_BY_POS.


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. Neste caso, estamos interessados ​​apenas em pedidos de mercado, então vamos buscá-los usando o parâmetro MODE_TRADES na função OrderSelect (). Para o parâmetro 'pool', o valor padrão de MODE_TRADES é especificado no cabeçalho da função, portanto, pode ser ignorado.


Abaixo está 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 i = 1, enquanto a condição para sair do ciclo é a expressão i & lt; = OrdersTotal (). Function OrdersTotal () retorna a quantidade total de pedidos de mercado e pendentes, ou seja, as ordens que são mostradas no & quot; trade & quot; guia do & quot; Terminal & quot; janela. É 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 'if', a função OrderSelect (i-1, SELECT_BY_POS) será executada. O seguinte assunto importante deve ser notado aqui:


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 todas as ordens selecionadas, esse índice sempre será 1 inferior ao 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 em resultado de abertura / encerramento de pedidos e 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 figura 64.3, no cabeçalho do operador 'if', o programa analisa se a ordem seguinte 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' para 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 'if', 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.


Todo o código do programa closeorder. mq4 é 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 Real_Order é uma bandeira que exibe a disponibilidade de pelo menos uma ordem de mercado no terminal do cliente (valor não negativo). A variável Win_Price é 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 Win_Price que leva 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 'for' (bloco 2-6), os pedidos são pesquisados. No bloco 2-3, o programa verifica se há uma ordem na próxima linha do & quot; Terminal & quot ;. Se for encontrado um pedido, o controle é passado para o corpo do operador 'se' para 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, é pedido 4372930 aberto para Usd / Chf. 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 a ordem em análise acabar sendo aberta para "nosso" símbolo, 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, 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 todas as ordens 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 Win_Price). O usuário não precisa "apontar" a linha de ordem com o cursor do mouse. A ordem que está mais próxima do que qualquer outro pedido ao cursor a partir do momento de iniciar o 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 o "preço do cursor" é 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 da posição do cursor - abaixo ou acima da linha de ordem). Neste caso, esta ordem será memorizada na iteração atual do ciclo 'for' como um front-runner para 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 'para', o que resultará na busca de todos os dados necessários para o fechamento de uma ordem selecionada.


Em seguida, o controle no programa de execução será passado para o operador do ciclo 'while' (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 Real_Order 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' é quebrada, o programa termina suas operações. Se o valor da variável Real_Order for igual a 0 ou 1, isso significa que um mercado está predefinido para o 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:


Função de comércio OrderClose () retorna true, se o comércio for feito com sucesso, e falso, se não. Se a solicitação comercial for executada com êxito 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 'while' 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 operador 'alternar', 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 'while' é reiniciada. (Por favor, note que, neste exemplo, usamos para o processamento de erros do "switch" do operador que foi encerrado como resultado do uso do operador "continuar" que, como tal, não se destina a passar do controle fora do operador " switch '. Esta construção funciona apenas porque o operador' switch 'é parte dos conteúdos do operador de ciclo externo' enquanto 'e o operador' continuar '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 na primeira mudança do operador, esse erro é considerado crítico. Nesse caso, o controle é passado para o "switch" do segundo operador, que é executado para informar o usuário que um ou outro erro crítico ocorreu. Além disso, o programa usa o 'break' do operador que interrompe a execução do ciclo 'enquanto'. Sair do ciclo 'while', 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.


Fig. 92. Mensagens recebidas como resultado da execução bem-sucedida do script closeorder. mq4.


Como resultado do fechamento de uma das ordens, há duas ordens na janela da Eur / Usd.


Fig. 93. A execução do script closeorder. mq4 resulta no fechamento de uma das ordens.


O fechamento da ordem também foi exibido no "Terminal" janela:


Fig. 94. Após Execução do script closeorder. mq4, duas ordens de mercado são exibidas no "Terminal" Janela.


Mais tarde, os outros dois pedidos são fechados usando esse script também.


Excluindo ordens pendentes.


Os pedidos comerciais para exclusão de ordens 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 funcionou com sucesso. Caso contrário, ele retorna FALSO.


bilhete - o número único de um pedido.


arrow_color - a cor de uma seta em um gráfico. Se este parâmetro não estiver disponível ou seu valor for igual a CLR_NONE, 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 exclusã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.


O bloco de processamento de erros também foi modificado ligeiramente. Você deve considerar a possibilidade de erros relacionados a mudanças de preços (erros 135 e 136) ao fechar ordens de mercado, mas esses erros não ocorrem ao excluir ordens 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 "corretor está ocupado". No entanto, surge uma questão natural: quando o corretor é livre, para que o usuário continue seu negócio? O erro 137 não fornece essas informações. É 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. Esse 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 do centro 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, de modo que o corretor não permitirá excluí-la ou modificá-la. Este erro é considerado no roteiro como crítico e resulta em término do programa (não faz sentido incomodar o corretor com solicitações comerciais). Se o preço muda 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 exclusã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 MODE_FREEZELEVEL.


Encerramento de pedidos opuestos.


O pedido de oposição (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ê salvará um spread se você executar essa operação.


Ordem de funçãoCloseBy ()


A função fecha um pedido 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 a CLR_NONE, 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 produção 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 produção econômica será melhor (em comparação com a alternativa anterior) pela quantidade proporcional ao custo da propagação de uma ordem:


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 no fechamento de 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 um pedido na direção oposta (ou seja, uma ordem de venda) ao mesmo grau que o fechamento da ordem (o Comprar pedido). 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 ordens 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.


Pedidos opostos não influenciam os resultados comerciais totais. É por isso que as táticas de negociação com base na abertura de ordens opostas não têm 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.


O algoritmo do script acima é um pouco diferente dos precedentes. Essa 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.


Fig. 97. Ordens de mercado abertas para um símbolo.


Para fechar as ordens opostas disponíveis, devemos predefinir os critérios de seleção. Este critério no algoritmo dado é o tamanho da ordem - as ordens de volumes maiores são fechadas primeiro, então as ordens de volumes menores são fechadas. Depois que as ordens opostas de diferentes volumes foram fechadas, as ordens dos volumes de repouso permanecem. Por exemplo, o fechamento das ordens opostas Comprar (1 lote) e Vender (0,8 lote) resultará na compra da ordem (0,2 lot) permanece aberta. É por isso que, após cada encerramento bem sucedido, o programa deve se referir à lista atualizada de pedidos para encontrar duas outras ordens opostas maiores nesta lista atualizada.


Os cálculos acima são realizados em um ciclo (condicional) contínuo 'enquanto', nos blocos 2-10. O início do ciclo, em cada iteração, o programa supõe que já não há ordens de um determinado tipo. Para isso, o valor de -1 é atribuído às variáveis ​​Hedg_Buy e Hedg_Sell. O algoritmo do bloco de processamento de pedidos é, em geral, preservado (veja o código de closeby. mq4). No ciclo de busca de pedidos 'for', nomeadamente no bloco 3-4, como nos programas anteriores, "errado" os pedidos são filtrados. Neste caso, estes são pedidos abertos para outro símbolo e pedidos pendentes.


No bloco 4-5, o volume de cada ordem verificada no bloco 3-4 é calculado. Se ocorrer durante os cálculos de que a ordem atualmente processada é o maior volume entre todas as ordens processadas, seu ticket é armazenado. Isso significa que o pedido com este ingresso é, nesta fase de cálculos, um candidato para encerramento de ordens opostas. No momento em que a última iteração do ciclo 'for' termina, os bilhetes de pedidos com quantidade máxima de lotes abertos em direções opostas já foram conhecidos. Essas ordens são selecionadas pelo programa. Se qualquer ordem de qualquer tipo já se tornou indisponível por este momento, o bloco 5-6 sai do programa.


O bloco 6-10 representa o processamento de erros. É completamente o mesmo que os considerados acima (neste e em seções anteriores). O pedido comercial para o fechamento de ordens opostas é formado no bloco 7-8 usando a função OrderCloseBy (). Se falhar, de acordo com o código de erro, o programa passa o controle para tentar novamente fazer o comércio (para os mesmos tickets) ou para o "retorno" do operador que termina as operações do programa.


Se um comércio for executado com sucesso, o programa sai do bloco de processamento de erros e a iteração atual do ciclo mais externo 'while' terminará. Na próxima iteração deste ciclo, todos os cálculos serão repetidos: busca nos pedidos disponíveis, seleção de ordens de mercado, seleção de um marcado para cada tipo de ordem, formando um pedido comercial para fechamento oposto e posterior análise de erros. Este ciclo é executado até que não existam pedidos disponíveis de um determinado tipo (ou, em caso particular, de ambos os tipos) no terminal. Este evento será calculado no bloco 5-6, então o programa termina suas operações.


As seguintes mensagens foram recebidas na execução do script closeby. mq4 destinado ao fechamento de ordens de mercado mostradas na figura 97:


Fig. 98. Mensagens recebidas na execução do script closeby. mq4.


Sobre o & quot; Account History & quot; guia do & quot; Terminal & quot; janela, você pode ver que alguns pedidos são fechados com lucro zero. Isso é o que economizamos ao fechar ordens opostas. You can compare economic results in Fig. 97 and Fig. 99:


Fig. 99. Account history after execution of the script closeby. mq4.


On the "Journal" tab in the "Terminal" window, you can track the history of order closing (the latest events are on top):


Fig. 100. Events happened during execution of the script closeby. mq4.


Фе 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):


Fig. 101. Order Sell with remaining cost of 0.1 Lot.


Amazing Way to “Partial Close” Trades Automatically in MT4.


Let’s talk Partial Close (a. k.a. scaling out of position). I will explain how you can close position partially in MetaTrader 4 platform and give you an opportunity to have automated Partial Close option.


I am sure you already know what Partial Close is, but in case you haven’t heard of it before let me explain.


Parcial Fechar é quando você fecha uma fração de sua posição para bloquear o lucro e deixar uma parcela em execução para tirar proveito de qualquer preço adicional. Often Partial Close comes in a combination with Break Even. This means that you move stop loss to an open price or a few pips in profit.


A simple example would be if you hold a 1.0 lot trade and then once it reaches +50 pips in profit you close 25% of it (which would be 0.25 lot) leaving the rest of 0.75 lot to run. At this point you can move stop loss to an open price so if the price reverses you will get stopped out of that 0.75 trade with zero profit, but in overall you end up in profit because you closed 0.25 trade at +50 pips previously. And if the price continues to move in your favor obviously you can scale out again and again.


In this picture we see 75% of the EURUSD trade is still running while 25% of that trade was scaled out (Partially closed).


I should note that Partial Close not always benefit the trader. It might not work on some strategies and some might even produce worse results. Obviously, you need to test Partial Close well on each of your strategies to see if it improves the strategy. And when you are closing the trades note that Longs are closed at BID price and Shorts are closed at ASK price.


Partially Closing Positions in MetaTrader 4.


The process is fairly very easy, however after speaking with a lot of traders I’ve found out that only few of them know about this option.


In the picture below you see my list of trades running in the “ Trade ” tab of my MT4 platform.


List of open positions in the Trade tab of MT4 terminal.


To partially close that EURUSD short position I need to double click on any column (except for the S/L and T/P columns) of that trade which would open a window like this.


Order Close window in the MT4 platform from where I can scale out from a trade.


Note that “Volume” field shows “1.00” value, which is the size of my EURUSD order. If I click the yellow “Close” button the whole order would be closed completely.


To close only part of my order I need to enter lot size of how much I want to close (scale out) in the “Volume” campo. In the picture below you see I have entered 0.5 lot size.


Closing half of the position in MT4 client terminal.


Now when I click the yellow “Close” button it would close only half of my position, because 0.5 is half of my original 1.0 lot size. If I entered 0.25 lot size to close, this would mean I am closing 25% of my initial 1.0 lot size order. As you might already understand, you cannot close orders partially if they are lower than 0.02 size. I mean you cannot close part of the 0.01 lot size trade, unless your broker supports lots lower than 0.01.


Let’s see what happens when I click the yellow “Close” button now.


Partially closed order still running on MT4 account.


My order was partially closed and I have the remaining 0.5 lots still running. You can see in the picture above the trade “ Comment ” column says “ from #16785957 ” which means this trade was scaled out from a trade #16785957. And if we look at the list of closed orders in the “Account History” tab we will find this closed trade (0.5 lot) and it has a trade comment which says “ to #16799089 “. It means that this order was scaled out to a trade #16799089. This is how you can recognize if a trade was closed partially or not.


Partially closed order in the Account History tab on MT4 client terminal.


Another way to close orders partially.


Instead of double-clicking, you can click right mouse button on the order you want to close partially. When you do this a contextual menu will appear.


You can close trade partially from the contextual menu of a selected trade in the MT4 client terminal.


In this pop-up menu you need to select the “ Modify or Delete Order ” option which would open another window which looks like this.


Order Modify window in MetaTtrader 4 client terminal from where you can perform Partial Close as well.


In order to close a trade partially you will have to choose another “ Type ” which should be “ Market Execution ” ou & # 8220; Instant Execution ” (depending on your account type). Once you set proper “ Type “, that window will turn into the exact same window with the yellow “ Close ” button as you saw before, where it allows you to enter the lot size you want to close in the “ Volume ” campo. Enter a lot size you want to close and then click the yellow “ Close ” button to close a portion of your trade.


Automated Partial Close.


Closing orders partially on MT4 is a manual process, but it can be automated with the help of a special tools like Expert Advisors. Quite a lot of people been asking me for years if I have such EA, so I have decided to create one and make it affordable nearly to every currency trader.


My other intention is to add Partial Close feature to the Trader On Chart app and I am working on this as well. But even without this option integrated into TOC app you can still use both TOC and Partial Close EA in the same MT4. You just need to open additional chart for each EA.


Downloading Partial Close EA from the MT4 App Market.


So here’s how you can get the Partial Close EA in 5 simple steps.


1. Login to MQL5 Community from your MT4 client terminal.


If you are not logged into MQL5 Community you need to do this to download the EA. In your MT4 client terminal navigate to Tools -> Options in the top menu.


Menu superior do terminal MT4: Ferramentas - & gt; Opções.


In the “ Options ” window that will appear, open the “ Community ” aba.


Login or create a new user to access the MT4 app market from the Community tab of the Options window in the MT4 client terminal.


If you do not have an account at the MQL5 Community (a. k.a. MT4 and MT5 app market) then you can create it there by entering your login (create something you can remember) and e-mail address. If you do have an account at MQL5 Community you should click the “ If you have an account, please login ” link below the “ Register ” button and enter your username and password.


Note: Even though it is named MQL5 Community, you will find apps and indicators for both, MT4 and MT5 trading platforms. And NO, I do not think MT4 will be gone anytime soon.


Logging into the MQL5 Community from the MT4 client terminal.


When you click OK your MT4 client terminal will log-in to the MQL5 Community and you will be able to download MT4 Apps. You can check “ Journal” tab to see if you were logged in or not.


MT4 client terminal successfully logged into the MQL5 Community.


If you enter wrong login or password or you do not have an account on MT4 app market you will see an error in the “ Journal ” aba.


Error logging into MQL5 market. Authorization failed because of wrong password.


2. Find Partial Close EA on the app market.


When you are logged into the MQL5 Community on your MT4 client terminal you need to switch to the “ Market & # 8221; tab at the bottom in order to download the Partial Close EA.


Locating Partial Close EA application on the MT4 app market.


Once you switch to the “ Market & # 8221; tab (1) you then select the “ Applications ” tab (2). Then type “ partial close ea ” in the search field (3) and my Partial Close EA should appear in the search results (4). Click on the EA to open its page.


Note: You can also type my name “Rimantas” in the search field to find my apps.


3. Installing Partial Close EA to your MT4 terminal.


To install Partial Close EA to your MT4 client terminal you need to click the “ Download ” button in the right-top corner. This will download the EA and install it for you.


Partial Close EA product page on the MT4 app market.


Once EA is downloaded and installed, it will appear in the “Navigator” window under the “ Expert Advisors - & gt; Market “.


Partial Close EA in the Navigator window on MT4 platform.


4. Running Partial Close EA.


To run Partial Close EA you need to double-click it or drag-and-drop it to the currency chart of your choice. Note that EA will apply partial close function only to the trades of the same currency pair. This means if you attach EA to the EURUSD chart then it will apply partial close function only to the orders of EURUSD pair.


Please make sure to read the instructions on the MQL5 Community to learn how to use this EA. I am really very busy already answering hundreds of email messages each week, so any questions that are already explained and answered on my website or this product website might be unanswered.


5. Leave a review on MQL5 Community.


After few weeks of using my Partial Close EA, please go to the product page on MT4 app market and leave a review.


Leave a review for my Partial Close EA on MT4 App Market.


This is a very simple process. All you need to do is to open a “ Review ” tab, click the “ Add review ” link and write a review 🙂 Thank You.


Conclusão.


This blog post will definitely help you learn how to close your positions partially (scale out) in the MetaTrader 4 platform. It also explains how you can program your MT4 to apply Partial Close function automatically for you.


Now tell me in the comments below, was this helpful?


Would you be interested to learn how you can implement partial close function into almost any Expert Advisor MQ4 file that you have?


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.


18 Comments.


Not sure what I am doing wrong, but followed the above instructions a few times and can’t seem to access the market tab at the bottom of the MQL5 community. Just can’t see it when I log in. This is an EA I could use so pretty keen to get my hands on it. Obrigado. Jim.


my friend had this problem. It was solved when he upgraded Internet Explorer to version 8 on his computer (I think it was on VPS server).


Basically for the Market tab to appear you need to have at least Internet Explorer 8 on your computer.


I am in… could use some trade management, you will get my review in few places..


Nice Tool. Ótimo.


Just downloaded from MQL5 Community. One thing I can not but mention that you are excellent to instruct anything you post. You always show every possible options with even screenshots which make things understandable. 😉


Will definitely leave a review on MQL community within weeks.


Dear Alvi, thanks for your feedback. Doing my best. Hope my small Partial Close EA gift will serve you well.


[…] was scaled out at about 144 pips last week and the rest closed today. I am using my newly created Partial Close EA to scale out positions automatically. We already have another GBPUSD Short […]


Is there a ETA on when its on Trader on chart? Please add more features! It’s definitely your best EA in my opinion with so much potential.


Chris, I am doing my best to add Partial Close option to the TOC, but I think this won’t happen in the next 2 months. Maybe I will be able to release this this summer.


I have tried to download this tool a few times, but it tells me installation is failed?? I am fairly new, so not sure if I am doing something wrong, or its MT4. If you have any suggestions, would be much appreciated.


I’ve seen some people having trouble with MQL4 Market on older VPS or computers. After they installed latest framework from Microsoft website things start to work.


This is pretty much exactly what I need – however I do need to move the stoploss at the same time ?


I assume that is not in there ?


Is it feasible to put it in as a feature request 😉


this feature already exists. Please read detailed info here.


Hi Rimantas I miss you. I notice you are no Eml’ing more trading tips those are very good, and I like to thank you for the time you expend in that, may be your are to busy now. I like your page and your sincerity in trading, blessings and thanks again.


Dear Miguel, thanks for your feedback. Yes, I am really busy this year with my new projects. I am about to launch the Forex Signals Academy in September, an online training on how to create your business and sell products and services online.


Also, I am about to launch Autotrading Academy training program as well, were me and my partner Justin will teach what we believe is the best way to create, test and launch strategies for trading.


I do my best to find time for new blog posts, and still try to post at least one detailed and helpful post every other month.


Your style is very unique in comparison to other folks I have read stuff from.


Many thanks for posting when you have the opportunity, Guess I will just book.


mark this web site.


What I find annoying about closing partially is that it removes the “original comment” in the order that I set at the openning (and are very important to trace strategy results). Do you know a way to avoid that so that the original comment remains??


Yes, it’s annoying, but that’s the way MT4 works. We cannot change this.


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.

No comments:

Post a Comment