Могли бы вы рассказать о случае, когда участник форума оказался полезным в вашей работе, и можете ли вы описать это подробно? - страница 9

 
Artyom Trishkin #:

А сейчас все утверждения голословны.

голословные утверждения сейчас только у тебя.

ты это всё будешь только завтра тестировать.

а я это тестировало давно -- и связь отключал и смотрел как идёт отработка при обрыве связи -- и ставил на новый актив, чтобы посмотреть отработку при доливке истории.

и если бы я это всё раньше не тестировал -- то не задавал бы тебе сейчас вопросы и не комментировал твой подход.

ошибочно подумал изначально, что ты знаешь нюансы по работе движка МТ -- раз ликвидировал отработку ситуации D.

 
Andrey F. Zelinsky #:

голословные утверждения сейчас только у тебя.

ты это всё будешь только завтра тестировать.

а я это тестировало давно -- и связь отключал и смотрел как идёт отработка при обрыве связи -- и ставил на новый актив, чтобы посмотреть отработку при доливке истории.

и если бы я это всё раньше не тестировал -- то не задавал бы тебе сейчас вопросы и не комментировал твой подход.

ошибочно подумал изначально, что ты знаешь нюансы по работе движка МТ -- раз ликвидировал отработку ситуации D.

Завтра потестирую.
 
Artyom Trishkin #:

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

Перечитал я выкладку Андрея по пунктам. И вот моё мнение: На кой ……… вымудрять какие-то вычисления пропущенных баров? Проще пересчитать весь индикатор от начала до текущего бара. В наше время такие мощные компьютеры, что заморачиваться по этому поводу не сто́ит.

Вобщем завтра проверю такой вариант

/****************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[])

 {
  int limit = rates_total-prev_calculated > 1 ? 1 : rates_total-1;
  for(int i = limit; i < rates_total; i++)
   {
    dataBuff[i] = high[i];
    colorBuff[i] = high[i] > high[i-1] ? 0 : 1;
   }
  return rates_total;
 }/******************************************************************/
 
Alexey Viktorov #:

Перечитал я выкладку Андрея по пунктам. И вот моё мнение: На кой ……… вымудрять какие-то вычисления пропущенных баров? Проще пересчитать весь индикатор от начала до текущего бара. В наше время такие мощные компьютеры, что заморачиваться по этому поводу не сто́ит.

надо выяснить, смена истории после реконнекта скинет prev_calculate автоматом на 0, или просто досчитает от него до rates_total

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

 
Alexey Viktorov #:

Перечитал я выкладку Андрея по пунктам. И вот моё мнение: На кой ……… вымудрять какие-то вычисления пропущенных баров? Проще пересчитать весь индикатор от начала до текущего бара. В наше время такие мощные компьютеры, что заморачиваться по этому поводу не сто́ит.

вот-вот -- "зачем заморачиваться" -- ключевой тезис во всём этом диалоге.

но почему-то нет ответа на вопрос: "почему не сделать нормально".

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

в таком стиле "зачем заморачиваться" завалена вся Кодабаза и даже Статьи задело -- в итоге никто толком не понимает и/или не может пояснить где "так надо сделать потому что", а где "зачем заморачиваться".

 
Alexey Viktorov #:

Перечитал я выкладку Андрея по пунктам. И вот моё мнение: На кой ……… вымудрять какие-то вычисления пропущенных баров? Проще пересчитать весь индикатор от начала до текущего бара. В наше время такие мощные компьютеры, что заморачиваться по этому поводу не сто́ит.

что показательно -- странный вариант "зачем заморачиваться" -- отличается от варианта, который предлагают Метаквоты в своих штатных примерах.

остаётся вопрос: кто тут реально заморачивается и зачем?

 
Andrey F. Zelinsky #:

вот-вот -- "зачем заморачиваться" -- ключевой тезис во всём этом диалоге.

но почему-то нет ответа на вопрос: "почему не сделать нормально".

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

