Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1301

 
Igor Makanu:

tudo precisa ser consertado.

Seu código procura a primeira ordem encontrada na história da ordem com o símbolo dado e o mágico dado

então conte o número de ordens não lucrativas encontradas e multiplique para o poder de 2 este número de ordens

procurar no fórum por"funções úteis da CMM" e fazer algo como isto

- encontrar o bilhete do último pedido para nosso símbolo e nosso magik

- obter OrderProfit() e OrderLots() do bilhete encontrado e multiplicar por seu coeficiente de martingale, se necessário

ZS: pode haver uma solução pronta

O problema é um pouco diferente, eu tenho um lote flutuante em cada abertura e preciso multiplicá-lo pelo coeficiente.
O lote do primeiro joelho, por exemplo 0,07, e o segundo pode ser 0,04, após uma perda o lote do terceiro joelho 0,05 e aqui está este lote e precisa ser multiplicado pelo coeficiente 4.
Minha função calcula um lote flutuante, ele precisa ser multiplicado por LotSize() * 2,4,8,16 etc.
 
Denis Pershin:
A tarefa é um pouco diferente, tenho um lote flutuante em cada abertura e preciso multiplicá-lo por um coeficiente.
O lote do primeiro joelho, por exemplo 0,07, e o segundo pode ser 0,04, após uma perda o lote do terceiro joelho é 0,05 e este lote deve ser multiplicado pelo coeficiente 4.
Minha função calcula um lote flutuante, ele precisa ser multiplicado por LotSize() * 2,4,8,16 etc.

tal

Se você conhece o lote inicial, você pode usar o último pedido perdido para verificar seu lote e calcular o número do joelho, e se o pedido estiver em lucro, você começa com o lote inicial novamente

aprenda a encontrar a última ordem fechada com seu mágico

Se o sistema de cálculo de lote é muito complexo - a opção de um mágico + o número do joelho para novos pedidos, você também pode usar comentários, mas não muito confiáveis, melhor usar vários mágicos


Seu código apenas passa pelas ordens - ele não vê nada, é por isso que prestei atenção a ele

 
Igor Makanu:

como este

Se você conhece o lote inicial, então você pode usar o último pedido perdido para verificar seu lote e calcular o número do joelho, e se o pedido estiver em lucro, você começa com o lote inicial novamente

aprenda a encontrar o último pedido fechado com seu mágico

Se o sistema de cálculo de lote é bastante complexo - a opção de um mágico + o número de um joelho para novos pedidos, você também pode usar comentários, mas não de forma confiável, melhor usar vários mágicos


Seu código apenas passa pelas ordens - ele não vê nada, é por isso que prestei atenção a ele

Essa é a dificuldade: o lote inicial é desconhecido e é calculado com base em n% do patrimônio líquido.
Eu não gostaria de usar o comentário.
Agora o número de perdas sucessivas é calculado no código e é considerado corretamente, mas não posso decidir como melhorá-lo usando coeficientes de multiplicação de 2,4,8,16.
 
Denis Pershin:
O código agora conta o número de perdas consecutivas e conta corretamente, mas como fazer isso com um fator de multiplicação de 2,4,8,16 não consigo entender.

errado

Mas se lhe convém, então tente consertar seu código dessa maneira.

int c=1;
....
c*=2; // 1,2,4,8....
 
Igor Makanu:

errado

mas se lhe convém, tente corrigir seu código desta forma

Ele chegará à terceira multiplicação: 3*2=6, e já precisa de 8, e a quarta será 8, e ele precisa de 16.

 

k = {1,2,4,8,16,......}

cn = k[c]

 
Vitaly Muzichenko:

Ele chegará na terceira multiplicação: 3*2=6, e ele já precisa de 8, e na quarta multiplicação ele receberá 8, e ele precisa de 16.


void OnStart()
{
   int c = 1;
   for(int i = 1; i <= 5; i++)
   {
      c *= 2;
      printf("i = %i, c = %i",i,c);
   }
}

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

onde está 6?

ou o que é isso?

 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

onde está 6?

ou o que é isso?

Sim, eu entendi errado.

 
A MQ está planejando adicionar indicadores personalizados à plataforma móvel?
 
Igor Makanu:


2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 1, c = 2

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 2, c = 4

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 3, c = 8

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 4, c = 16

2020.11.08 11:28:09.527 tst (EURUSD,H1) i = 5, c = 32

onde está 6?

ou o que é necessário?

Obrigado, muito útil)

Razão: