Как алгоритмизировать выявление скопления фида МА? - страница 18

 

Это локальные максимумы. Постройте зиз-заг по ним, допустим сверху вниз. Придумайте критерий, по которому будете их строить. Например, размер перепада между значениями полосок по горизонтали, или превышение расстояния по вертикали (количества пунктов), или комбинированный и то, и то.

 
Mikhail Toptunov:

Ну вот смотрите, есть же в статистике метод , которым можно вычислить синюю линию?


А как просто???

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

Как алгоритмизировать выявление скопления фида МА?

Aleksei Stepanenko, 2021.04.07 15:10

В отсортированном массиве найти, например, 90 процентиль. Всё, что больше него - особо высокие. 

 
Mikhail Toptunov:

Здравствуйте, может кто подскажет, какими статистическими моделями можно определить значения которые являются особо высокие?

СКО
 

Может кто подскажет по SQL запросу. Почему не удается записать значение 0 в пятый столбец

   filename=_symbol()+(string)_Period+"_stats.sqlite";
   int database=DatabaseOpen(filename, DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE | DATABASE_OPEN_COMMON);
   if(database==INVALID_HANDLE)
     {
      Print("SS: ", filename, " open failed with code ", GetLastError());
      return;
     }
   if(DatabaseTableExists(database, "DEALS"))
     {
      //--- создадим запрос и получим хендл на него
      int request=DatabasePrepare(database, "SELECT * FROM DEALS WHERE ID="+IntegerToString(i));
      if(!DatabaseBind(request,4,0))
        {
         PrintFormat("DatabaseBind() failed with code=%d", GetLastError());
         return;
        }
     }
   DatabaseClose(database);
DatabaseBind() failed with code=5625
 
Renat Akhtyamov:
СКО

+

 

Все сделал. Нужно запрос правильно составить и не нужны лишние функции


  int database=DatabaseOpen(filename, DATABASE_OPEN_READWRITE | DATABASE_OPEN_CREATE | DATABASE_OPEN_COMMON);
   if(database==INVALID_HANDLE)
     {
      Print("SS: ", filename, " open failed with code ", GetLastError());
      return;
     }
//--- заблокируем базу данных перед выполнением транзакций
//--- пройдем по всем сделкам и внесем их в базу данных
   bool failed=false;
   DatabaseTransactionBegin(database);
//--- внесем в таблицу каждую сделку через запрос
   string request_text="UPDATE DEALS SET Activity=1, timeClose="+(string)tc+" WHERE ID="+(string)i+"OR ID="+(string)(i+1);
   if(!DatabaseExecute(database,request_text))
     {
      PrintFormat("%s: failed to insert deal #%d with code %d", __FUNCTION__, i, GetLastError());
      failed=true;
     }
   if(failed)
     {
      //--- откатим все транзакции и разблокируем базу данных
      DatabaseTransactionRollback(database);
      PrintFormat("%s: DatabaseExecute() failed with code ", __FUNCTION__, GetLastError());
      DatabaseClose(database);
      return;
     }
   PrintFormat("Закрытие сделки ID: %d ", DealOpen[i].ID);
//--- все транзакции прошли успешно - зафиксируем изменения и разблокируем базу данных
   DatabaseTransactionCommit(database);
   DatabaseClose(database);
 

Здравствуйте, подскажите пожалуйста как получить значения тика ask,bid.

Нюанс, У меня интегрирована в систему крипто биржа.

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

   MqlTick last_tick;
   SymbolInfoTick(Symbol(),last_tick);
   ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
   bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
   Comment(": Bid = ",bid," Ask = ",ask," tick Time ",TimeToString(last_tick.time,TIME_SECONDS),
           "\n"," Ls_bid ",last_tick.bid," Ls_ask ",last_tick.ask);

Котировки перестают отражаться правильно.  Вообще засада!!!!!!!!!!


Какими еще способами можно получить значения? 

Спецы прошу не проходите мимо!!! Треть жизни разрабатываю робота, на горизонте виднеется финиш , а тут такая жесть!!!

Похоже , что ошибка выскакивает на выходных. как же так...

 
Mikhail Toptunov:

Пример:

Массив 30 значений цены МА, ищем середину упорядоченного массива.

Получаем 15(L0) значение середины массива,далее получаем два массива от L0 вниз и L0 наверх, находим середину этих массивов и так до получения количества fokus(семи значений например)

Первая производная МА:(X(0)-X(n))/(n+1).  Нужна середина двух массивов, или простой аналитикой обойдёмся? 

 
Алексей Тарабанов:

Первая производная МА:(X(0)-X(n))/(n+1).  Нужна середина двух массивов, или простой аналитикой обойдёмся? 

Спасибо, но я уже ушёл от этого.

просто начал искать фракталы n-ого количества МА по интересующему бару.

Причина обращения: