Toute question d'un PROFI à un SUPER PROFI - 1. - page 21

 
Je vous ai montré comment. Le message a été corrigé.
 
Je vois, merci.
Je suppose que je peux oublier le travail à part entière avec MySQL dans MQL (sans mes dlls)... dommage....
 

Comment ne pas aimer la bibliothèque ?

Dans le cas d'un retour de pointeur, il doit être statique et dans le même processus.

 
Zhunko:

Comment ne pas aimer la bibliothèque ?

Si vous créez votre propre dll, cela n'a pas de sens de décomposer une partie du code en MQL et une autre partie en libe. Tout MySQL sera placé dans cette dll.

 
Bonjour à tous. Des conseils ? VPS Windows Web Server 2008 32 bit - non R2 (RAM 256) - fonctionnera-t-il pour MT4 ?
 
sergeev:

Si vous créez votre propre dll, cela n'a aucun sens de diviser une partie du code en MQL et une partie en lib. Tout MySQL sera intégré dans cette dll.

Bien sûr ! Vous n'êtes pas obligé d'écrire en MQL du tout, si vous le pouvez. Presque tout est dans la DLL. Je commence à tout transférer sur mon application. Je vais gérer le terminal à distance.
 

Algorithme d'énumération des fractions

I). Il est demandé de trouver un algorithme pour l'énumération des fractions, de sorte que :

A + B + C + n + ... = 100%

Chaque élément de l'ensemble {A, B, C, n} doit avoir des critères standards : contraintes latérales maximales et minimales et pas incrémental de type : start, stop, steep ;

Un exemple du problème:

Étant donné un ensemble

Y{A,B,C,n} ;

Chaque élément de cet ensemble peut varier de -100% à +100%, par pas de 10%. La somme de tous les éléments modulo doit être égale à 100% : A+B+C+n=100%.

Trouvez une matrice D(x,nombre_d'éléments_multiples_Y) qui décrit la distribution de toutes les fractions possibles entre A, B, C, n, par ex :

A B C

100 0 0

90 10 0

90 0 10

80 10 10

80 0 20

...

Exemples de constatations erronées :

A B C

-50 30 120 - l'élément C est supérieur à la limite de 100%.

35 30 35 - l'échelon n'est pas égal à 10 %.

70 30 10 - somme non égale à 100

-50 60 90 - la somme de tous les éléments modulo n'est pas égale à 100% (50+60+90=200)

II*). Trouver la solution de la recherche de fractions pour l'ensemble N avec l'optimiseur MT5/MT4 de sorte que les contraintes de chaque élément de l'ensemble puissent être définies avec les contraintes standard Start, Step, Stop.

 


En guise d'introduction, voici un algorithme qui met en œuvre un cas particulier du problème :

//+------------------------------------------------------------------+
//|                                                  Optimizator.mq5 |
//|                        Copyright 2011, MetaQuotes Software Corp. |
//|                                              https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2011, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   int A, B, C;
   int handle = FileOpen("test.csv",FILE_WRITE,'\t');
   for(A=0; A<=100;A+=10)
   {
      for(B=0;B<=100-A;B+=10){
         C=100-(A+B);
         FileWrite(handle,A,B,C);      
      }
   }
   FileClose(handle);
  }
//+------------------------------------------------------------------+

Comme vous pouvez le constater, chaque élément de l'ensemble, sauf le dernier, nécessite une boucle for supplémentaire. Ce n'est pas une bonne solution, car lorsque vous modifiez le nombre d'éléments de l'ensemble, vous devez insérer ou supprimer des boucles supplémentaires.

 
C-4:


En guise d'introduction, voici un algorithme qui met en œuvre un cas particulier du problème :

Comme vous pouvez le constater, chaque élément de l'ensemble, à l'exception du dernier, nécessite une boucle for supplémentaire. Ce n'est pas une bonne solution, car lorsque vous modifiez le nombre d'éléments de l'ensemble, vous devez insérer ou supprimer des boucles supplémentaires.


Faites une seule boucle while pour l'un de A ou B ou C.

En son sein, analyser s'il y a des lacunes

 
sergeev:

faire une seule boucle while sur l'un de A ou B ou C.

En son sein, analyser si des lacunes sont à atteindre


Le fait est que B et C seront toujours combinés l'un avec l'autre, et vous avez besoin d'une nouvelle boucle pour cela. Ce problème peut peut-être être résolu de manière récursive, mais il existe peut-être des algorithmes plus simples.
Raison: