FORTS: Per aiutare i principianti - pagina 13

 
prostotrader:

Quindi?

Non esiste un bicchiere vuoto. Ma anche lì non c'è commercio, quindi presumo che ci possano essere degli zeri, non ho controllato personalmente.

Ma devo controllare se ci sono zero bid e ask sui soliti simboli, gli stessi RTS e Si, perché ogni tanto volano, anche se il bicchiere non è vuoto.

 
fxsaber:

Un bicchiere vuoto alle 18:51:09 di oggi?

Si sta liberando.

 
JRandomTrader:

Non esiste un bicchiere vuoto. Ma anche lì non c'è commercio, quindi immagino che ci possano essere degli zeri, non ho controllato io stesso.

Ma devo controllare se ci sono zero bid e ask sui simboli abituali, come RTS e Si, perché ogni tanto volano, anche se il bicchiere non è vuoto.

Dove prendete questi "so-tutto-io"?

Codice (futuro RTS-3.21, Openreach reale):

//+------------------------------------------------------------------+
//|                                                   Ticks_zero.mq5 |
//|                                      Copyright 2021 prostotrader |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021 prostotrader"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window

#property indicator_plots   1
#property indicator_buffers 1

datetime start_time, end_time;
datetime time_array[];
int time_cnt;
MqlTick ticks[];

input datetime StTime = D'2019.03.15 19:05:00';    // Начало расчета фьючерса

enum IND_STAGE
{
  LOAD_TICKS = 0,
  FILL_DATA = 1
}ind_stage;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   end_time = datetime(SymbolInfoInteger(Symbol(), SYMBOL_EXPIRATION_TIME));
   start_time = StTime;
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator Load ticks function                             |
//+------------------------------------------------------------------+
bool LoadTicks(const datetime &a_times[])
{
  int result = CopyTime(Symbol(), PERIOD_M1, start_time, end_time, time_array);
  if(result > 0)
  {
    time_cnt = result;
    if(time_array[result - 1] == a_times[ArraySize(a_times) - 1])
    {
      result = CopyTicksRange(Symbol(), ticks, COPY_TICKS_INFO, ulong(start_time) * 1000, ulong(end_time) * 1000);
      if(result > 0)
      {
        if(ticks[result-1].time >= time_array[time_cnt - 1]) 
        {
          return(true);
        } else Print(__FUNCTION__, ": Не хватает тиков ", Symbol(), "!"); 
      } else Print(__FUNCTION__, ": Не получены тики по символу ", Symbol(), "!");
    } else Print(__FUNCTION__, ": Не хватает баров по символу ", Symbol(), "!");
  } else Print(__FUNCTION__, ": Не скопировано время баров по символу ", Symbol(), "!");
  return(false);
}  
//+------------------------------------------------------------------+
//| Custom indicator Fill Data function                              |
//+------------------------------------------------------------------+
void FillData()
{
  for(int i = 0; i<ArraySize(ticks);i++)
  {
    if((ticks[i].ask == 0) && (ticks[i].bid == 0) && (ticks[i].last == 0)) 
    {
     Print("Empty book with empty Last! Time: ", ticks[i].time);
    }
    else
    if((ticks[i].ask == 0) && (ticks[i].bid == 0) && (ticks[i].last != 0)) 
    {
      Print("Empty book. Last = ", ticks[i].last, " Time: ", ticks[i].time);
    } 
  }
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
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[] )
{  
    switch(ind_stage)
    {
      case LOAD_TICKS:
        if(LoadTicks(time) == true)
        {
          ind_stage = FILL_DATA;
        } else return(0); 
      break;
      case FILL_DATA:
        FillData();
      break;
    }
   
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

Risultato:

..............................................................................
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book with empty Last!
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book with empty Last!
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book with empty Last!
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book. Last = 152910.0
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book. Last = 152910.0
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book with empty Last!
2021.03.01 21:58:20.820 Ticks_zero (RTS-3.21,M1)        Empty book with empty Last!
...................................................................................
 
JRandomTrader:

Si sta liberando.

Non solo, è anche pre-mercato, non è tempo di trading ed è anche come ho detto prima

2021.03.01 22:08:11.016 Ticks_zero (RTS-3.21,M1)        Empty book. Last = 125620.0 Time: 2020.03.02 19:00:02
2021.03.01 22:08:11.016 Ticks_zero (RTS-3.21,M1)        Empty book with empty Last! Time: 2020.03.03 00:04:31
2021.03.01 22:08:11.016 Ticks_zero (RTS-3.21,M1)        Empty book. Last = 130070.0 Time: 2020.03.03 18:44:58
2021.03.01 22:08:11.016 Ticks_zero (RTS-3.21,M1)        Empty book. Last = 130070.0 Time: 2020.03.03 19:00:01
Lo scambio di compensazione è andato nel bicchiere vuoto al momento del trading.
 
prostotrader:

Da dove vengono questi "so-tutto-io"?

Codice (RTS-3.21 futures, Openreach reale):

Risultato:

Questo non è un bicchiere vuoto, ma un tick con bid e/o ask vuoti, che, come ho detto, accade probabilmente come risultato di qualche tipo di glitch.

Questo è il tick vuoto sull'attuale RTS o Si che guarderei.

 
JRandomTrader:

Non è un bicchiere vuoto, ma un tick con bid e/o ask vuoti, che, come ho detto, è probabilmente il risultato di qualche tipo di fallimento.

Questo è il tick vuoto dell'attuale RTS o Si che guarderei.

Caro!

Leggete quello che vi viene scritto?

Futures aperti, reali, RTS-3.21.

2021.03.01 22:08:11.016 Ticks_zero (RTS-3.21,M1)        Empty book. Last = 130070.0 Time: 2020.03.03 19:00:01

Hai un codice, forse non c'è un vero conto?

RTS-3.21 futures "nati"
D'2019.03.15 19:05:00

E il bicchiere è spesso vuoto all'inizio della "vita".

 
prostotrader:

Caro signore!

Leggete ciò che vi viene scritto?

Futures aperti, reali, RTS-3.21

C'è un codice, forse non c'è un vero conto?

Non ho visto MarketBookGet() nel codice

Sto parlando dell'attuale - cioè del futuro più vicino. E può avere zecche con zero ask/bid, ma questo non rende il bicchiere vuoto.
Документация по MQL5: Получение рыночной информации / MarketBookGet
Документация по MQL5: Получение рыночной информации / MarketBookGet
  • www.mql5.com
MarketBookGet - Получение рыночной информации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
JRandomTrader:

Non ho visto MarketBookGet() nel codice

Capisco...

 
prostotrader:

E spesso il bicchiere è vuoto all'inizio della "vita".

Si trattava di oggi.

 
fxsaber:

Si trattava di oggi.

Guarda l'ora, potrebbe schiarirsi.

Programma delle sessioni

7-00 - 14-00

Sgombero del ballo

14-05 - 18-45

sgombero principale

19-00(19-05) - 23-50

Sei tu il bicchiere vuoto alle 18:51:09 di oggi?

Questa è la radura principale.

Aggiunto

La giornata di trading può iniziare alle 19-00 o alle 19-05

Se c'è una scadenza di un futures o di un'opzione, allora il giorno inizia alle 19-05

Motivazione: