Errori, bug, domande - pagina 2906

 
La ricerca del sito non funziona per un secondo giorno.
 

Gli stop e le prese non funzionano durante i test. Nello screenshot un esempio di un Sell Limit innescato con SL e TP impostati, ma lo stop (e il take) non scatta ovunque il prezzo sia andato. Dove scavare?

File:
Screenshot_1.jpg  177 kb
 

Per le posizioni, c'è la proprietà POSITION_TIME_UPDATE - il tempo dell'ultimo cambiamento di posizione.

Non c'è una tale proprietà per gli ordini nel terminale. Ma ce n'è uno sul server?


Ho capito bene che la modifica di un ordine Limit in una borsa è una riemissione dell'ordine Limit: rimuovere il vecchio e metterne uno nuovo?

Se è così, allora la modifica dovrebbe cambiare ORDER_TIME_SETUP. Tuttavia, questo non sta accadendo.

 

Grafici degli indicatori che scompaiono

Molto spesso, dopo qualche ora di lavoro, i grafici degli indicatori scompaiono.

Per ripristinare i dati e ridurre al minimo il calcolo dell'indicatore, utilizzo le fasi di caricamento e calcolo dei dati.

Quando installo l'indicatore sul grafico tutte le fasi funzionano normalmente.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnCalculate (const int rates_total,  
                 const int prev_calculated, 
                 const datetime& time[], 
                 const double& open[], 
                 const double& high[], 
                 const double& low[], 
                 const double& close[], 
                 const long& tick_volume[], 
                 const long& volume[],
                 const int& spread[]  
)
{
  if(prev_calculated == 0)
  {
    switch (mar_data.stage)
    {
      case LOAD_TICKS:
        if(LoadTicks(time) == true)
        {
          //--- 
          mar_data.stage = READ_PRIM_TICKS;
        }
        return(0);
      break;
      case READ_PRIM_TICKS:
        if(ReadPrimTicks() == true)
        {
          //---
          mar_data.stage = READ_SEC_TICKS;
        }  
        return(0);
      break;
      case READ_SEC_TICKS:
        if(ReadSecTicks() == true)
        {
          //---
          mar_data.stage = FILL_DATA;
        }  
        return(0);
      break;
      case FILL_DATA:
        //---
        FillData();
        mar_data.stage = LOAD_TICKS;
      break;
    }
  } 
  else
  {
    //--- Live data ---
  }
  return(rates_total);
}

Nell'ultimo stadio si assegna il primo stadio, così l'indicatore (quando è chiave) può ricaricare i dati

mar_data.stage = LOAD_TICKS;

Ma, quando l'indicatore viene resettato, i dati non vengono ripristinati

La funzione

//+------------------------------------------------------------------+
//| Custom indicator Load ticks function                             |
//+------------------------------------------------------------------+
bool LoadTicks(const datetime &a_times[])
{
  int result = CopyTime(Symbol(), PERIOD_M1, start_time, end_time, mar_data.time_array);
  if(result > 0)
  {
    if(mar_data.time_array[result - 1] == a_times[ArraySize(a_times) - 1])
    {
      mar_data.b_cnt = result;
      result = CopyTicksRange(Symbol(), mar_data.pr_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
      if(result > 0)
      {
        if(mar_data.pr_ticks[result-1].time >= mar_data.time_array[ArraySize(mar_data.time_array) - 1]) 
        {
          mar_data.pr_cnt = result;
          datetime sec_time_array[];
          result = CopyTime(sec_symbol, PERIOD_M1, start_time, end_time, sec_time_array);
          if(result > 0)
          {
            result = CopyTicksRange(sec_symbol, mar_data.sec_ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
            if(result > 0)
            {
              if(mar_data.sec_ticks[result-1].time >= sec_time_array[ArraySize(sec_time_array) - 1])
              {
                mar_data.sec_cnt = result;
                return(true);
              } else Print("Не хватает тиков ", sec_symbol, "!");
            } else Print("Не получены тики по символу ", sec_symbol, "!");
          } else Print("Не скопировано время баров по символу ", sec_symbol, "!");
        } else Print("Не хватает тиков ", Symbol(), "!"); 
      } else Print("Не получены тики по символу ", Symbol(), "!");
    } else Print("Не хватает баров по символу ", Symbol(), "!");
  } else Print("Не скопировано время баров по символу ", Symbol(), "!");
  return(false);
}

Emette solo questo

"Il tempo della barra BR-1.21 non è stato copiato!

Ma non succede più nulla.

Perché c'è una chiamata di LoadTicks(), quindi tutti i passi devono essere ripetuti, come quando si carica l'indicatore.

Cari sviluppatori, perché l'indicatore smette di funzionare?

Документация по MQL5: Программы MQL5 / Выполнение программ
Документация по MQL5: Программы MQL5 / Выполнение программ
  • www.mql5.com
Каждый скрипт, сервис и эксперт работает в собственном отдельном потоке. Все индикаторы, рассчитываемые на одном символе, даже если они запущены на разных графиках, работают в одном потоке. Таким образом, все индикаторы на одном символе делят между собой ресурсы одного потока. В одном потоке с индикаторами также последовательно выполняются...
 

Si prega di aggiungere una tabella dei codici dei tasti della tastiera alla documentazione.

E le scorciatoie da tastiera che sono disabilitate per OnChartEvent. Per esempio CTRL+T.

 
fxsaber:
Per il secondo giorno, la ricerca del sito non funziona.

La base di ricerca si è ristretta molto. Molte cose non vengono trovate.

 
Come faccio a sapere quando la posizione/l'ordine è stato modificato l'ultima volta?
 
fxsaber:
Come faccio a sapere quando ho modificato l'ultima volta la mia posizione/ordine?

AGGIORNAMENTO POSIZIONE/TEMPO

 
Igor_Gagarin:

AGGIORNAMENTO POSIZIONE/TEMPO

Questo è il momento dell'ultimo cambio di volume. Rete Echo.

 
fxsaber:

Questo è il momento dell'ultimo cambio di volume. Echoes Netting.

Iltempo di apertura della posizione sta cedendo. Cosa stavi chiedendo?