Ошибки, баги, вопросы - страница 2905

 

Не получается вывести средства от проданого продукта. Начался отсчет часов в отрицательную сторону. Что не так? 

 

Может кто сказать что за флаги получил при копировании тиков

2020.11.18 23:50:07.449 00 (Si-12.20,M1)                          [time]  [bid]  [ask] [last] [volume]    [time_msc] [flags] [volume_real]
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 0] 2020.11.18 20:01:01  76087  76088  76087        1 1605729661364     312             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 1] 2020.11.18 20:01:03  76087  76088  76087        2 1605729663138     344             2
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 2] 2020.11.18 20:01:03  76087  76089  76088        1 1605729663414     312             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 3] 2020.11.18 20:01:03  76087  76089  76089        1 1605729663619     312             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 4] 2020.11.18 20:01:03  76087  76088  76088        1 1605729663791     312             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 5] 2020.11.18 20:01:07  76087  76089  76087        1 1605729667934     344             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 6] 2020.11.18 20:01:07  76087  76089  76084        1 1605729667934     344             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [ 7] 2020.11.18 20:01:07  76087  76089  76084        5 1605729667934     344             5


2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [84] 2020.11.18 20:01:32  76071  76075  76074        1 1605729692079     312             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [85] 2020.11.18 20:01:37  76074  76075  76075        1 1605729697259     312             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [86] 2020.11.18 20:01:37  76074  76075  76075       11 1605729697259     312            11
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [87] 2020.11.18 20:01:40  76065  76069  76069        2 1605729700021     312             2
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [88] 2020.11.18 20:01:42  76067  76072  76067        2 1605729702403     344             2
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [89] 2020.11.18 20:01:43  76063  76072  76065        1 1605729703986     344             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [90] 2020.11.18 20:01:43  76063  76072  76064        1 1605729703986     344             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [91] 2020.11.18 20:01:44  76062  76072  76063        1 1605729704550     344             1
2020.11.18 23:50:07.449 00 (Si-12.20,M1)        [92] 2020.11.18 20:01:44  76062  76072  76063        2 1605729704550     344             2

Код скрипта

/********************Script program start function*******************/
void OnStart()
 {
  MqlTick mqlTick[];
  ulong stMSC = D'2020.11.18 20:01:00'*1000, enMSC = D'2020.11.18 20:02:00'*1000;
  CopyTicksRange(_Symbol, mqlTick, COPY_TICKS_TRADE, stMSC, enMSC);
  ArrayPrint(mqlTick);
 }/******************************************************************/

Точно такой-же результат от такого скрипта

/********************Script program start function*******************/
void OnStart()
 {
  MqlTick mqlTick[];
  ulong stMSC = D'2020.11.18 20:01:00'*1000/*, enMSC = D'2020.11.18 20:02:00'*1000*/;
  CopyTicks(_Symbol, mqlTick, COPY_TICKS_TRADE, stMSC, 93);
  ArrayPrint(mqlTick);
 }/******************************************************************/

Если заменить на COPY_TICKS_ALL, то добавляются флаги 2, 4 и их сумма 6. Но 312 и 344 так-же присутствуют. По идее больше 126 быть не должно. В течении торгового дня наблюдаются 56 и 88 при запросе COPY_TICKS_TRADE… Откуда столько?

 

Добавьте, пожалуйста, в эту строчку после компиляции:

0 errors, 0 warnings, 618 msec elapsed

локальное время, когда была сделана компиляция.

 
Второй день не пашет поиск по сайту.
 

Не срабатывают стопы и тейки при тестировании. На скрине пример сработавшего Sell Limit-а с установившимися SL и ТР, но стоп (как и тейк) не срабатывает куда бы не ушла цена. Куда копать ? 

Файлы:
Screenshot_1.jpg  177 kb
 

Для позиций есть свойство POSITION_TIME_UPDATE - время последнего изменения позиции.

Для ордеров такого свойства в Терминале нет. А на сервере есть?


Правильно ли понимаю, что модификация лимитника на бирже - это перевыставление лимитника: удаление старого и постановка нового?

Если так, то модификация должна менять ORDER_TIME_SETUP. Однако, это не происходит.

 

Пропадание графиков индикатора

Достаточно часто, после нескольких часов работы, пропадают графики индикатора.

Чтобы восстановить данные и минимизировать расчеты индикатора, я использую стадии загрузки и расчета данных.

При установке индикатора на чарт все стадии отрабатываются нормально.

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
}

В последней стадии присваивается первая стадия, чтобы индикатор (при клюке) смог заново подгрузить данные

mar_data.stage = LOAD_TICKS;

Но, когда происходит сброс индикатора, данные не восстанавливаются

Функция 

//+------------------------------------------------------------------+
//| 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);
}

Выдает только это

"Не скопировано время баров по символу BR-1.21!"

А дальше ничего не происходит.

Ведь происходит вызов LoadTicks(), следовательно все стадии должны повториться, как при загрузке индикатора.

Уважаемые разработчики, почему индикатор перестает работать ?

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

Просьба в Документацию добавить таблицу кодов клавиш клавиатуры.

И сочетания, которые отключены для OnChartEvent. Например, CTRL+T.

 
fxsaber:
Второй день не пашет поиск по сайту.

База поиска сильно сузилась. Очень многое не находит.

 
Как узнать время последней модификации позиции/ордера?