//+------------------------------------------------------------------+
//| 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);
}
//+------------------------------------------------------------------+
結果
..............................................................................
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!
...................................................................................
それで?
空のグラスなんてないんです。しかし、そこにもトレードはないので、ゼロがあるのではないかと思っています、自分では確認していません。
でも、いつものシンボル、同じRTSやSiのBidとAskがゼロになっていないか、グラスは空っぽではないけれど、時々飛んでくるので、チェックする必要があります。
今日の18:51:09に空のグラス?
晴れましたね。
空のグラスなんて ないんです。でも、そこにもトレードはないので、ゼロがあるのかもしれませんね、自分では確認していないのですが。
ただ、RTSやSiなどの通常のシンボルでは、グラスが空ではないものの、たまに飛んでくるので、ビッドとアスクがゼロになっていないかチェックする必要がありますね。
どこからそんな「知ったかぶり」が出てくるのでしょうか。
コード(先物RTS-3.21、Openreach real)。
結果
晴れましたね。
それだけでなく、先ほど 言ったように取引時間ではなく、市場前であることなど
クリアリング・トレードは、取引時間に空のグラスに入りました。どこからそんな「知ったかぶり」が出てくるのでしょうか。
コード(RTS-3.21先物、オープンリーチリアル)。
結果
これは空のグラスではなく、買値と売値が空のティックであり、私が言ったように、おそらく何らかの不具合の結果として起こるものです。
それは、今のRTSやSiの空いた刻みを見ることです。
空っぽのグラスではなく、ビッドやアスクが空っぽのティックであり、やはり何らかの不具合が生じた結果であろう。
今のRTSやSiの空いた刻みですね、見てみると。
Dear!
あなたは、自分に書かれていることを読んでいますか?
オープン、リアル、RTS-3.21先物。
コードがあるんだから、もしかして本命のアカウントはないのか?
RTS-3.21 futures "born"そして、「人生」の始まりは、グラスが空っぽであることが多い。
拝啓
自分宛に書かれたものを読んでいるのか?
オープン、リアル、RTS-3.21先物
コードがある、もしかして本当のアカウントはない?
コードにMarketBookGet() がありませんでした。
実際の、つまり直近の先物の話をしているのです。また、ask/bidがゼロの刻みがあるかもしれませんが、だからといってグラスが空になるわけではありません。コードにMarketBookGet() がありませんでした。
なるほど...。
そして、多くの場合、「人生」の始まりはグラスが空っぽなのです。
今日のことだったんですね。
今日のことだったんですね。
時間を見てください、晴れているかもしれません。
セッションのスケジュール
7-00 - 14-00
プロムクリアリング
14-05 - 18-45
メーンクリアリング
19-00(19-05) - 23-50
今日の18:51:09の空のグラスは あなたですか?
これが「メインクリア」です。
追加
取引開始時刻は19-00または19-05のどちらかです。
先物やオプションの有効期限がある場合は、19-05から1日が始まる