Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
le code est inséré, le fichier n'est pas joint
Des corrections ont été apportées.
Veuillez réessayer.
Ça se bloque à cause de la boucle infinie.
Vous avez le seul moyen de sortir de la boucle - par la rupture. Mais la rupture que vous avez se produit lorsqu'une certaine condition est remplie. L'un des composants
Vous obtenez le handle de l'indicateur dans la fonction à chaque fois et le copiez sans vérifier si les données sont prêtes.
Suggestion.
1. Transférer la variable de la poignée au niveau global.
2. Recevez le handle de l'indicateur à OnInit (vous ne modifiez pas les paramètres du parabolique de toute façon).
3. Avant de copier les données du tampon de l'indicateur, vérifiez leur disponibilité (calculabilité) - la fonction BarsCalculated (Parabolic) vous aidera.
4) Organiser la sortie du cycle, si vous ne faites pas le point 3, il faudra appeler la fonction BarsCalculated(Parabolic). 3 n'est pas rempli.
2. il ne change pas dans l'exemple de test, en fait cette fonction est utilisée tout le temps avec des paramètres différents, c'est pourquoi j'obtiens le handle pas dans OnInit
3. je vais le vérifier, mais je ne comprends pas vraiment à quoi il me sert, la condition est telle qu'il ne peut pas échouer, une série de points paraboliques est la barre la plus proche, ils devraient certainement être téléchargés (et en général, je comprends que l'historique est téléchargé au testeur un an avant la date de début spécifiée du test). Cela fonctionne vraiment bien. Cela fonctionne dans MQL4 à la fois en réel et dans le testeur (bien qu'il y ait une fonction parabolique intégrée, et non une fonction séparée).
Des corrections ont été apportées.
Essayez encore.
2. il ne change pas dans l'exemple de test, et en fait cette fonction est utilisée tout le temps avec des paramètres différents, donc j'obtiens le handle pas dans OnInit
3. ok, je vais faire une vérification, je ne comprends pas vraiment le point, la condition est telle qu'elle ne peut pas échouer, une série de points paraboliques est les barres les plus proches, ils devraient certainement être téléchargés (et en général, je comprends que l'historique est téléchargé au testeur un an avant la date de début du test spécifié). Cela fonctionne vraiment bien. Cela fonctionne dans MQL4 à la fois en réel et dans le testeur (bien qu'il n'y ait pas de fonction parabolique séparée, mais elle est intégrée...).
3. Il a déjà été discuté et décrit dans la référence(https://www.mql5.com/ru/docs/series/barscalculated), pourquoi il est nécessaire.
Note
Cette fonction est utile lorsque vous souhaitez obtenir les données d'un indicateur juste après sa création (pour obtenir un handle d'indicateur).
C'est votre affaire.
L'indicateur est calculé sur la base des données de la barre. Les barres sont là, mais les données calculées peuvent être absentes.
Cela signifie que cette position est le résultat de plusieurs transactions sur cet instrument. En conséquence, vous voyez le prix moyen pondéré de la position.
3. La raison pour laquelle il est nécessaire a déjà été discutée à plusieurs reprises et est décrite dans l'aide(https://www.mql5.com/ru/docs/series/barscalculated).
C'est votre affaire.
L'indicateur est calculé sur des données en barres. Les barres sont là, mais les données calculées peuvent ne pas l'être.
Oui, je l'ai avec BarsCalculated, merci.
Mais de toute façon, il est logiquement faux que cela fonctionne et ne fonctionne pas dans le testeur. Vous devez avoir toutes les vérifications déjà construites dans le testeur, et si la demande va à certaines données et qu'elles ne sont pas là, alors l'erreur apparaîtra. Mais le testeur a des barres, mais pour une raison quelconque, il ne peut pas calculer les données et reste silencieux....
Je pensais quele prix moyen pondéré n'était qu'un indicateur technique... Je n'obtiens pas toujours 0 lorsque j'exécute dans le testeur de stratégie... Il arrive que quelques centimes se produisent.
Moyenne pondérée par le volume. Par exemple, il y a eu trois transactions sur l'EURUSD :
En conséquence, nous avons une position sur EURUSD avec un volume de 0,6 lots, mais à quel prix ?
Moyenne pondérée par le volume. Par exemple, il y a eu trois transactions sur l'EURUSD :
Nous nous retrouvons avec une position EURUSD de 0,6 lot, mais à quel prix ?
Ne serait-il pas plus simple d'arrondir le prix au niveau de précision de la monnaie au niveau du serveur ? Après tout, tout EA devrait souffrir de l'ajustement de la précision et du prix par point...
Pourquoi le conseiller expert devrait-il souffrir ? Ce prix moyen pondéré est nécessaire pour calculer la clôture des positions. Il n'est d'aucune utilité pour le conseiller expert. Il devra clôturer la position à un prix normal avec le nombre de caractères nécessaires pour ce symbole.
Dans certains cas, vous devez avoir une valeur de prix normalisée, indépendamment de la façon dont le prix est reçu.
Il est plus facile de faire une normalisation côté serveur tant que le serveur recalcule le prix d'ouverture de toute façon (du moins à mon avis).
Au fait, puisque nous parlons de prix moyen pondéré et de plateforme de compensation.
D'après ce que je comprends, il existe deux modèles d'ajustement (fermeture partielle) d'une position perdante qui a été fermée précédemment :
1. Ne réparez pas la perte sur la fermeture partielle, mais recalculez simplement le prix d'ouverture (si je ne me trompe pas, c'est ce que fait FC) ;
2. laisser le prix d'ouverture inchangé, en fixant la perte.
Il en va de même pour le renversement des positions perdantes
Je veux connaître l'opinion des développeurs sur la méthode qui sera éventuellement standardisée dans MT5, si possible pourquoi...