[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 135

 
YOUNGA:

Oui, seulement les prix ouverts, c'est pourquoi il est important d'en tenir compte lors de l'analyse de l'EA. Par exemple, si la queue d'une bougie casse votre canal, l'EA peut ne pas le voir, mais vous pouvez changer la logique du programme et résoudre le problème.



Merci !
 

Q : Voici un morceau de code

int init()

{
//----
ShiftSignal=0 ;
SlowPer=FastPer+AddSlow ;
Spread=MarketInfo(Symbol(),MODE_SPREAD) ;
Comment("ExpertMagicNumber=",ExpertMagicNumber) ;

if ((FastShift<0)&&(SlowShift>=0))
ShiftSignal=FastShift ;

if ((FastShift>=0)&&(SlowShift<0))
ShiftSignal=-SlowShift ;

if ((FastShift<0)&&(SlowShift<0))
{
if (MathAbs(FastShift)>MathAbs(SlowShift))

ShiftSignal=-FastShift ;
else
ShiftSignal=-SlowShift ;
}
//----
return(0)

Je suis intéressé par ce fragment

si ((FastShift<0)&&(SlowShift>=0))

ShiftSignal=FastShift ;

si FastShift<0, cela signifie que la valeur de FastShift est initialement égale à un nombre entier négatif, par exemple : -2

puis dans la ligne suivante ShiftSignal=FastShift ;

on pourrait penser que la valeur -2 serait assignée à la variable ShiftSignal au lieu de zéro

mais en même temps vous pouvez vous demander pourquoi il y a un moins devant la variable FastShift

Car en mathématiques, le moins pour le moins est un plus, c'est-à-dire que la valeur sera "+2", c'est-à-dire juste 2.

Si vous voulez, je peux vous envoyer tout le code.

 

Aidez-moi à résoudre un tel problème.

Il y a un signal d'achat ou de vente, mais la barre suivante remplit également la condition car le signal de la barre suivante n'est pas pris en compte.

Comment je fais, mais ça ne marche pas.

if( условие на покупку или продажу)
{          

      if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==true)   // если есть уже ордер то проверяем
        {
                 if (OrderOpenTime()!=Time[1]||OrderOpenTime()!=Time[2]||OrderOpenTime()!=Time[3]) // если открытый ордер имеет значение(OrderOpenTime) не равное времени бару назад и тд. до 3 баров.
                    {
                   TimeBar=Time[0];
                   OrderSend(Symbol(),OP_BUY, LOT,NormalizeDouble(Ask,Digits),2,0,0,"ntcn",Magic,0,Blue);  // тогда открываем
                    }
        }


}

Mais cela ne fonctionne pas... ou comment le faire différemment ????. Je vous serais reconnaissant de bien vouloir partager vos connaissances.

Si quelqu'un lit et a rencontré le même problème, voici la réponse :

if( условие на покупку или продажу)
{          

   OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);                                                // проверяем последний ордер
        if(OrderOpenTime()<Time[3])                                                                       // если по времени прошло 3 бара тогда можно открывать новую сделку
           {
                   TimeBar=Time[0];
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,"ntcn",Magic,0,Red); 
           }

}
 
Oleg, la condition n'est pas très stricte Par exemple, commencer à compter les ordres ouverts, si plus de 1 alors ne pas ouvrir (prendre des fonctions prêtes à l'emploi sur le site ici)
 

Puisque personne n'a répondu, je vais essayer de reformuler ma question.

Existe-t-il un moyen de tirer des informations de l'indicateur compilé, si la fonction iCastom() ne donne que des zéros ?

 

Bonjour, comment commencer le comptage des barres après un signal positif de l'indicateur ?

- J'obtiens un signal, la baie ouverte, seulement après que les 2 barres suivantes montent .

 
YOUNGA:
Oleg, la condition n'est pas très stricte : par exemple, commencer à compter les ordres ouverts, s'il y en a plus d'un, ne pas les ouvrir (utiliser les fonctions prêtes à l'emploi sur ce site)
.


Malheureusement les signaux peuvent aussi être répétés (dans le sens d'acheter plus, ils peuvent être une heure plus tard, un jour plus tard, etc.) Je suis passé par OrderComment, le blocage, mais il y a aussi des ordres répétés. Je voudrais bloquer sur les barres pour les signaux répétés. Si c'est par Sleepage, le délai est différent et 4 heures....

Si vous ne savez pas quoi en faire, vous obtiendrez une mauvaise réponse.

 
dertop:


Malheureusement les signaux peuvent aussi être répétitifs (dans le sens d'extra, ils peuvent être une heure plus tard, un jour plus tard, etc.) J'ai fait le tour de OrderComment, bloquer, mais il y a aussi des ordres répétitifs. Je voudrais bloquer sur les barres les signaux répétés. Si c'est par Sleepage, le délai est différent et 4 heures....

Mais merci pour la réponse.


Recherchez la branche sur le site web

Interdire le commerce dans un bar.

 
Bonne nuit ! Veuillez expliquer le principe de l'indicateur zigzag. Par exemple, les fractales sont construites lorsque 2 barres de gauche et de droite sont au-dessus ou au-dessous de la barre actuelle. Quelle est la base de l'indicateur zigzag ? S'il vous plaît.
 
tout ce dont vous pouvez faire une ZZ (pas la mienne) https://www.mql5.com/ru/code/9148