FORTS: 초보자를 돕기 위해 - 페이지 13

 
prostotrader :

그래서 무엇?

빈 잔은 없습니다. 그러나 거기에는 거래가 없으므로 0이있을 수 있다고 가정하고 직접 확인하지 않았습니다.

그러나 유리가 비어 있지 않은 경우에도 가끔 날아가기 때문에 제로 입찰가를 확인하고 동일한 RTS 및 Si와 같은 일반 기호를 요청해야 합니다.

 
fxsaber :

오늘 18:51:09에 빈 잔?

청산입니다.

 
JRandomTrader :

빈 잔이 없습니다 . 하지만 거기에는 거래가 없으므로 0이있을 수 있다고 가정하고 직접 확인하지 않았습니다.

그러나 유리가 비어 있지 않은 경우에도 가끔 날아가기 때문에 제로 입찰가를 확인하고 동일한 RTS 및 Si와 같은 일반 기호를 요청해야 합니다.

그런 "아는 모든 것"은 어디서 얻습니까?

코드(RTS-3.21 선물, 오프너 리얼):

//+------------------------------------------------------------------+
//|                                                   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 . 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 :

청산입니다.

뿐만 아니라 사전 시장, 거래 시간 및 이전에 말했듯이

 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
청산 거래가 거래 시간 동안 빈 주문장으로 들어갔습니다.
 
prostotrader :

그런 "아는 모든 것"은 어디서 얻습니까?

코드(RTS-3.21 선물, 오프너 리얼):

결과:

이것은 빈 잔이 아니라 빈 입찰 및/또는 매도가 있는 틱입니다. 내가 말했듯이 이것은 아마도 일종의 실패의 결과로 발생할 것입니다.

여기에서는 현재 RTS 또는 Si의 빈 유리를 살펴보겠습니다.

 
JRandomTrader :

이것은 빈 잔이 아니라 빈 입찰 및/또는 매도가 있는 틱입니다. 내가 말했듯이 이것은 아마도 일종의 실패의 결과로 발생할 것입니다.

여기에서는 현재 RTS 또는 Si의 빈 유리를 살펴보겠습니다.

에게!

그들이 당신에게 쓰는 것을 읽습니까?

오프너, 실제, 선물 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

코드가 있는데 실제 계정이 없을 수도 있습니다.

선물 RTS-3.21 "태어난"
D'2019.03.15 19:05:00

그리고 종종 "인생"이 시작될 때 유리가 비어 있습니다.

 
prostotrader :

에게!

그들이 당신에게 쓰는 것을 읽습니까?

오프너, 실제, 선물 RTS-3.21

코드가 있는데 실제 계정이 없을 수도 있습니다.

MarketBookGet() 코드에서 볼 수 없음

나는 현재, 즉 가장 가까운 미래에 대해 이야기하고 있습니다. 그리고 0의 물음/입찰이 있는 틱은 그 안에서 날아갈 수 있지만 이것이 주문서를 비게 만들지는 않습니다.
Документация по MQL5: Получение рыночной информации / MarketBookGet
Документация по MQL5: Получение рыночной информации / MarketBookGet
  • www.mql5.com
MarketBookGet - Получение рыночной информации - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
JRandomTrader :

MarketBookGet() 코드에서 볼 수 없음

당연하게...

 
prostotrader :

그리고 종종 "인생"이 시작될 때 유리가 비어 있습니다.

오늘쯤이었습니다.

 
fxsaber :

오늘쯤이었습니다.

시간을 보면 맑아질 수 있다.

세션 일정

7-00 - 14-00

프롬클리어링

14-05 - 18-45

주요 청산

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

오늘 18시 51분 9초에 빈잔인가요?

메인 클리어링 입니다.

추가됨

거래일은 19-00과 19-05에 시작할 수 있습니다.

선물 또는 옵션의 만기가 있는 경우 날짜는 19-05에 시작됩니다.

사유: