Comment algorithmez-vous la détection des clusters d'alimentation MA ? - page 18

 

Ce sont les sommets locaux. Construisez un zig-zag autour d'eux, disons de haut en bas. Réfléchissez à un critère que vous utiliserez pour les construire. Par exemple, la taille de la différence entre les valeurs des barres horizontalement, ou l'excès de distance verticalement (nombre de points), ou une combinaison des deux.

 
Mikhail Toptunov:

Ecoutez, il y a une méthode pour calculer la ligne bleue dans les statistiques, n'est-ce pas ?


Comment faites-vous... ?

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Comment puis-je algorithmer la détection de l'alimentation MA ?

Aleksei Stepanenko, 2021.04.07 15:10

Dans un tableau trié, trouvez, par exemple, le 90e percentile. Tout ce qui est supérieur à cela est particulièrement élevé.

 
Mikhail Toptunov:

Bonjour, quelqu'un peut-il me dire quels modèles statistiques peuvent être utilisés pour déterminer des valeurs particulièrement élevées ?

RMS
 

Quelqu'un peut-il suggérer une requête SQL. Pourquoi je ne peux pas écrire 0 dans la cinquième colonne ?

   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() a échoué avec le code=5625
 
Renat Akhtyamov:
RMS

+

 

Tout est fait. La requête doit être correcte et vous n'avez pas besoin de fonctions inutiles.


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

Bonjour, pourriez-vous me dire comment obtenir les valeurs des tick ask et bid ?

J'ai un échange de crypto-monnaies intégré dans mon système.

Le problème est que dans la vue d'ensemble du marché et sur le graphique lui-même, les cotations s'affichent correctement, mais lorsqu'elles sont demandées par le biais de la fonction :

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

Les citations ne se reflètent plus correctement. déprime générale !!!!!!!!!!


Par quels autres moyens puis-je obtenir des valeurs ?

Je demande aux analystes de ne pas passer à côté ! Un tiers de ma vie à développer un robot, la ligne d'arrivée se profile à l'horizon, et il y a tellement de problèmes !

Il semble que l'erreur apparaisse pendant le week-end. Comment se fait-il...

 
Mikhail Toptunov:

Exemple :

Tableau de 30 valeurs de prix MA, recherchez le milieu du tableau ordonné.

Nous obtenons la valeur 15(L0) au milieu du tableau et ensuite nous obtenons deux tableaux de L0 vers le bas et L0 vers le haut et nous trouvons le milieu de ces tableaux et ainsi de suite jusqu'à ce que nous obtenions le nombre defokus (sept valeurs par exemple).

La dérivée première de MA :(X(0)-X(n))/(n+1). A-t-on besoin du milieu de deux tableaux, ou peut-on se contenter d'une simple analyse ?

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

Dérivée première de MA :(X(0)-X(n))/(n+1). Besoin du milieu de deux tableaux, ou peut-on faire avec une simple analyse ?

Merci, mais j'ai déjà tourné la page.

Je viens de commencer à chercher les fractales du nième nombre de MAs sur la barre qui m'intéresse.