Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 1782

 
Artyom Trishkin #:

Chicos, no importa cómo queráis hacerlo, si no recordáis el valor del índice del bucle en la última comprobación, entonces tenéis un bucle recorriendo todo el historial disponible. Y cuanto más sea, más largo será el bucle.

No estoy seguro.

Tengo otros 2 EAs con diseño similar de comprobación de rentabilidad y ambos pasan todo el historial en el probador en 15-20 min.

 
законопослушный гражданин #:

No estoy seguro.

Tengo otros 2 EAs con el mismo diseño de comprobación de lotes y ambos pasan toda la historia en el probador en 15-20 minutos

Bueno, depende de ti. No voy a discutir.

 
MakarFX #:

cambiar el orden de anulación

de forma similar

 
законопослушный гражданин #:

Sí, cualquier par.

Utilizo M15 para el AUD/USD.

Tuve el mismo problema con su indicador (adjunto)

Descubrí por el método de eliminación que esta cosa ralentiza el proceso:

Almacena los resultados (en variables). Y la caché debe actualizarse si la lista de pedidos ha cambiado. Y si nada ha cambiado, entonces sólo devuelve los valores de la caché.

 
Artyom Trishkin #:

Chicos, no importa cómo queráis hacerlo, si no recordáis el valor del índice del bucle en la última comprobación, entonces tenéis un bucle recorriendo todo el historial disponible. Y cuanto más hay, más tiempo dura el bucle.

Siempre hay que pensar que habrá un corte de luz y demás.

Un EA del historial debería estar configurado y funcionando en cualquier momento.

 
Volodymyr Zubov #:

Siempre hay que pensar en los cortes de luz y demás...

El asesor de la historia debería estar configurado y funcionando en cualquier momento.

Hay un VPS para mantener las luces encendidas.

 
Sí, no se necesita una variable local para encontrar el orden
 

Entiendo a grandes rasgos por qué hay problemas.

Ahora quiero hacer lo siguiente:

limpiar el vacío OnTick

void OnTick()
{
// Получим значение индикатора
   dMA = iMA(Symbol(), 0,PeriodMA, MovingShift, MODE_SMA, PRICE_CLOSE, 0); // MODE_SMA - простое усреднение , значение 0. PRICE_CLOSE- цена закрытия, значение 0.

// Если нет открытых ордеров, то входим в условие
   if(CountOrders()==0)
   {
  
// Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenBuy();

// Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenSell();
   }
}

la señal para que sea así:

bool bSignalBuy()
  {
   if (openPrice > Open[1] && openPrice < Close[1]) //Open[1] и Close[1]- цены открытия и закрытия каждого бара текущего графика.
   
  return(true);
   
  return(false);
  }
//+-----------------------------------------------------------------------------------------------+
//|                                                             Функция поиска сигнала на продажу |
//+-----------------------------------------------------------------------------------------------+
bool bSignalSell()
  {
   if(openPrice< Open[1] && openPrice > Close[1])

   return(true);

   return(false);
  }

dondeopenPrice intenta expresarlo así, pero da un error:

posible pérdida de datos debido a la conversión de tipos

¿estoy utilizando la función void correctamente?

  void openPrice()
  {
  int OP=0;
  
  if (GetLotSize()>LotControl) OP = dMA + Deviation * _Point;
  else OP = dMA;
  }
 

Hacer que una línea siga el cursor del ratón después de pulsar un botón a través de dibujar y borrar

void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam)
  {    
    if(ObjectGetInteger(0,"button_bs",OBJPROP_STATE)){
      int      x     =(int)lparam;
      int      y     =(int)dparam;
      datetime dt    =0;
      double   price =0;
      int      window=0;
     
      if(id == CHARTEVENT_MOUSE_MOVE){
        if(ChartXYToTimePrice(0,x,y,window,dt,price)){
            ObjectDelete(0,"H Line");
            ObjectCreate(0,"H Line",OBJ_HLINE,window,dt,price);
            ChartRedraw(0);
        }
      }
    }
    else{
      ObjectDelete(0,"H Line");
    }
  }

¿Tal vez haya otra manera? El refrigerador de la CPU empieza a hacer ruido :)

 
Volodymyr Zubov #:

Siempre hay que pensar en los cortes de luz y demás...

Un asesor de la historia debería estar configurado y funcionando en cualquier momento.

Debería. Entonces, ¿cómo recordar el índice del bucle evitará que pase por el historial después de un reinicio?
Razón de la queja: