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

 
Artyom Trishkin #:

Pessoal, não importa como vocês queiram fazer, se não se lembrarem do valor do índice do laço na última verificação, então vocês têm um laço percorrendo todo o histórico disponível. E quanto mais, mais longo é o laço.

Não tenho certeza.

Tenho 2 outros EAs com projeto semelhante de verificação de rentabilidade e ambos passam todo o histórico no testador dentro de 15-20 minutos.

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

Não tenho certeza.

Tenho outros 2 EAs com o mesmo desenho de verificação de lote e ambos passam a história inteira no testador em 15-20 minutos

Bem, é com você. Eu não vou discutir.

 
MakarFX #:

alterar a anulação do pedido

de forma semelhante

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

Sim, qualquer par.

Eu uso M15 para AUD/USD.

Eu tive o mesmo problema com seu indicador (anexo)

Descobri pelo método de eliminação que esta coisa retarda o processo:

Cache os resultados (em variáveis). E o cache deve ser atualizado se a lista de pedidos tiver mudado. E se nada mudou, então é só devolver os valores do cache.

 
Artyom Trishkin #:

Pessoal, não importa como vocês queiram fazer, se não se lembrarem do valor do índice do laço na última verificação, então vocês têm um laço percorrendo todo o histórico disponível. E quanto mais tempo houver, mais tempo demora o loop.

Você deve sempre pensar que haverá uma queda de energia e assim por diante.

Um EA do histórico deve ser configurado e executado a qualquer momento.

 
Volodymyr Zubov #:

Sempre tem que pensar em cortes de energia e assim por diante...

O assessor da história deve ser configurado e estar trabalhando a qualquer momento.

Existe um VPS para manter as luzes acesas.

 
Sim, você não precisa de uma variável local para encontrar o pedido
 

Eu entendo aproximadamente por que existem problemas.

Agora eu quero fazer o seguinte:

limpar o vazio 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();
   }
}

o sinal para torná-lo assim:

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);
  }

ondeo openPrice tenta expressá-lo desta forma, mas dá um erro:

possível perda de dados devido à conversão do tipo

estou usando corretamente a função void ?

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

Fez uma linha seguir o cursor do mouse depois de pressionar um botão para desenhar e excluir

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");
    }
  }

Talvez haja outra maneira? O resfriador do processador está começando a ficar ruidoso :)

 
Volodymyr Zubov #:

Sempre tem que pensar em cortes de energia e assim por diante...

Um conselheiro da história deve ser configurado e trabalhar a qualquer momento.

Deveria. Então, como a lembrança do índice do loop impedirá que ele passe pela história após um reinício?