[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 295

 

Merci. En principe, il suffit de remplacer "||" par "&&" (je voulais probablement vérifier l'inégalité et ensuite continuer) et tout fonctionnera, mais dans le testeur, cela fonctionne de toute façon. Même si, bien sûr, votre version sera plus correcte.

 

Eh bien, ce sont des nuances. J'essaie toujours de le réécrire pour l'adapter à mes besoins. Moi, par exemple, je n'ai pas du tout besoin de la sélection medjic (dans cette fonction). J'ai également remarqué que la sélection dans la fonction Figar0 se faisait à partir de la liste historique. L'essentiel ici est de comprendre l'idée. D'ailleurs, j'ai besoin de commandes de la piscine, donc tout s'est avéré beaucoup plus facile.

Merci pour les idées et l'aide, les gens.

PS : Et s'il vous plaît expliquer à propos de

OrderType()>1
J'ai vu à plusieurs reprises que OrderType est comparé à un int. Quelle est l'astuce ici ? Je pensais que c'était une variable de type chaîne.
 
Pyro:

Eh bien, ce sont des nuances. J'essaie toujours de le réécrire pour l'adapter à mes besoins. Moi, par exemple, je n'ai pas du tout besoin de la sélection medjic (dans cette fonction). J'ai également remarqué que la sélection dans la fonction Figar0 se faisait à partir de la liste historique. L'essentiel ici est de comprendre l'idée. D'ailleurs, j'ai besoin de commandes de la piscine, donc tout s'est avéré beaucoup plus facile.

Merci pour les idées et l'aide, les gens.

PS : Pourriez-vous expliquer ce qui suit ?

J'ai vu OrderType être comparé à int à plusieurs reprises. Quelle est l'astuce ici ? Je pensais que c'était une variable de type chaîne.

Il s'agit d'une correspondance entre les constantes et leurs valeurs.

OP_BUY correspond à 0

OP_SELL correspond à 1

__________________________________________________________________________________________________________-

Type d'opération pour la fonction OrderSend(). Peut être l'une des valeurs suivantes :

Constant Valeur Description
OP_BUY 0 Acheter
OP_SELL 1 Vendez
OP_BUYLIMIT 2 Ordre en attente BUY LIMIT
OP_SELLLIMIT 3 Ordre SELL LIMIT en attente
OP_BUYSTOP 4 Ordre BUY STOP en attente
OP_SELLSTOP 5 Ordre SELL STOP en attente
 
Pyro:

D'ailleurs, j'ai besoin de commandes de la piscine, donc ça s'est avéré beaucoup plus simple.

Lors de la sélection d'un ordre par index, deux listes sont utilisées - ouverte et fermée. Pour cela, il faut préciser dans quelle liste vous voulez les voir (paramètre pool).

Par conséquent, si nous devons faire une sélection dans une liste d'ordres ouverts, nous pouvons omettre de spécifier ce paramètre (il est défini par défaut). Si nous voulons choisir dans une liste d'ordres fermés, nous devons spécifier MODE_HISTORY comme paramètre.

En conséquence, si vous voulez trouver le dernier ordre ouvert, la boucle est faite sur les ordres ouverts du terminal et vous devez également vérifier l'heure d'ouverture OrderOpenTime(), si vous avez besoin du dernier ordre fermé (comme dans les exemples ci-dessus), la boucle doit être faite sur les ordres fermés du terminal et vous devez vérifier OrderCloseTime() pour savoir quand l'ordre sélectionné a été fermé.

Et pour votre information, si vous sélectionnez par ticket, le pool de paramètres sera totalement ignoré et l'ordre se retrouvera dans les deux listes. Une fois l'ordre trouvé, nous devons vérifier son heure de clôture pour savoir dans quelle liste l'ordre a été sélectionné. Si l'heure de clôture est supérieure à zéro, l'ordre est clôturé et a été sélectionné dans la liste des ordres clôturés. Si l'heure de clôture d'un ordre ouvert est toujours égale à zéro. Ainsi, s'il est égal à zéro, l'ordre a été sélectionné dans la liste des ordres ouverts.

De même, si vous recherchez un ordre en attente par son ticket, il peut apparaître dans les deux listes. Cela se produira s'il est converti en un ordre au marché. Vous devrez donc également vérifier le type de commande que vous avez choisi. Et si l'ordre en attente est fermé, et que l'ordre au marché avec le même ticket n'est pas fermé, cela signifie que l'ordre en attente a été transformé en ordre au marché.

 
Figar0:

Merci. En principe, il suffit de remplacer "||" par "&&" (je voulais probablement vérifier l'inégalité suivie de continue) et tout fonctionnera, alors que dans le testeur, cela fonctionne de toute façon. Même si, bien sûr, votre version sera plus correcte.

Je fais moi-même parfois des erreurs stupides en postant du code ici... Ensuite, je corrige le code comme un échaudé avant qu'il ne soit lu de manière incorrecte... :)))
 
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2

extern int period=24;
double Buf_0[],Buf_1[];

//+------------------------------------------------------------------+
int init()
  {
//---- 
   SetIndexBuffer(0,Buf_0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(1,Buf_1);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
//----
   return;
  }
//+------------------------------------------------------------------+
int start()
  {
   int  i,counted_bars,maxValueIdx,minValueIdx; 
//----

   counted_bars=IndicatorCounted();
   i=Bars-counted_bars-1;
   
   while(i>=0)
   {
   maxValueIdx=ArrayMaximum(Close,(period-1),0); 
   minValueIdx=ArrayMinimum(Close,(period-1),0);
   Buf_0[i]=Close[maxValueIdx];
   Buf_1[i]=Close[minValueIdx];
   i--;
   }
   
   
//----
   return;
  }
//+------------------------------------------------------------------+
Bonjour, je voulais écrire un indicateur qui lit les MAX et MIN du prix de clôture pour une certaine période. Je suis le tutoriel, mais les anciennes données ne sont pas affichées du tout, elles affichent deux lignes horizontales avec les valeurs actuelles MAX et MIN. Pouvez-vous me dire ce que je fais mal ?
 
borisis:
Bonjour, je voulais écrire un indicateur qui compte les MAX et MIN du prix de clôture pour une certaine période. Comme tout ce que je fais dans le tutoriel, mais les anciennes données ne sont pas dessinées du tout, il montre deux lignes horizontales avec le MAX et le MIN actuels. Pouvez-vous me dire ce que je fais mal ?


maxValueIdx=ArrayMaximum(Close,(period-1), i) ;

minValueIdx= ArrayMinimum(Close,(period-1), i) ;

Parce que vous continuez à trouver les mêmes index à chaque étape.

 

Bonjour à tous ! Comment trouver à quel type de variable appartient : int OU double ?

et deuxièmement, que signifie l'erreur "invalid double number as parameter 1 for DoubleToStr function"?

 
todem:

Bonjour à tous ! Comment connaître le type d'une variable : int OU double ?

Vous êtes curieux de savoir pourquoi ? Pouvez-vous décrire une situation où cela serait nécessaire ?
 
Proposé.

Valdemar 01.04.2011 16:31
Salutations à tous les maîtres de la programmation ! Indice de la bonne idée, si cela ne vous dérange pas : Ici, je, dis que j'ai décidé à la fin d'une certaine heure de négociation, mettre un ordre d'arrêt, poussant loin de la haute et la basse de l'heure sur quelques points, ce que je devrais utiliser, écrire une fonction de programmation !