Cualquier pregunta de novato, para no saturar el foro. Profesionales, no pasen de largo. En ninguna parte sin ti - 6. - página 139

 
nikelodeon:

Puede alguien explicar por qué durante el periodo de optimización aparecen configuraciones del EA en las que no hay rentabilidad. ¿Qué significa esto? ????

Pocos intercambios, máximo 8. Repasa más la historia.
 
Forexman77:
¿Puedes decirme cómo encontrar el máximo y el mínimo absoluto en el historial con el probador de estrategias?
¿Máximo y mínimo de qué?
 
paladin80:
¿Máximo y mínimo de qué?

En la historia del EURUSD, los precios máximos y mínimos del día. El momento de su formación.
 
Forexman77:

Historia del EURUSD precios máximos y mínimos del día. El momento de su formación.
Leer iHighest y iLowest
 
paladin80:
Leer iHighest y iLowest

Encontrar a través de iHighest y iLowest no es un problema. Cómo incorporar esto en el probador para que dé información sobre el tiempo de formación, en una historia particular.
 
Forexman77:

Encontrar a través de iHighest y iLowest no es un problema. Como hornear esto en el probador para que dé información sobre el tiempo de formación, en una historia particular.

Puedes intentarlo de esta manera:

 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 a través de iHighest y iLowest no es un problema. Como hornear esto en el probador para que dé información sobre el tiempo de formación, en una historia particular.

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:

Puedes intentarlo de esta manera:


¿Cómo puedo hacer que los tiempos mínimos y máximos salgan por separado? O mejor dicho, no es un problema. En el cuaderno de bitácora hay varias líneas para cada tiempo.

¿Cuál puede ser el problema? Cómo hacer una salida de una línea por valor. Lo ideal es tener un tiempo en números que se pueda copiar en Excel y comparar por

partido.


 
Por favor, lánzame un enlace a un artículo sobre cómo configurar las señales para MetaTrader 4
 

Una vez más, mi función de eliminar órdenes pendientes no elimina todo. Además, no borra todo lo que hay en el probador. Ayúdame a entender qué es lo que falla.

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++;
            }
         }
      }
   }
}
Razón de la queja: