![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Os abates durante a compensação podem ser desconsiderados.
Exemplo. Você abre uma operação de compra a 50, no momento da compensação o preço é de 70. Durante a compensação sua operação será excluída e você receberá 20 tugrik, após a compensação sua operação será aberta a 70.
Se você fechá-lo a 100, então o terminal mostrará um comércio com um lucro de 50 rebocadores.
O problema geralmente ocorre quando se escreve uma rede de arrasto ou CU. Suponha que queiramos colocar uma CUE de +5 quando o comércio for 15+.
Então, se pegarmos os números do exemplo, acontece que antes de limpar nossa parada será +5 pontos e depois de limpar será -5 pontos. Mas se uma negociação for fechada na parada, ainda teremos lucro de 5 rodadas.
Portanto, a limpeza pode ser desconsiderada no testador.
Realmente simples, e o mais importante, confiável.
Eu perdoarei o autor pelo fora de tópico, mas você tem uma receita para determinar quando a limpeza está terminada?
O problema é o seguinte: o corretor de abertura, durante a compensação elimina as ordens pendentes, e o campo de compensação não as define novamente.
Eu não sei sobre futuros, mas na liquidação de ações termina em momentos diferentes.
Portanto, não fui capaz de determinar o momento em que a compensação termina para uma segurança específica.
Eu apenas envio um pedido com temporizador para fazer um pedido até que ele abra.
Eu não gosto desta abordagem e não tenho outra.
Os abates durante a compensação podem ser desconsiderados.
Exemplo. Você abre uma operação de compra a 50, no momento da compensação o preço é de 70. Durante a compensação sua operação será excluída e você receberá 20 tugrik, após a compensação sua operação será aberta a 70.
Se você fechá-lo a 100, então o terminal mostrará um comércio com um lucro de 50 rebocadores.
O problema geralmente ocorre quando se escreve uma rede de arrasto ou CU. Suponha que queiramos colocar uma CUE de +5 quando o comércio for 15+.
Então, se pegarmos os números do exemplo, acontece que antes de limpar nossa parada será de +5 pontos e depois de limpar será de -5 pontos. Mas se uma negociação for fechada na parada, ainda teremos lucro de 5 rodadas.
É por isso que podemos desconsiderar a limpeza no provador.
Oh! Que interessante... terá que ir mais fundo e experimentá-lo! :-)
escreveu (retirado do artigo) f-i-ção exatamente fora da contagem das negociações sobre a história, sobre os fatos (é quem tem posição em mais) - contagem consecutiva menos e exibi-la na tela - tipo de compensação da CONTA, certamente não pode ser tudo correto quando se negocia - apenas olhando para ela agora ...
Assim, para fechar a posição com precisão, por exemplo, levando em conta a compensação anterior, se ela foi negativa - então devemos comparar os valores do lucro fechado e da perda anterior na compensação.
encontrou um erro - conserte-o:
como resultado, esta é a imagem na tela acima antes desta inserção:
porque ainda não houve nenhuma perda de compensação:
09.11.2021: todos os "out" estão no plus:
Terrível! Há muito de errado para comentar.
Vamos colocar isto de outra forma.
Por que você precisa do histórico da transação se você está interessado na posição?
Imho, é suficiente escrever o preço da última posição em uma variável para cada nova operação, e quando chegar a compensação, ajustar a CU pela diferença entre o preço escrito na variável e o preço do último tick antes da compensação.
Exemplo:
lote = 1;
posição_dupla = 0;
primeiro comércio ao preço 30, posição_ final = 30;
segundo comércio ao preço de 60, posição_ final = 45;
terceiro comércio ao preço 90, posição_ final = 60;
Ou seja, você tem uma posição aos 60 com um volume de 3.
Suponhamos que a compensação tenha chegado ao preço de 70, o lucro é igual a 30 tugriks.
duplo preço_de-liberdade = 70;
Após a compensação, a posição aberta ao preço 70, mas temos que lembrar que o preço real desta posição éend_position == 60; portanto, este é o preço para calcular a rede de arrasto ou CUE a partir de.
Assim, durante a compensação, preencha a variável
corretor duplo = 0;
corrector =clearing_price-end_position;
Suponha que você tenha uma partida CU quando a troca for +20 pips, respectivamente, acrescente à função CU que a partida CU é: 20 -corretor;
E também a CU é colocada mais, elas também devem ser corrigidas pelo valor corretivo.
Após o fechamento de qualquer corretor de posição = 0;
Mas isto só funcionará se não houver fechamentos ou preenchimentos parciais após a limpeza. Se houver, temos que fazer de outra forma.
Realmente simples, e o mais importante, confiável.
Eu perdoarei o autor pelo fora de tópico, mas você tem uma receita para determinar quando a limpeza está terminada?
O problema é o seguinte: o corretor de abertura, durante a compensação elimina as ordens pendentes, e o campo de compensação não as configura novamente.
Eu não sei sobre futuros, mas na liquidação de ações termina em momentos diferentes.
Portanto, não fui capaz de determinar o momento em que a compensação termina para uma segurança específica.
Eu apenas envio um pedido com temporizador para fazer um pedido até que ele abra.
Não gosto desta abordagem e não tenho nenhuma outra.
Eu também tenho uma abertura, mas em futuros. Tenho o mesmo problema com o fim da clareira, não sei como determiná-lo, apenas levo 19:05.
Você pode colocar os adiamentos até a data, não apenas por hoje. Pelo menos no futuro.
1. O horror! Há muito de errado para comentar.
Vamos colocar isto de outra forma.
Por que você precisa do histórico da transação se você está interessado na posição?
Imho, é suficiente escrever o preço da última posição em uma variável para cada nova operação, e quando chegar a compensação, ajustar a CU pela diferença entre o preço escrito na variável e o preço do último tick antes da compensação.
Exemplo:
lote = 1;
posição_dupla = 0;
primeiro comércio ao preço 30, posição_ final = 30;
segundo comércio ao preço de 60, posição_ final = 45;
terceiro comércio ao preço 90, posição_ final = 60;
Ou seja, você tem uma posição aos 60 com um volume de 3.
Suponhamos que a compensação tenha chegado ao preço de 70, o lucro é igual a 30 tugriks.
duplo preço_de-liberdade = 70;
Após a compensação, a posição aberta ao preço 70, mas temos que lembrar que o preço real desta posição éend_position == 60; portanto, este é o preço para calcular a rede de arrasto ou CUE a partir de.
Assim, durante a compensação, preencha a variável
corretor duplo = 0;
corrector =clearing_price-end_position;
Suponha que você tenha uma partida CU quando a troca for +20 pips, respectivamente, acrescente à função CU que a partida CU é: 20 -corretor;
E também a CU é colocada em mais alguns pontos, eles também devem ser corrigidos pelo valor do corretor.
Após o fechamento de qualquer corretor de posição = 0;
2. Mas isto só funcionará se não houver fechamentos ou preenchimentos parciais após a limpeza. Se houver, devemos fazer de outra forma.
1. Obrigado pela programação. Quero procurar sem corretor por enquanto, pois tenho adições e arrasto com boo + ex. 30 pips, também após o arrasto pode haver fechamentos parciais de acordo com a lógica operacional do robô. Isto é, após abrir uma posição inicial, memorizo o preço aberto, após as adições - média - novamente memorizo o NOVO preço aberto da posição. E, em essência, a compensação e a fixação de um novo preço de abertura por parte do corretor não importará.
Entendo corretamente que esta abordagem também pode ocorrer de acordo com a lógica comercial acima escrita neste meu posto...
Além disso, se o preço atual do ativo permitir, a transferência de SL para BU + 30 pips do preço acumulado da posição previamente memorizado.
E quem se importa com o preço atual da posição aberta para os futuros, estabelecido por seu corretor?
2.
"Mas isto só funcionará se não houver fechamentos ou preenchimentos parciais após a limpeza. Se houver, isso precisa ser feito de maneira diferente. "
Eu preenchi... antes e depois - até transferir para BU + 30 pips - é realmente necessário ler o preço médio atual de todas as ordens de mercado através de arrays, porque precisaremos
...precisaríamos do preço de abertura de uma ordem de mercado e do número e volume de contratos para cada ordem... para exibir o preço médio para eles no total - onde significa a transferência para uma CU - para calcular...
Um preço médio = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1 + VOL_2 + VOL_3 + n), aqui acontece que eu não traduzi SL em BU + 30 pips em todas as posições agregadas - é necessário escrever todos esses valores em arrays ou o quê? Se abrirmos a N-ésima fatia de ordem de mercado, devemos elevar esta cadeia inteira para calcular a média de todas elas?
Ou podemos brincar com ele de alguma forma:
HistoryOrderSelect ()
HistoryOrderGetTicket ()
Mas surge a questão de como tomar o início e o fim do ciclo das ordens de mercado ACTUAL que participam da formação da posição agregada ACTUAL?
VOLUME_Price = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1+VOL_2 + VOL_3 + n), então acontece que eu ainda não traduzi SL em BU + 30 pips em todas as posições agregadas - devo escrever todos esses valores em arrays? Se abrirmos a N-ésima ordem de mercado, temos que trazer toda a cadeia a fim de calcular a média de todos eles?
Infelizmente, este é exatamente o caso.
Roman Shiredchenko #:
Preço_médio = ((OPEN_1 * VOLUME_1) + (OPEN_2 * VOLUME_2) + (OPEN_3 * VOLUME_3)+n) / (VOL_1 + VOL_2 + VOL_3 + n), então acontece que eu não traduzi SL em BU + 30 pips em todas as posições agregadas - todos esses valores devem ser escritos em arrays ou o quê? Se abrirmos a N-ésima fatia de ordem de mercado, devemos elevar esta cadeia inteira para calcular a média de todas elas?
Ou podemos brincar com ele de alguma forma:
Mas aí surge a questão, como tomar o início e o fim do ciclo de ordens de mercado ACTUAL que participam da formação da posição total ACTUAL?
É suficiente para armazenar o último preço médio.
É suficiente manter o último preço médio.
OK, e se eu acrescentar, por exemplo, qualquer volume - como contá-lo ATUALMENTE?
Eu lhe mostrei. Pegue este último preço médio e volume da posição, o preço do novo comércio e seu volume. Tudo será calculado corretamente.