Fechar negócios lucrativos apenas, com o objetivo de lucro - página 4

 
af1:

Ok Raptor, vou tentar fazer esse loop, mas antes de fazer isso, e se eu simplesmente mudar

A partir daí:
A isto:


Isto poderia fazer o trabalho?

Não, você DEVE contar para baixo ao fechar/eliminar as ordens.
 
RaptorUK:
Não, você DEVE contar para baixo ao fechar/eliminar as ordens.


Olá Raptor!

Tenho verificado o código e, para ser honesto, não estou vendo muita diferença entre a linha de código sugerida em seu posto:

for(PositionIndex = TotalNumberOfOrders - 1; PositionIndex >= 0 ; PositionIndex --)

e a linha de código do código da ea que estou testando:

for(i=OrdersTotal()-1;i>=0;i--)

A única diferença que vejo é que você adicionou MODE_TRADES, e não adicionou sono. Isto é relevante?

Você poderia dar algum guia sobre o que devo mudar no código?

 
af1:


Olá Raptor!

Tenho verificado o código e, para ser honesto, não estou vendo muita diferença entre a linha de código sugerida em seu posto:

e a linha de código do código da ea que estou testando:

A única diferença que vejo é que você adicionou MODE_TRADES, e não adicionou sono. Isto é relevante?

Você poderia dar algum guia sobre o que devo mudar no código?

Desculpe, eu vi isto . . .

for(int i=0;i<OrdersTotal();i++)
      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }

... e você postou e assumiu que era seu código OrderClose() . . .

 
af1:


Eu não adicionei as 2 bool externas, eu apenas mudei isto para fechar "apenas ordens de compra".

e mudar isso para fechar "apenas ordens de venda".

Então agora tenho dois EA's. Um para compras próximas, e outro para vendas próximas. Para mim está tudo bem.


Eu testei em ambas as contas, demo e real. Em demo funciona bem, mas em conta real, uma vez atingida a meta de lucro, começará a fechar posições, mas então parará de fechar posições quando as demais ordens caírem abaixo da meta de lucro. Isto acontece se o preço estiver mudando no momento do fechamento. Assim, tende a deixar as ordens lucrativas abertas, em vez de fechá-las todas (ordens lucrativas).

Eu li este post do RaptorUK https://www.mql5.com/en/forum/139654. É algo assim, mas eu não sei realmente qual poderia ser a melhor solução para esta questão.



Só agora percebi isto - não sei se fará muita diferença, mas não está certo.

for(int i=0;i<OrderTotal();i++)

      {
         if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) continue;
         if(OrderType()==OP_SELL)  
         {
            OrdersSELL++;
            SellLots += OrderLots();
            double ThisTradeProfit=OrderProfit() + OrderCommission() + OrderSwap();
            if(ThisTradeProfit>0)
            BuyProfit += ThisTradeProfit;
         }
 
af1:


Eu não acrescentei as 2 bool externas, apenas mudei isto para fechar "apenas ordens de compra".

e mudar isso para fechar "apenas ordens de venda".

Então agora tenho dois EA's. Um para compras próximas, e outro para vendas próximas. Para mim está tudo bem.


Eu testei em ambas as contas, demo e real. Em demo funciona bem, mas em conta real, uma vez atingida a meta de lucro, começará a fechar posições, mas então parará de fechar posições quando as demais ordens caírem abaixo da meta de lucro. Isto acontece se o preço estiver mudando no momento do fechamento. Assim, tende a deixar as ordens lucrativas abertas, em vez de fechá-las todas (ordens lucrativas).

Eu li este post do RaptorUK https://www.mql5.com/en/forum/139654. É algo assim, mas eu não sei realmente qual poderia ser a melhor solução para esta questão.



Isso sugere que há erros no fechamento dos negócios, o que diz no registro?

Talvez o seu deslize em apenas 5 pontos seja muito pequeno?

 
RaptorUK:

Desculpe, eu vi isto . . .

... e você postou e assumiu que era seu código OrderClose() . . .

Não há problema.

GumRai:


Só agora notei isto - não sei se fará muita diferença, mas não está certo.

for(int i=0;i<OrderTotal();i++)

Em demonstração não vi nenhuma diferença, mas na realidade o problema aparece quando se fechava as ordens de venda "curiosamente", então talvez isto pudesse resolver o problema.

Deixe-me testar novamente com esta mudança e informá-lo-ei dos resultados.

GumRai:


Isso sugere que há erros no fechamento dos negócios, o que diz no registro?

Talvez o seu deslize em apenas 5 pontos seja muito pequeno?

Nenhum erro no registro.

Talvez um escorregamento maior possa ajudar. Vou testá-lo.

 

Olá Amigos

Qualquer lugar tem um EA para MT5 para fechar todas as negociações com lucro alcançado.

 
BobyGill:

Olá Amigos

Qualquer lugar tem um EA para MT5 para fechar todas as negociações com lucro alcançado.

Por que você mencionou um tópico de 6 anos na seção MT4 para perguntar sobre a MT5 ???

 
Gente...
Só queria saber...
Será possível usar a mesma lógica, mas a que a torna diferente é apenas Quando a transação total é atingida, digamos 200 transações , então ela vai desencadear o lucro final.
Razão: