[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 - 5. - page 137

 

Bonjour, pourriez-vous me conseiller ? Un signal d'indicateur a déclenché un achat, j'ouvre un ordre seulement après confirmation des deux prochaines bougies à la hausse.

 
Top2n:

Bonjour, pourriez-vous me conseiller ? Un signal d'indicateur d'achat s'est déclenché, j'ouvre un ordre seulement après confirmation des deux prochaines bougies à la hausse.


Vérifiez donc que les deux dernières bougies en haut et la condition pour ouvrir un ordre il y a deux barres au même moment.
 
Roger:

Vérifiez donc que les deux dernières bougies en haut et la condition pour ouvrir un ordre deux barres en arrière en même temps.

comment faire ?

 if (bay_min == true) сработал сигнал на покупку ждем подтверждение
  
 if (Open[1]<Close[1] && Open[2]<Close[2] )
   
 if (Bars(2).............


Et si c'est le cas, le signal est déclenché en attendant la confirmation, seulement après une barre à la hausse ou à la baisse de 2 barres.

Nous avons besoin qu'il se souvienne de la barre sur le signal, de la barre après le signal, qu'il les compare si les deux sont ascendantes ou descendantes, puis ......

 
Top2n:

comment faire ?


Si le signal a fonctionné, nous attendons la confirmation, mais après que la barre soit montée ou descendue.

Il doit se souvenir de la barre sur le signal, de la barre après le signal, les comparer si les deux sont ascendantes ou descendantes, puis ......

Montre comment tu as obtenu Bay_min.
 
Top2n:

comment faire ?


Si le signal a fonctionné, nous attendons la confirmation, mais après que la barre soit montée ou descendue.

Il doit se souvenir de la barre sur le signal, de la barre après le signal, les comparer si les deux sont ascendantes ou descendantes, puis ......



if (bay_min == true)   datetime T=Time[0] //сработал сигнал на покупку запоминаем время  бара

if(iBarShift(NULL,0,T)==2) //по времени, сигнал был на 2 баре
   {   
  if (Open[1]<Close[1] && Open[2]<Close[2] )   //и эти бары бичьи 
     { 
    // что-то делаем
     }
   }
   
// я думаю, как-то так.
 
Question pour les conseillers experts

J'écris un conseiller expert simple et je rencontre de nombreux problèmes.

La condition est

Je me souviens du prix de clôture de la barre actuelle et je l'entre dans la variable Startprice si la 4ème barre précédente était dans la barre glissante.


Si la condition est satisfaite, dessinez une icône montrant le prix de clôture de la barre, c'est-à-dire le prix de départ.

Ce que j'ai obtenu, c'est que l'icône est dessinée, mais une seule fois, alors que j'en ai besoin à chaque fois.

Le prix de clôture de la barre ne coïncide pas avec le prix du Startprice à 0.00001. Pourquoi et comment puis-je le corriger ?

J'ai essayé d'arrondir et de réduire à 5 chiffres, mais cela n'a rien changé.

Dans le journal, en utilisant l'impression que j'appelle la valeur Startprice, montre le nombre seulement jusqu'à 4 chiffres et moins.

Comment obtenir la même précision que dans la fenêtre de données du terminal ?

Ce problème de point décimal s'applique également au curseur lui-même. Si vous appelez ses valeurs via l'impression, vous ne pouvez pas obtenir plus de 4 chiffres dans le journal.



#property copyright "Zuly"


 extern int MA_Period = 50; //периуд Ма
extern int MA_Method =MODE_SMA;     //Метод усреднения скользящего среднего. Может быть любым из значений методов скользящего среднего (Moving Average):
                              //*MODE_SMA 
                              
 extern int Maximum_History = 0;         //Ограничение истории для расчетов, если 0 то расчет всей истории
 
   
    
   //начало кода советника
int start()


{      
    double MA4;                                // Значение МА на 4 баре 
    
    double Startprice;
    
   { 
   MA4=iMA(NULL,0,MA_Period,0,MA_Method,PRICE_CLOSE,4); 
 
   
                       if  (Low[4]< MA4 && MA4 < High[4]) //условия если 4-я свеча лежит в скользящей
  
  {    
  
   Startprice=Close[0];
  
    //   Startprice=NormalizeDouble(Close[0],5); // пробуем округлить до 5-го знака, не помогло 
 
    //  Startprice=MathFloor(Close[0]*100000)/100000; // пробуем обрезать до 5-го знака не помогло
      
  
  
     
      //Print (Startprice); // распечатаем Startprice
     
      
   datetime TmR1=Time[0]; // запоминаем время текущего бара? 

   

   
       ObjectCreate("Rep1",OBJ_ARROW, 0, TmR1, Startprice); // создаем обьект 
      ObjectSet("Rep1", OBJPROP_COLOR, White); // устанавливаем обьект на график
       ObjectSet("Rep1", OBJPROP_ARROWCODE,71); 
      
     return(0); 
 
 
 
}} }    
   
paramètres et temps d'essai
 
Utilisez DoubleToStr(nombre, chiffres) pour la sortie. Au lieu de chiffres, vous pouvez écrire la précision que vous voulez. Ajoutez au nom de l'icône l'heure de la barre à laquelle vous placez l'icône.
 
artmedia70:
Utilisez DoubleToStr(number, Digits) pour la sortie. Au lieu de chiffres, vous pouvez écrire la précision que vous voulez. Ajoutez au nom de l'icône l'heure de la barre à laquelle vous placez l'icône.


si c'est le cas

Startprice=DoubleToStr(Close[0],5);

ça ne marche pas, c'est la faute à '=' - types incompatibles C:/fortest\experts\sve.mq4 (34, 14)

Comment l'écrire correctement ?

Merci pour la réponse, je me débats avec ce problème depuis une semaine.)

 
artmedia70:
Utilisez DoubleToStr(nombre, chiffres). Vous pouvez écrire la précision que vous voulez à la place de Digits. Ajoutez l'heure de la barre au nom de l'icône dans laquelle vous placez l'icône.

mais pour la sortie, je comprends que l'imprimante n'imprime que 4 chiffres ou moins.

then if Print (DoubleToStr(Startprice,5)) ; // imprimer Startprice

il en distribue 5.

Mais voici comment ajouter l'heure de la barre.

Cette ligne n'ajoute pas l'heure de la barre ?

  datetime TmR1=Time[0]; 
 
supernyb:

mais pour la sortie, je comprends que l'imprimante n'imprime que 4 chiffres ou moins.

then if Print (DoubleToStr(Startprice,5)) ; // imprimer Startprice

il en distribue 5.

Mais quand on ajoute une heure de barre

Cette ligne n'ajoute pas le temps de la barre ?



string name="Pr1_";
string cur_name=name+Time[0];
Raison: