// Sur le thème du calcul du NOD - deuxième conférence. Mais je suggère de voir/écouter les deux. Des conférences sympas, un homme intelligent, tout simplement agréable. Oui, et utile.
Cet algorithme s'exécutera dans le pire des cas en (n-1) ! itérations, où n est la profondeur binaire du divisible. En résumé, par rapport à l'algorithme d'addition séquentielle, cet algorithme produit un gain allant jusqu'à 9 fois pour les nombres de 8 bits, et jusqu'à 546 fois pour les nombres de 16 bits.
long gcd(long m, long n)
{
if (m<0) m=-m;
if (n<0) n=-n;
if (m==0) return n;
if (n==0) return m;
int d = 0;
while ((m & 1)==0 && (n & 1)==0) { m >>= 1; n >>= 1; ++d; }
while ((m & 1)==0) m >>= 1;
while ((n & 1)==0) n >>= 1;
while (m!=n) // while (true) // старый вариант if (m < n)
{
n -= m;
do n >>= 1; while ((n & 1)==0);
}
else// if (n < m) это теперь без надобности
{
m -= n;
do m >>= 1; while ((m & 1)==0);
}
// else break; // старый вариантreturn (m <<= d);
}
il semble fonctionner correctement. veuillez tester tous les trous.
J'ai une plus grande différence. La vôtre est 3 à 4 fois plus rapide, mais n'oubliez pas qu'en C++, la différence est réduite par un facteur de 2 à 2,5, de sorte que vous êtes honnêtement 1,5 fois plus rapide.
J'ai effectué toutes les opérations sous deux formes - avec et sans normalisation. J'ai obtenu une structure flexible.
Si vous soupçonnez la possibilité d'un débordement - vous utilisez une version avec normalisation, sans crainte - vous gagnez du temps (la normalisation peut être effectuée plus tard, lorsque la mousse s'est accumulée).
Il existe un test simple dans les archives, mais il est souhaitable de faire des tests plus poussés.
merci de l'admettre au moins - vous supprimez les émoticônes, mais qui supprime des messages entiers ?
en soi, académique, Je pense que c'est génial que vous ayez une "calculatrice", mais je voudrais savoir si vous pouvez l'optimiser automatiquement au cours du trading ?
Oui, c'est juste un programme, si vous l'exécutez, il fonctionnera et vous donnera les paramètres optimaux.
J'ai publié spécialement pour ce fil de discussion les derniers résultats du testeur MT5 (tout le monde pourra répéter les tests après la prochaine mise à jour).
J'ai publié spécialement pour ce fil de discussion les derniers résultats du testeur MT5 (tout le monde pourra répéter les tests après la prochaine mise à jour).
7 symboles, tous les ticks, depuis 2000, deux paramètres ( variantes 200 * 200 )- 40000 passages, avec une centaine d'ordres par jour pour chaque symbole.
Combien de temps cela prend-il ?
prendre 10 ans - 356 * 10 * 100 * 7 = 25 000 000 de transactions
nous prenons environ 10 ticks par minute
et 10 ans - 365 * 10 * 1440 * 10 = 52 000 000 ticks sur un symbole. Et si nous sommes honnêtes, ils cochent sur tous les symboles. Donc, nous devrions honnêtement multiplier par 7. Et ce n'est pas 10 tics par minute. Et parfois, c'est 300.
Si vous n'avez pas de compte, veuillez vous inscrire
Autorisez l'utilisation de cookies pour vous connecter au site Web MQL5.com.
Veuillez activer les paramètres nécessaires dans votre navigateur, sinon vous ne pourrez pas vous connecter.
Vous êtes connecté. L'authentification à deux facteurs a été désactivée. Configurez-la à nouveau et scannez un nouveau code QR, ou continuez avec l'authentification à deux facteurs désactivée.
Allez-vous diviser un nombre (pas nécessairement un multiple de 2) par un autre (pas nécessairement un multiple de 2) par un décalage de bits ?
Ok, je vais vous donner ce que j'ai, et ensuite vous pourrez décider par vous-même si vous en avez besoin ou pas.
pgcd(2n + 1, 2(n + k) + 1) = pgcd(2(n + k) + 1, 2n + 1) = pgcd(2n + 1, k)
--
Deux conférences du créateur de la STL, Alexander Stepanov, sur Yandex
// Sur le thème du calcul du NOD - deuxième conférence. Mais je suggère de voir/écouter les deux. Des conférences sympas, un homme intelligent, tout simplement agréable. Oui, et utile.Si c'est le cas, allez-y. Si avec la division modulo, ne le faites pas.
Diviser par des décalages successifs
des chiffres intéressants à la fin de l'article :
Cet algorithme s'exécutera dans le pire des cas en (n-1) ! itérations, où n est la profondeur binaire du divisible. En résumé, par rapport à l'algorithme d'addition séquentielle, cet algorithme produit un gain allant jusqu'à 9 fois pour les nombres de 8 bits, et jusqu'à 546 fois pour les nombres de 16 bits.
Alors voilà ce que j'ai :
il semble fonctionner correctement. veuillez tester tous les trous.
// Je l'ai modifié, c'est plus joli comme ça.C'est bizarre, ce n'est pas très rapide.
2011.04.03 22:56:59 gcdSpeedTest (EURUSD,M20) Temps commun GreatestCommonDivisor(random(),random()) = 7656ms ; // 10000000 appels
2011.04.03 22:56:51 gcdSpeedTest (EURUSD,M20) Temps commun gcd(random(),random()) = 5234ms ; // 10000000 appels
C'est bizarre, ce n'est pas beaucoup plus rapide.
2011.04.03 22:56:59 gcdSpeedTest (EURUSD,M20) Temps commun GreatestCommonDivisor(random(),random()) = 7656ms ; // 10000000 appels
2011.04.03 22:56:51 gcdSpeedTest (EURUSD,M20) Temps commun gcd(random(),random()) = 5234ms ; // 10000000 appels
J'ai une plus grande différence. La vôtre est 3 à 4 fois plus rapide, mais n'oubliez pas qu'en C++, la différence est réduite par un facteur de 2 à 2,5, de sorte que vous êtes honnêtement 1,5 fois plus rapide.
J'ai une plus grande différence. Le vôtre est 3-4 fois plus rapide,
mais n'oubliez pas qu'en C++, la différence est réduite de 2 à 2,5 fois, de sorte que vous êtes honnêtement en avance de 1,5 fois.
Et nous verrons.
Jusqu'à présent, nous avons une version préliminaire dans mql5. Test amical, recherche de bogues.
J'en ai fait une structure.
J'ai effectué toutes les opérations sous deux formes - avec et sans normalisation. J'ai obtenu une structure flexible.
Si vous soupçonnez la possibilité d'un débordement - vous utilisez une version avec normalisation, sans crainte - vous gagnez du temps (la normalisation peut être effectuée plus tard, lorsque la mousse s'est accumulée).
Il existe un test simple dans les archives, mais il est souhaitable de faire des tests plus poussés.
merci de l'admettre au moins - vous supprimez les émoticônes, mais qui supprime des messages entiers ?
en soi, académique, Je pense que c'est génial que vous ayez une "calculatrice", mais je voudrais savoir si vous pouvez l'optimiser automatiquement au cours du trading ?
J'ai publié spécialement pour ce fil de discussion les derniers résultats du testeur MT5 (tout le monde pourra répéter les tests après la prochaine mise à jour).
C'est ce que peut faire le testeur MetaTrader 5, et encore plus avec une infrastructure complète (rapports, graphiques, résultats, visualisation).
J'ai publié spécialement pour ce fil de discussion les derniers résultats du testeur MT5 (tout le monde pourra répéter les tests après la prochaine mise à jour).
C'est ce que peut faire le testeur MetaTrader 5, et même avec une mise en page complète (rapports, graphiques, résultats, visualisation).
7 symboles, tous les ticks, depuis 2000, deux paramètres ( variantes 200 * 200 )- 40000 passages, avec une centaine d'ordres par jour pour chaque symbole.
Combien de temps cela prend-il ?
prendre 10 ans - 356 * 10 * 100 * 7 = 25 000 000 de transactions
nous prenons environ 10 ticks par minute
et 10 ans - 365 * 10 * 1440 * 10 = 52 000 000 ticks sur un symbole. Et si nous sommes honnêtes, ils cochent sur tous les symboles. Donc, nous devrions honnêtement multiplier par 7. Et ce n'est pas 10 tics par minute. Et parfois, c'est 300.
Combien de temps cela prend-il ?