[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 522

 

Rebonjour. Merci pour la réponse précédente - très utile. Aidez-nous à nouveau. J'ai la fonction dont j'ai besoin d'un conseiller expert qui compte les profits (pertes) du compte pour aujourd'hui (si f0_5(0)), hier (si f0_5(1)), etc :

double f0_5(int ai_0) {
   double ld_ret_4 = 0;
   for (int pos_12 = 0; pos_12 < OrdersHistoryTotal(); pos_12++) {
      if (!(OrderSelect(pos_12, SELECT_BY_POS, MODE_HISTORY))) break;
               if (OrderCloseTime() >= iTime(OrderSymbol(), PERIOD_D1, ai_0) && OrderCloseTime() < iTime(OrderSymbol(), PERIOD_D1, ai_0) + 86400) ld_ret_4 = ld_ret_4 + OrderProfit() + OrderCommission() + OrderSwap();
   }
   return (ld_ret_4);
}

Le résultat devrait être une fraction décimale (en principe), mais la fonction renvoie un nombre entier pour une raison quelconque. En général, veuillez m'aider à modifier la fonction pour qu'elle soit une fraction avec deux décimales.

Je me suis peut-être trompé ici : j'ai vérifié l'utilisation de Print(), mais la fonction compte normalement ? En général, aidez-moi à comprendre.

 
MaxZ:

Voici le célèbre idnikator.

Tu peux avoir une photo comme celle-là ? :))))))



C'est ici.

 
Il est dit que :
ArrayCopy(array2,array1,0,Bars*6-60,60);
// теперь array2 содержит 10 последних баров из истории (имеется в виду, что последний бар - это текущий бар, бар с индексом [0])

Pourquoi le tableau 2 contiendrait-il les 10 dernières mesures ?
Parce que Bars*6 - 60 ne retournera pas la valeur 10. Je ne remarque aucune logique.
Par exemple, il y a 1000 barres dans l'historique. Alors Barres*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. Où sont les 10 dernières mesures ?
 
hoz:
Il est dit que :

Pourquoi le tableau 2 contiendrait-il les 10 dernières mesures ?
Parce que Bars*6 - 60 ne retournera pas la valeur 10. Je ne remarque aucune logique.
Par exemple, il y a 1000 barres dans l'historique. Alors Barres*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. Où sont les 10 dernières mesures ?

Vous me surprenez encore ! Les soi-disant 10 dernières, de 0 à la 10ème barre que nous avons sur le graphique en contact avec le prix ! Oubliez les trentièmes et cinq millièmes barres de l'histoire ! Nous les avons déjà parcourus, et nous n'en avons besoin que pour le testeur. Et nous avons besoin des plus récents, en partant de zéro, et bien sûr, des nouveaux dans le futur - c'est là que nous allons ! ;))
 
borilunad:

Vous me surprenez encore ! Les soi-disant 10 dernières, de 0 à la 10ème barre que nous avons sur le graphique en contact avec le prix ! Oubliez les trentièmes et cinq millièmes barres de l'histoire ! Nous les avons déjà parcourus, et nous n'en avons besoin que pour le testeur. Et nous avons besoin des plus récentes, en partant de zéro, et bien sûr, de nouvelles dans le futur - c'est là que nous allons ! ;))

J'ai déjà compris ce dernier point, c'est-à-dire qu'il est plus proche du prix actuel. Mais ce morceau de codeBars*6 - 60, je ne le comprends pas. Que va-t-il rapporter ? Je veux comprendre comment on peut le calculer logiquement. Puis-je vous demander d'expliquer ? Peut-être que c'est facile pour quelqu'un d'autre, mais je ne suis pas un programmeur de formation, et j'ai donc du mal à comprendre ce flux d'informations. Je suis en train de lire le tutoriel, et je pose progressivement les questions que je rencontre. J'espère vivement que les questions seront bientôt plus pertinentes qu'elles ne le sont actuellement.
 
