¿Cómo se algoritmiza la detección de los grupos de alimentación MA? - página 18

 

Estos son los máximos locales. Construye un zig-zag alrededor de ellos, digamos que de arriba a abajo. Piensa en el criterio que utilizarás para construirlos. Por ejemplo, el tamaño de la diferencia entre los valores de las barras en horizontal, o la distancia en exceso en vertical (número de puntos), o una combinación de ambos.

 
Mikhail Toptunov:

Mira, hay un método para calcular la línea azul en las estadísticas, ¿no?


¿Cómo se puede...?

Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias

¿Cómo puedo algoritmizar la detección de la alimentación MA?

Aleksei Stepanenko, 2021.04.07 15:10

En un array ordenado encontrar, por ejemplo, el percentil 90. Todo lo que sea superior a eso es particularmente alto.

 
Mikhail Toptunov:

Hola, ¿alguien puede decirme qué modelos estadísticos se pueden utilizar para determinar los valores que son particularmente altos?

RMS
 

¿Alguien puede sugerir una consulta SQL? ¿Por qué no puedo obtener 0 en la quinta columna?

   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() falló con el código=5625
 
Renat Akhtyamov:
RMS

+

 

Todo hecho. Es necesario que la consulta sea correcta y que no haya funciones innecesarias


  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);
 

Hola, ¿podría decirme cómo obtener los valores de los ticks de compra y venta?

Tengo una bolsa de criptomonedas integrada en mi sistema.

El problema es que en la visión general del mercado y en el propio gráfico las cotizaciones se muestran correctamente, pero cuando se solicitan a través de la aplicación :

   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);

¡¡¡¡¡¡¡¡¡¡Las comillas dejan de reflejarse correctamente. un fastidio generalizado!!!!!!!!!!


¿De qué otras formas puedo obtener valores?

Se lo pido a los analistas, ¡por favor no pasen de largo! Un tercio de mi vida desarrollando un robot, la línea de meta se vislumbra en el horizonte, ¡y hay tantos problemas!

Parece que el error aparece el fin de semana. ¿Cómo es que...

 
Mikhail Toptunov:

Ejemplo:

Matriz de 30 valores de precios MA, busca el centro de la matriz ordenada.

Obtenemos el valor 15(L0) en el centro de la matriz y luego obtenemos dos matrices de L0 hacia abajo y L0 hacia arriba y encontramos el centro de estas matrices y así sucesivamente hasta obtener el númerofokus (siete valores por ejemplo)

La primera derivada de MA:(X(0)-X(n))/(n+1). ¿Necesitamos el medio de dos matrices, o podemos hacerlo con una simple analítica?

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

Primera derivada de MA:(X(0)-X(n))/(n+1). ¿Necesitamos el medio de dos matrices, o podemos hacerlo con una simple analítica?

Gracias, pero ya lo he superado.

Sólo se ha empezado a buscar fractales de la enésima cantidad de MAs en la barra de interés.

Razón de la queja: