[Arquivo!] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por ela. Não poderia ir a lugar algum sem você - 2. - página 239

 
IgorM:

iHighest e iLowest para ajudá-lo, e leia o algoritmo para construir ZZ

SZY: não é a tarefa mais fácil, o código será pequeno, mas o algoritmo é complexo, não consigo encontrar o código, mas procurei por um pico em High: High[iHighest(NULL,0,MODE_HIGH,i)

1. O que é "33"?

2. alto[iHighest(NULL,0,MODE_HIGH,i) dará um ponto. Como conseguir o segundo?

iLowest != segundo ponto.

 
charter:

1. O que é "33"?

2. alto[iHighest(NULL,0,MODE_HIGH,i) dará um ponto. Como conseguir o segundo?


1. Zig Zag.

2. não vai, só lhe dará a possibilidade de encontrar algum Alto para a linha superior e então você terá que escolher dois desses Altos para traçar a linha com

 
charter:

A dificuldade é encontrar os pontos através dos quais a linha será traçada mais tarde.

Não é difícil traçar linhas quando se pode ver estes pontos. Como você os "vê" programmaticamente?

Obrigado, corrigido!

 
charter:

A dificuldade é encontrar os pontos através dos quais a linha será traçada mais tarde.

Não é difícil traçar linhas quando se pode ver estes pontos. Como você os "vê" programmaticamente?

Obrigado, corrigido!

[Удален]  

Bom dia a todos os conhecedores!

Por favor, ajude-me a corrigir o código no Expert Advisor https://www.mql5.com/ru/code - Ilan.

A idéia é que a EA tem um parâmetro ajustável para o levantamento de capital, que fecha todos os pedidos!

Entretanto, a função de travamento apareceu mais tarde, por isso nossa EA tem fechado todas as ordens abertas seguindo a tendência e deixa as posições de travamento intocadas. Então, como consertá-lo para que todos os pedidos sejam fechados com um determinado saque de capital próprio?

Aqui está a seção onde as ordens são fechadas (as ordens de tendência e de perda têm números mágicos diferentes). Tudo funciona aqui. O Expert Advisor está fechando todas as ordens. O drawdown é 4 ou mais vezes maior que o estabelecido, até o ponto de drenagem do depósito:

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Acontece que as ordens perdidas estão sendo cobertas, mas não são levadas em conta quando o lucro e o patrimônio líquido atuais são calculados! Aqui está o segmento que calcula o lucro atual:

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

E aqui está o segmento que calcula a equidade:

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

Destaquei em preto as seções que acrescentei. O que eu esqueci????? Por que não funciona?????

 
polsvv:

Bom dia a todos os conhecedores!

Por favor, ajude-me a corrigir o código no Expert Advisor https://www.mql5.com/ru/code - Ilan.

A idéia é que a EA tem um parâmetro ajustável para o levantamento de capital, que fecha todos os pedidos!

Entretanto, a função de travamento apareceu mais tarde, por isso nossa EA tem fechado todas as ordens abertas seguindo a tendência e deixa as posições de travamento intocadas. Então, como consertá-lo para que todos os pedidos sejam fechados com um determinado saque de capital próprio?

Aqui está a seção onde as ordens são fechadas (as ordens de tendência e de perda têm números mágicos diferentes). Tudo funciona aqui. O Expert Advisor está fechando todas as ordens. O drawdown é 4 ou mais vezes maior que o estabelecido, até o ponto de drenagem do depósito:

if (UseEquityStop) {

if (CurrentPairProfit < 0.0 && MathAbs(CurrentPairProfit) > TotalEquityRisk / 100.0 * AccountEquityHigh()) {

CloseThisSymbolAll(MagicNumber);

CloseThisSymbolAll(LMagN);

PrintF("Closed All due to Stop Out");

NewOrdersPlaced = FALSE;

Acontece que as ordens perdidas estão sendo cobertas, mas não são levadas em conta quando o lucro e o patrimônio líquido atuais são calculados! Aqui está o segmento que calcula o lucro atual:

double CalculateProfit() {

double ld_ret_0 = 0;

for (cnt = OrdersTotal() - 1; cnt >= 0; cnt--) {

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;

if (OrderSymbol() == Symbol())

if (OrderMagicNumber() == MagicNumber || OrderMagicNumber() == LMagN)

if (OrderType() == OP_BUY || OrderType() == OP_SELL) ld_ret_0 += OrderProfit();

}

return (ld_ret_0);

E aqui está o segmento que calcula a equidade:

double AccountEquityHigh() {

if ((CountTrades(MagicNumber) == 0) && (CountTrades(LMagN) == 0)) AccountEquityHighAmt = AccountEquity();

if (AccountEquityHighAmt < PrevEquity) AccountEquityHighAmt = PrevEquity;

else AccountEquityHighAmt = AccountEquity();

PrevEquity = AccountEquity();

return (AccountEquityHighAmt);

Destaquei em preto as seções que acrescentei. O que eu esqueci????? Por que não funciona?????

Talvez devesse? :

//===================================================================================
double CalculateProfit() 
{
   double ld_ret_0 = 0;
   for (int cnt = 0;  cnt < OrdersTotal(); cnt++) {
      if (OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         if (OrderSymbol()!=Symbol())           continue;
         if (OrderType()>1)                     continue;
         if (OrderMagicNumber()==MagicNumber || 
             OrderMagicNumber() == LMagN)       ld_ret_0 += OrderProfit();
         }
      else if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) {
         Print ("Func: CalculateProfit(), Select Order Error = ", GetLastError());
         break;
         }
      }
   return (ld_ret_0);
}
//===================================================================================
 
artmedia70:

Talvez seja assim que deve ser?

É assim que você insere o código para que ele possa ser lido
 
eddy:
é assim que se coloca o código para que se possa lê-lo.
Ah, sim? É essa toda a diferença que você poderia ver???
[Удален]  
Olá a todos!

Só este fim de semana estou usando o testador de estratégia pela primeira vez. Não consigo descobrir qual é o uso da função "Otimização". Selecionei diferentes parâmetros otimizáveis, mas o equilíbrio não muda. O que está essencialmente tentando otimizar e como? Alguém a usa? :)
 
AndrejFX:
Olá a todos!

Só neste fim de semana, pela primeira vez, estou usando o testador de estratégia. Não consigo entender qual é o uso da função "Otimização". Selecionei diferentes parâmetros otimizáveis, mas o equilíbrio não muda. O que está essencialmente tentando otimizar e como? Alguém a usa? :)

Tente usar F1 para começar.

Encontrar Interface do Usuário -> Testador.

Talvez https://www.mql5.com/ru/articles/mt4/tester ajude