hoz:
Il est dit que :
Pourquoi le tableau 2 contiendrait-il les 10 dernières mesures ?
Parce que Bars*6 - 60 ne retournera pas la valeur 10. Je ne remarque aucune logique.
Par exemple, il y a 1000 barres dans l'historique. Alors Barres*6 - 60 = 1000*6 - 60 = 6000 - 60 = 5940. Où sont les 10 dernières mesures ?
5940 -Index initial du tableau original pour copier les 10 dernières barres (bar - 6 indices).
 

Roll:
5940 -Indice de départ du tableau initial pour copier les 10 dernières mesures (bar - 6 indices).

Chers experts, n'y aurait-il pas une erreur dans le manuel ?

Voici mon raisonnement :

Au début du code, on appelle la fonctionint ArrayCopyRates qui copie les données des barres du graphique actuel dans un tableau bidimensionnel de type RateInfo[][6] et renvoie le nombre de barres copiées ou -1 en cas d'échec selon l'exemple de cette fonction :

double array1[][6];
ArrayCopyRates(array1,"EURUSD", PERIOD_H1);
Print("Текущий бар ",TimeToStr(array1[0][0]),"цена открытия ", array1[0][1]);

la barrecourante est la barre avec l'index 0-0 , donc, en retournant au code original, nous copions l'élément avec l'index 0-0 (la barre courante) du tableau1 , vers array2 avec l'index 0-0, nous obtenons les 10 dernières barres (où la dernière barre est la barre actuelle, celle avec l'index [0]), ce qui est contraire à ce que nous avons écrit dans le tutoriel... Ainsi, en copiant l'élément avec l'index Bars*6-60,60 du tableau 1 dans le tableau 2 avec l'index 0, nous obtenons des informations sur les barres de l'histoire.

 

Bonjour.

J'ai un indicateur personnalisé.

Je suis en train d'écrire un EA... et j'ai une question... comment accéder à mon indicateur ? Plus précisément, prenez les données de la barre spécifiée (dans mon cas, je dois prendre la 2ème barre). J'ai windowsPriceMax, mais d'après ce que j'ai compris, il n'affiche que la dernière valeur du graphique de la sous-fenêtre et ce n'est pas clair, si par exemple j'ai 3 lignes sur l'indicateur, que va-t-il afficher ?

 
Tragedy:

Bonjour.

J'ai un indicateur personnalisé.

Je suis en train d'écrire un EA... et j'ai une question... comment accéder à mon indicateur ? Plus précisément, prenez les données de la barre spécifiée (dans mon cas, je dois prendre la 2ème barre). J'ai reçu windowsPriceMax, mais d'après ce que je comprends, il ne sort que la dernière valeur du graphique et je ne comprends pas si j'ai 3 lignes sur l'indicateur, que va-t-il sortir ?



double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

Calcul de l'indicateur personnalisé spécifié. L'indicateur personnalisé doit être compilé (un fichier avec l'extension EX4) et situé dans le répertoire terminal\experts\indicators.
Paramètres :

symbol - nom du symbole de l'instrument, sur les données duquel l'indicateur sera calculé. NULL signifie le symbole actuel.
timeframe - Période. Peut être l'une des périodes du graphique. 0 signifie la période du graphique actuel.
name - Nom de l'indicateur personnalisé.
... - Liste des paramètres (si nécessaire). Les paramètres transmis doivent correspondre à l'ordre de déclaration et au type des variables externes (extern) de l'indicateur personnalisé.
mode - Index de la ligne de l'indicateur. Peut être compris entre 0 et 7 et doit correspondre à l'index, utilisé par l'une des fonctions SetIndexBuffer.
shift - Index de la valeur reçue du tampon de l'indicateur (décalage par rapport à la barre actuelle du nombre de périodes en arrière spécifié).

 

Merci. Ça a aidé. Je pensais que seuls les indicateurs de l'iMac*** iStoch*** étaient préinstallés.

Raison: