Un verre vide, ça n'existe pas. Mais il n'y a pas de commerce non plus, donc je suppose qu'il peut y avoir des zéros, je n'ai pas vérifié moi-même.
Mais je dois vérifier l'absence d'offre et de demande sur les symboles habituels, les mêmes RTS et Si, car ils passent parfois à travers, bien que le verre ne soit pas vide.
Un verre vide, ça n'existe pas. Mais il n'y a pas de commerce non plus, donc je suppose qu'il peut y avoir des zéros, je n'ai pas vérifié moi-même.
Mais je dois vérifier si l'offre et la demande sont nulles pour les symboles habituels, tels que RTS et Si, car elles passent parfois à travers, bien que le verre ne soit pas vide.
D'où sortez-vous ces "je sais tout" ?
Code (futures RTS-3.21, Openreach real) :
//+------------------------------------------------------------------+
//| 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);
}
//+------------------------------------------------------------------+
Résultat :
..............................................................................
2021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book with empty Last!
2021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book with empty Last!
2021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book with empty Last!
2021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book. Last = 152910.02021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book. Last = 152910.02021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book with empty Last!
2021.03.0121:58:20.820 Ticks_zero (RTS-3.21,M1) Empty book with empty Last!
...................................................................................
Il ne s'agit pas d'un verre vide, mais d'un tick avec un bid et/ou un ask vide, ce qui, comme je l'ai dit, se produit probablement à la suite d'un problème quelconque.
C'est la coche vide sur les RTS ou Si actuels que je regarderais.
Et alors ?
Un verre vide, ça n'existe pas. Mais il n'y a pas de commerce non plus, donc je suppose qu'il peut y avoir des zéros, je n'ai pas vérifié moi-même.
Mais je dois vérifier l'absence d'offre et de demande sur les symboles habituels, les mêmes RTS et Si, car ils passent parfois à travers, bien que le verre ne soit pas vide.
Un verre vide à 18:51:09 aujourd'hui ?
C'est le dégagement.
Un verre vide, ça n'existe pas. Mais il n'y a pas de commerce non plus, donc je suppose qu'il peut y avoir des zéros, je n'ai pas vérifié moi-même.
Mais je dois vérifier si l'offre et la demande sont nulles pour les symboles habituels, tels que RTS et Si, car elles passent parfois à travers, bien que le verre ne soit pas vide.
D'où sortez-vous ces "je sais tout" ?
Code (futures RTS-3.21, Openreach real) :
//+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+Résultat :
C'est le dégagement.
En plus de cela, c'est aussi le pré-marché, ce n'est pas l'heure de la négociation et c'est aussi, comme je l'ai dit avant.
La transaction de compensation est allée dans le verre vide au moment de la négociation.D'où sortez-vous de tels "je sais tout" ?
Code (RTS-3.21 futures, Openreach real) :
Résultat :
Il ne s'agit pas d'un verre vide, mais d'un tick avec un bid et/ou un ask vide, ce qui, comme je l'ai dit, se produit probablement à la suite d'un problème quelconque.
C'est la coche vide sur les RTS ou Si actuels que je regarderais.
Ce n'est pas un verre vide, mais un tick avec un bid et/ou ask vide, ce qui, comme je l'ai dit, est probablement le résultat d'une sorte d'échec.
C'est la coche vide sur les RTS ou Si actuels que je regarderais.
Chérie !
Lisez-vous ce que l'on vous écrit ?
Ouvert, réel, RTS-3.21 futures.
Vous avez un code, peut-être n'y a-t-il pas de compte réel ?
RTS-3.21 futures "nées"Et le verre est souvent vide au début de la "vie".
Cher Monsieur !
Lisez-vous ce qui vous est écrit ?
Ouvert, réel, RTS-3.21 futures
Il y a un code, peut-être n'y a-t-il pas de compte réel ?
Je n'ai pas vu MarketBookGet() dans le code.
Je parle du réel, c'est-à-dire des futurs les plus proches. Et il peut avoir des tics avec zéro demande/offre, mais cela ne rend pas le verre vide.Je n'ai pas vu MarketBookGet() dans le code.
Je vois...
Et souvent, le verre est vide au début de la "vie".
C'était à propos d'aujourd'hui.
C'était à propos d'aujourd'hui.
Regardez l'heure, ça pourrait être le dégagement.
Calendrier des sessions
7-00 - 14-00
Défrichement du bal de fin d'année
14-05 - 18-45
compensation principale
19-00(19-05) - 23-50
Êtes-vous le verre vide à 18:51:09 aujourd'hui ?
C'est le dégagement principal.
Ajouté
La journée de négociation peut commencer soit à 19-00, soit à 19-05.
S'il y a une expiration d'un contrat à terme ou d'une option, la journée commence à 19-05.