Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 966

 
Alexey Viktorov:

Dans ce cas, à quoi servent ces fonctions auto-écrites ?

J'ai obtenu les prix maximum et minimum d'hier et à partir de ces valeurs pour déterminer le milieu.

Je ne sais pas... Je ne pensais pas... Je vais le réécrire maintenant... C'est plus facile comme ça... Merci !

 
Igor Makanu:

Gestion de l'argent

comme pour les entrées aléatoires, les ordres en attente suivent le prix, dans l'optimiseur la sélection est effectuée selon la formule y=kx+b , plus tard j'utiliserai le polynôme et l'exposant, mais l'optimiseur ne cherche que les facteurs et les valeurs d'ordre, en général pour ne pas mettre un brouillard sur elle - c'est une grille, bien, presque, mais les buts n'ont pas encore été atteints

Quand je regarde les marchés, je m'en occupe (bien que pas très activement) depuis que je me suis inscrit au Forum, la couche de programmation en MQL a pris beaucoup de temps, mais en général l'idée a été développée au cours de l'année d'écriture connexe d'Expert Advisors basés sur les demandes des personnes actives ;)))

Pas de problème, allez-y.

Je vois, je le comprends très bien, parce que je suis déjà passé par là.
Il s'agit tout de même de trouver certains paramètres (dans ce cas, au moins les coefficients k et b dans le linéaire y=kx+b ou a,k,x dans l'exponentiel y=ax²+kx+b). Ces coefficients devraient de préférence changer àchaque tick, c'est pourquoi j'ai dit que l'optimisation devrait être dans le programme lui-même et avoir lieu automatiquement et constamment, mais pas dans un testeur externe en mode manuel de temps en temps (une fois par jour ou semaine ou mois...). Vous devriez également contrôler la période, dans laquelle la régression linéaire ou parabolique (exponentielle) observée se produit. Cette période doit également changer à chaque tique. Bien que trouver une ligne ou une parabole revienne à trouver la période optimale de la régression linéaire ou parabolique à l'heure actuelle.
Mais un testeur externe peut toujours trouver de tels paramètres statiques constants, qui seront universellement garantis pour s'adapter uniquement à cet ensemble de données historiques, sur lequel le test est exécuté, et sur celui-ci, la période historique passée, bien sûr, un profit stable et de belles lignes de profit seront observés, mais nous avons besoin du présent et du futur.

Il s'agit tout de même de contrôler la largeur du canal, la longueur du canal, la rupture du canal, le retour à la ligne de rupture d'un canal linéaire ou d'un degré supérieur. Il s'agit là d'un problème de reconnaissance des modèles, qui ne doit être résolu qu'en interne, et non en externe.

 
Nikolai Semko:

Je vois, très bien compris, car je suis déjà passé par là.

Moi aussi, et plus d'une fois.

Nikolai Semko:

Mais le testeur externe sera toujours en mesure de sélectionner de tels paramètres statiques constants, qui seront universellement garantis pour s'adapter uniquement à cet ensemble de données historiques, sur lequel le test fonctionne, et sur cette période historique déjà passée, bien sûr, un profit stable et de belles lignes de profit seront dessinés, mais nous avons besoin du présent et du futur.

C'est là le problème - non, tout est identique au test du livre et au forward, les graphiques sont différents, mais la tendance est là, d'après ce que j'ai compris mon EA ne frappe pas le prix futur lui-même, mais les trajectoires des prix futurs.

 
Les gars, j'ai une question. Regardez, il existe un préfixe d'incrémentation ++q et un postfixe q++, en utilisant leurs caractéristiques vous pouvez obtenir des effets assez différents et intéressants, par exemple la priorité de cet incrément q++ effectue l'addition en retard/en arrière c'est-à-dire après et non immédiatement, comment cela peut-il être fait avec des nombres premiers et est-ce possible, par exemple je veux une telle addition q+5, d'abord je dois utiliser q et ensuite ajouter 5 ?
 
Seric29:
Les gars, j'ai une question. Regardez, il y a un préfixe d'incrémentation ++q et un postfixe q++, en utilisant leurs caractéristiques nous pouvons obtenir des effets assez différents et intéressants, par exemple la priorité de cet incrément q++ effectue l'addition en retard/en arrière c'est-à-dire après et non immédiatement, comment cela peut-il être fait avec des nombres premiers et est-ce possible, par exemple je veux une telle addition q+5, d'abord je dois utiliser q et ensuite ajouter 5 ?

Si cela doit être utilisé comme un compteur de boucle, alors il faut simplement

for(int q = 0; q <= 25; q+=5)
 
Alexey Viktorov:

Si tu l'utilises comme un compteur de boucle, c'est simple.

Et si vous passez une expression q+5 dans une fonction et que vous exécutez d'abord q puis ajoutez 5, vous ne pouvez pas le faire, n'est-ce pas ?

int q
void Funk(int pr){}
вызвов Funk(...q+5...) сначала используем q а после прибавляем 5
как здесь например Funk(q++) сначала используем q а после прибавляем 1
 
Les commentaires non pertinents pour ce sujet ont été déplacés vers "OOP, templates et macros dans mql5, trucs et astuces du métier ".
 
Seric29:

Et si vous passez une expression q+5 dans une fonction et que vous exécutez d'abord q puis ajoutez 5, vous ne pouvez pas le faire, n'est-ce pas ?

Est-ce que 5 est une constante ou une variable ? Si c'est une constante, pas de problème : passez q dans la fonction et ajoutez 5 après l'avoir utilisé. Si c'est une variable, passez deux variables et ajoutez la deuxième variable après avoir utilisé q. Une autre option consiste à déclarer les variables de manière globale. Alors vous n'avez pas besoin de passer quoi que ce soit.
 

Bonjour, je veux fermer des positions dirigées différemment lorsque le profit =0. Différents nombres de positions d'achat et de vente, différentes tailles de lots.

Quel est le problème avec la fonction de recherche du prix moyen, c'est-à-dire le point de profit zéro ?

 double AveroProf(string sy="", int op=-1, int mn1=-1) 
   {
   int i=0;
   int kol=0;
   double lots=0;
   double sum=0;
   double sum1=0;
   double zeroprice=0;
   double tick_value;
   for (i=0; i<OrdersTotal(); i++)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()!=Symbol()) continue;
      if (OrderMagicNumber()!=mn1) continue;
      if (OrderType()==OP_BUY)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ; 
      }
      if (OrderType()==OP_SELL)
      {
       lots=lots+OrderLots();
       sum=sum+OrderLots()*OrderOpenPrice();
       sum1=sum1+OrderProfit()+OrderSwap()+OrderCommission()  ;
       kol=kol+1;
      }
   
   }
   if (lots>0)
   { 
   zeroprice=sum/lots;
   zeroprice=NormalizeDouble(zeroprice,_Digits);
   zeroprice = (MathRound(zeroprice*MathPow(10,Digits)))/MathPow(10,Digits);
    }   
   return( zeroprice);
   }
 
S'il vous plaît, quelqu'un peut-il m'aider avec ce problème :https://www.mql5.com/ru/forum/322133
Как использовать WinApi для преобразования времени в StrategyTester MT5?
Как использовать WinApi для преобразования времени в StrategyTester MT5?
  • 2019.09.12
  • www.mql5.com
Я успешно создал CustomSymbol в MT5, и я получаю эту таблицу в приложении...