Come si fa ad algoritmizzare il rilevamento dei cluster di alimentazione MA? - pagina 18

 

Questi sono i massimi locali. Costruisci un zig-zag intorno a loro, dall'alto verso il basso. Pensate a un criterio che userete per costruirli. Per esempio, la dimensione della differenza tra i valori delle barre in orizzontale, o la distanza in eccesso in verticale (numero di punti), o una combinazione di entrambi.

 
Mikhail Toptunov:

Guarda, c'è un metodo per calcolare la linea blu nelle statistiche, no?


Come si fa a...?

Forum sul trading, sistemi di trading automatico e test di strategia

Come posso algoritmizzare il rilevamento del feed MA?

Aleksei Stepanenko, 2021.04.07 15:10

In una matrice ordinata trova, per esempio, il 90° percentile. Qualsiasi cosa più alta di quella è particolarmente alta.

 
Mikhail Toptunov:

Salve, qualcuno sa dirmi quali modelli statistici possono essere usati per determinare valori particolarmente alti?

RMS
 

Qualcuno può suggerire una query SQL. Perché non posso scrivere 0 nella quinta colonna

   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() fallito con code=5625
 
Renat Akhtyamov:
RMS

+

 

Tutto fatto. Devi avere la query giusta e non hai bisogno di funzioni inutili


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

Ciao, potresti per favore dirmi come ottenere i valori di tick ask e bid?

Ho uno scambio di criptovalute integrato nel mio sistema.

Il problema è che nella panoramica del mercato e sul grafico stesso le quotazioni vengono visualizzate correttamente, ma quando vengono richieste attraverso il file :

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

Le citazioni smettono di riflettere correttamente.


In quali altri modi posso ottenere valori?

Chiedo agli analisti, per favore non passate! Un terzo della mia vita a sviluppare un robot, il traguardo si profila all'orizzonte, e ci sono così tanti problemi!

Sembra che l'errore salti fuori nel fine settimana. Come mai...

 
Mikhail Toptunov:

Esempio:

Array di 30 valori di prezzo MA, cerca il centro dell'array ordinato.

Otteniamo il valore 15(L0) al centro della matrice e poi otteniamo due matrici da L0 verso il basso e L0 verso l'alto e troviamo il centro di queste matrici e così via fino ad ottenere il numerofokus (sette valori per esempio)

La derivata prima di MA:(X(0)-X(n))/(n+1). Abbiamo bisogno del centro di due matrici, o possiamo fare con una semplice analisi?

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

Prima derivata di MA:(X(0)-X(n))/(n+1). Serve il centro di due matrici, o si può fare con semplici analisi?

Grazie, ma sono già andato avanti.

Ho appena iniziato a cercare i frattali dell'ennesimo numero di MA sulla barra di interesse.