Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 646

 
valeryk:


Non, je viens de vérifier. C'est vrai, la minuterie est désactivée quand l'internet est éteint.
Là !) Je pensais être le seul à avoir des pépins.) Comment résoudriez-vous ce problème ?
 
Heureusement que je n'utilise pas d'innovations que les plus avertis n'ont pas encore trouvées ! :)
 
Megan:
Là !) Je pensais être le seul à avoir des pépins.) Comment résoudriez-vous ce problème ?



Si les développeurs n'ont pas voulu que ce comportement du timer soit "infaillible", alors le bug est sans équivoque. Après tout, la minuterie commence dans l'inite, et à partir de là, elle devrait fonctionner de manière autonome. Vous devez faire une demande auprès de Servicedesk.
 
le modérateur semble l'avoir lu. barabashkakvn- peut-il confirmer qu'il y a un problème et doit-il écrire à servicedesk ?
 
Megan:
EventSetTimer(1) ; stands. Et quand il y a une connexion, tout fonctionne, bizarrement. Il n'y a pas de déchargement à OnInit() . Je ne sais pas pourquoi c'est comme ça ...

MetaTrader 4 build 660. En réalité, s'il n'y a pas de connexion au moment du démarrage du terminal, OnInit() n'a pas lieu.

Remède : rattachez l'expert ou changez deux fois de cadre temporel.


 
barabashkakvn:

MetaTrader 4 build 660. En effet, s'il n'y a pas de connexion au moment du démarrage du terminal, OnInit() n'a pas lieu.

Ce problème peut être résolu par une demi-mesure : rattacher le conseiller expert ou changer deux fois de période.


Il y a un problème avec cela) Mon EA est conçu pour fonctionner hors ligne(
 
Megan:
J'ai un EA conçu pour fonctionner de manière autonome.


Vous devez écrire une demande à Servicedesk.
 

Bonjour. Mes amis, s'il vous plaît, aidez un débutant. Je n'arrive pas à trouver comment charger les citations dans le terminal, pré-éditées dans un fichier .xls. J'ai lutté avec ça toute la journée.

Puis-je télécharger les devis pour le terminal ?

 

Rebonjour. Je me suis posé la question, j'y ai répondu moi-même : lorsque j'ai modifié le nom, j'ai choisi n'importe quel nom, sauf le nom original. Corrigé en - RTSI1440.csv et téléchargé.

Merci.

 
Top2n:

Bonne journée !

L'objectif est d'écrire un algorithme pour calculer la moyenne des transactions.

J'ai décidé de l'implémenter en remplissant les valeurs de prix des positions ouvertes dans un tableau. Par conséquent, il remplit le tableau sans changer. J'ai raté quelque chose quelque part.

Mise à zéro du tableau avant le début :

  if (ArrayResize(array, 0) != 0) {
    return false;
  }

À propos, si OrderSelect() renvoie une erreur dans au moins une itération de la boucle, les résultats ne sont pas fiables. En d'autres termes, nous ne devrions pas essayer de traiter les commandes restantes si certaines d'entre elles ont échoué. Il serait plus raisonnable de renvoyer l'erreur immédiatement à la place. Par exemple, un code de niveau supérieur pourrait réagir à une erreur de la manière suivante : essayer de répéter quelques fois de plus avec ce tick ou annuler les actions sur ce tick, les reporter et réessayer avec le tick suivant.

Il est plus logique d'unir Usred() et Zapis(), et la condition de filtrage devrait être combinée de la manière suivante : "if (OrderSymbol() == Symbol() && OrderType() == type)". De toute façon, il n'y a pas besoin d'un OrderSelect() répété dans Zapis().

Pour calculer le prix moyen d'une position pour des ordres individuels, nous ne devons pas tout garder dans un tableau. Nous pouvons le calculer à la volée.

S1 = lot de commande 1 * prix d'ouverture de la commande 1 + lot de commande 2 * prix d'ouverture de la commande 2 + ... orderN_lots * orderN_openprice.

S2 = lots de la commande 1 + lots de la commande 2 + ... + orderN_lots.

Le prix de la position que nous recherchons = S1 / S2.

Si l'on crée deux variables, pour S1 et pour S2, qu'on les met à zéro, et que dans la boucle, à chaque fois, on ajoute une valeur correspondante à chacune des variables, alors après la boucle, il suffit de diviser S1 par S2, en ayant préalablement vérifié que S2 n'est pas 0 (dans ce cas - erreur, c'est-à-dire que le résultat n'est PAS calculé, il n'existe pas). Peut-être que la valeur résultante doit aussi être normalisée par NormalizeDouble() - cela dépend de l'algorithme si la normalisation est nécessaire, et des conventions du programme, quelle fonction, appelée ou appelante, normalise.

Dans ce cas, vous n'aurez même pas besoin d'un tableau.

Si vous avez besoin de calculs autres que le prix total de la position, vous pouvez "renvoyer" les valeurs S1 et S2 à la fonction appelée, en passant les variables elles-mêmes par référence, et renvoyer le signe d'erreur de la fonction. Autrement dit, le prototype de la fonction appelée pourrait ressembler à ceci : "bool fun(double &S1, double &S2) ;". La fonction appelante démarre les variables, les passe à fun() et, si fun() renvoie vrai, utilise les valeurs des variables passées (qui peuvent elles-mêmes avoir des noms différents) comme S1 et S2.