в таком стиле "зачем заморачиваться" завалена вся Кодабаза и даже Статьи задело -- в итоге никто толком не понимает и/или не может пояснить где "так надо сделать потому что", а где "зачем заморачиваться".

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Могли бы вы рассказать о случае, когда участник форума оказался полезным в вашей работе, и можете ли вы описать это подробно?

Andrey F. Zelinsky, 2024.10.05 13:53


эта схема требует доработки -- я бы эту схему в реальности не использовал -- проблему схемы выделил желтым -- ну, а вопрос про отнимание 1 подчеркнул.


//--- Проверка и расчёт количества просчитываемых баров
   int limit=rates_total-prev_calculated;
   if(limit>1)
     {
      limit=rates_total-1;
      ArrayInitialize(BufferXXX,EMPTY_VALUE); // инициализация буферов начальными значениями
     }
//--- Цикл
   for(int i=limit; i>=0 && !IsStopped(); i--)
     {
      // расчёт
     }

рассмотрим четыре примера.

пусть есть 10 баров -- 9 8 7 6 5 4 3 2 1 0


ситуация А -- начало расчёта

rates_total =10

prev_calculated =0

limit =10 -- и надо отнять 1, чтобы не был выход за пределы массива в цикле for(int i=limit; i>=0; i--) -- идёт перерасчёт всей истории от бара 9 до 0


ситуация В -- текущий бар

rates_total =10

prev_calculated =10

limit =0 -- идёт перерасчёт нового бара


ситуация С -- новый бар -- бары:  10 9 8 7 6 5 4 3 2 [1 0]

rates_total =11

prev_calculated =10 -- остановились на баре 1

limit =1 -- идёт перерасчёт только что закрытого бара 1 и нового бара 0


ситуация D -- отсутствовала связь бары:  10 9 8 7 [6 5 4 3 2 1 0]

rates_total =11

prev_calculated =5 -- остановились на баре 6

limit =11-5 =6 -- отнимается 1 по if(limit>1) -- идёт перерасчёт с бара 5, "закрытый" бар 6 не перерасчитывается, а должен был, чтобы отработать его закрытие на манер ситуации С


Андрей, вот смотри свои выкладки

В ситуации D почему изначально не посчитаны все бары? Почему ты считаешь посчитанными только половину? Предполагаешь, что связь оборвалась в момент первого пересчёта индикатора? Если нет, то во время отсутствия связи баров прибавилось. А где они в твоей схеме?

«Что-то тут не так. Не так что-то тут.» ©

 
Andrey F. Zelinsky #:

наконец-то прозвучали слова профессионала

Какая блоха тебя укусила?

Неудачи в торговле?

 
Alexey Viktorov #:

Андрей, вот смотри свои выкладки

В ситуации D почему изначально не посчитаны все бары? Почему ты считаешь посчитанными только половину? Предполагаешь, что связь оборвалась в момент первого пересчёта индикатора? Если нет, то во время отсутствия связи баров прибавилось. А где они в твоей схеме?

«Что-то тут не так. Не так что-то тут.» ©

чуть позже уточнил:

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Могли бы вы рассказать о случае, когда участник форума оказался полезным в вашей работе, и можете ли вы описать это подробно?

Andrey F. Zelinsky, 2024.10.05 16:22

да, идёт полный пересчёт -- твою 

      limit=rates_total-1;

видел как

      limit=limit-1;

т.е. снимаются мои тезисы про баг в схеме.

но не снимается и/или под вопросом остаётся отработка ситуации D -- насколько обоснован полный перерасчёт.

ну, и я не использую даже в mql4 -- схему индексации как в mql4 (когда текущий бар имеет индекс =0)


 
lynxntech #:

надо выяснить, смена истории после реконнекта скинет prev_calculate автоматом на 0, или просто досчитает от него до rates_total

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

Конечно ничего не скинет. Потому и написано, что если баров прибавилось больше чем 1, то пересчитать весь индикатор.