Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 139

 
nikelodeon:

Alguém pode explicar por que durante o período de otimização aparecem cenários da EA onde não há rentabilidade. O que isso significa????

Poucos negócios, máx. 8. Passe-o por mais história.
 
Forexman77:
Você pode me dizer como encontrar o máximo e mínimo absoluto sobre o histórico com o testador de estratégia?
Máximo e mínimo de quê?
 
paladin80:
Máximo e mínimo de quê?

Na história do EURUSD, os preços máximo e mínimo do dia. A época de sua formação.
 
Forexman77:

Histórico EURUSD preços máximo e mínimo para o dia. A época de sua formação.
Leia o iHighest e iLowest
 
paladin80:
Leia o iHighest e iLowest

Encontrar através do iHighest e iLowest não é um problema. Como assar isto no provador para que ele dê informações sobre o tempo de formação, sobre uma determinada história.
 
Forexman77:

Encontrar através do iHighest e iLowest não é um problema. Como assar isto no provador para que ele forneça informações sobre o tempo de formação, sobre uma determinada história.

Você pode tentar desta forma:

 for (int i=0; i<iBars(Symbol(),PERIOD_D1); i++) {
  double HistoryMaximum=iHigh(Symbol(),PERIOD_D1,i);
  double HistoryMinimum=iLow(Symbol(),PERIOD_D1,i);
  Print("Дата ",TimeToStr(iTime(Symbol(),PERIOD_D1,i),TIME_DATE)," Максимум=",DoubleToStr(HistoryMaximum,Digits)," Минимум=",DoubleToStr(HistoryMinimum,Digits));
 }

 
Forexman77:

Encontrar através do iHighest e iLowest não é um problema. Como fazer isto entrar no testador, para que ele forneça informações sobre o tempo de formação, sobre uma determinada história.

double High_price=-1.0;
double Low_price=10000000000.0;
double Time_high_price, Time_low_price;
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
//----
   if (iHigh(NULL,PERIOD_M1,0)>High_price)
   {
     High_price=iHigh(NULL,PERIOD_M1,0);
     Time_high_price=iTime(NULL,PERIOD_M1,0);
   }
   
   if (iLow(NULL,PERIOD_M1,0)<Low_price)
   {
     Low_price=iLow(NULL,PERIOD_M1,0);
     Time_low_price=iTime(NULL,PERIOD_M1,0);
   }
//----
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
//----
   Print("Highest price = ",DoubleToStr(High_price,Digits)," on ",TimeToStr(Time_high_price,TIME_DATE|TIME_SECONDS));
   Print("Lowest price = ",DoubleToStr(Low_price,Digits)," on ",TimeToStr(Time_low_price,TIME_DATE|TIME_SECONDS));
//----
   return(0);
  }
 
Sepulca:

Você poderia tentar desta forma:


Como posso fazer com que os tempos mínimo e máximo sejam produzidos separadamente? Ou melhor, não é um problema. Há várias linhas para cada vez no diário de bordo.

Qual poderia ser o problema? Como fazer uma saída de linha por valor. O ideal é que você queira um tempo em números que possam ser copiados em Excel e comparados por

partida.


 
Por favor, me envie um link para um artigo sobre como criar sinais para o MetaTrader 4
 

Mais uma vez, minha função de apagar ordens pendentes não apaga tudo. Além disso, ele não apaga tudo no testador. Ajude-me a entender o que há de errado nisso.

void DeletePendingOrders()
{
    int numberOfTry = 0,
        err,
        ticket;

   for (int i=OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
      if (OrderMagicNumber() != i_magic) continue;
      if (OrderSymbol() != Symbol()) continue;
      if (OrderType() > 1 && OrderType() < 6)
      {
         ticket = OrderTicket();
         numberOfTry = 0;
      
         while (numberOfTry < 3)
         {
            while (!IsTradeAllowed()) Sleep(5000);
                err = 0;

           if (OrderDelete(ticket, Red))
            {
                numberOfTry = 3;
            }
            else
            {
                err = GetLastError();
                Print("err = ", err);
            }
      
            if (err > 0)
            { 
              Print(numberOfTry," #",ticket," Error modifing order: (", err , ") ");
              Sleep(5000); RefreshRates(); numberOfTry++;
            }
         }
      }
   }
}