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

 
Alexey Viktorov:

Bem, nesse caso, para que servem essas funções autoescritas, afinal?

Consegui os preços máximo e mínimo de ontem e a partir destes valores determinar o meio.

Eu não sei... Eu não estava pensando... Vou reescrevê-lo agora... É mais fácil assim... Obrigado!

 
Igor Makanu:

Administração do dinheiro

quanto às entradas aleatórias as ordens pendentes seguem o preço, no otimizador a seleção é feita de acordo com a fórmula y=kx+b , mais tarde usarei polinomial e exponente, mas o otimizador procura apenas os fatores e os valores das ordens, em geral para não colocar uma névoa - é uma grade, bem, quase, mas as metas ainda não foram atingidas

Quando olho para os mercados com os quais tenho lidado (embora não muito ativamente) desde que me registrei no Fórum, a camada de programação em MQL levou muito tempo, mas em geral a idéia foi desenvolvida ao longo do ano de redação de Expert Advisors com base nas solicitações do pessoal de trabalho )))

Sem problemas, vá em frente.

Vejo, muito bem entendido, porque já passei por isso antes.
Mesmo assim, trata-se de encontrar alguns parâmetros (neste caso, pelo menos coeficientes k e b em linear y=kx+b ou a,k,x em exponencial y=ax²+kx+b). Estes coeficientes devem, de preferência, mudar acada tique, por isso eu disse que a otimização deve sentar-se no próprio programa e ocorrer automática e constantemente, mas não em um testador externo em modo manual de vez em quando (uma vez por dia ou semana ou mês...). Também é preciso controlar o período, no qual ocorre a regressão linear ou parabólica (exponencial) observada. Este período também deve mudar a cada tique. Embora encontrar uma linha ou uma parábola seja o mesmo que encontrar o período ótimo da regressão linear ou parabólica no momento.
Mas um testador externo pode sempre encontrar tais parâmetros estáticos constantes, que serão universalmente garantidos para caber apenas naquele conjunto de dados históricos, no qual o teste é executado, e sobre este, o período histórico passado, é claro, um lucro estável e belas linhas de lucro serão observadas, mas precisamos do presente e do futuro.

Mesmo assim, tudo se resume a controlar a largura do canal, o comprimento do canal, a ruptura do canal, retornando à linha de ruptura de um grau linear ou superior de canais. E este é um problema de reconhecimento de padrões e só deve ser resolvido internamente, e não externamente.

 
Nikolai Semko:

Vejo, muito bem compreendido, pois já passei por isso antes.

Eu também, e mais de uma vez.

Nikolai Semko:

Mas o testador externo sempre será capaz de selecionar tais parâmetros estáticos constantes, que serão universalmente garantidos para caber apenas naquele conjunto de dados históricos, no qual o teste está sendo executado, e neste período histórico já passado, é claro, um lucro estável e belas linhas de lucro serão traçadas, mas precisamos do presente e do futuro.

Esse é o problema - não, tudo é o mesmo que no teste do livro e no futuro, os gráficos são diferentes, mas a tendência está lá, tanto quanto sei, minha EA não está atingindo o preço futuro em si, mas as trajetórias de preços futuros.

 
Rapazes, aqui vai uma pergunta. Veja, há um incremento de prefixo ++q e postfix q++, usando suas características você pode obter um efeito bastante diferente e interessante, por exemplo, a prioridade deste incremento q++ realiza a adição tarde/trás, ou seja, depois e não imediatamente, como isso pode ser feito com números primos e é possível, por exemplo, eu quero tal adição q+5, primeiro eu preciso usar q e depois adicionar 5?
 
Seric29:
Rapazes, aqui vai uma pergunta. Veja, há um incremento de prefixo ++q e postfix q++, usando suas características podemos obter efeitos bastante diferentes e interessantes, por exemplo, a prioridade deste incremento q++ realiza a adição tarde/trás, ou seja, depois e não imediatamente, como pode ser feito com números primos e é possível, por exemplo, eu quero tal adição q+5, primeiro preciso usar q e depois adicionar 5?

Bem, se isto for para ser usado como um contador de laço, então simplesmente

for(int q = 0; q <= 25; q+=5)
 
Alexey Viktorov:

Bem, se você usá-lo como um contador de laço, é fácil

E se você passar uma expressão q+5 para uma função e primeiro executar q e depois adicionar 5, você não pode fazer isso, certo?

int q
void Funk(int pr){}
вызвов Funk(...q+5...) сначала используем q а после прибавляем 5
как здесь например Funk(q++) сначала используем q а после прибавляем 1
 
Comentários não relevantes a este tópico foram movidos para"OOP, modelos e macros em mql5, dicas e truques do ofício".
 
Seric29:

E se você passar uma expressão q+5 para uma função e primeiro executar q e depois adicionar 5, você não pode fazer isso, pode?

5 é uma constante ou uma variável? Se for uma constante, não há problema: passe q para a função e adicione 5 depois de usá-la. Se for uma variável, passe duas variáveis e adicione a segunda variável depois de usar q. Outra opção é declarar variáveis globalmente. Então você não precisa passar nada.
 

Olá. Quero fechar posições direcionadas de forma diferente quando lucro =0 Número diferente de posições de compra e venda, tamanhos de lote diferentes.

O que há de errado com a função de busca de preço médio, ou seja, o ponto de lucro zero?

 double AveroProf(string sy="", int op=-1, int mn1=-1) 
   {
   int i=0;
   int kol=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   double zeroprice=0;
   double tick_value;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=mn1) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ; 
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ;
       kol=kol+1;
      }
   
   }
   if (lots>0)
   { 
   zeroprice=sum/lots;
   zeroprice=NormalizeDouble(zeroprice,_Digits);
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);
    }   
   return( zeroprice);
   }
 
Por favor, alguém pode me ajudar com este problema: https://www.mql5.com/ru/forum/322133
Как использовать WinApi для преобразования времени в StrategyTester MT5?
Как использовать WinApi для преобразования времени в StrategyTester MT5?
  • 2019.09.12
  • www.mql5.com
Я успешно создал CustomSymbol в MT5, и я получаю эту таблицу в приложении...