[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 149

 

C'est là que j'ai récemment répondu à une question analogue.

https://www.mql5.com/ru/forum/109048/page11

Cherche-le.

Dans votre cas, vous pourriez probablement procéder comme suit :

if ( AutoClose) { //если выключатель закрытия включен 

//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
      
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
     
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
   
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 

Messieurs, veuillez expliquer la différence entre

NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,10,0)],4)
de
NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,iBarShift(NULL,0,Time[1],FALSE),1)] + 10 * Point,4)

Je ne comprends pas ce qu'est iBarShift et ce qu'il fait.

 
rid >> :

C'est là que j'ai récemment répondu à une question analogue.

Une question pour les connaisseurs.

-Voir ça.

Dans votre cas, vous pourriez probablement procéder comme suit :


Merci, rid!

Ça a marché pour moi, je l'ai fait comme ça.

   if (( Close_P)&& TimeCurrent()>=StrToTime( CloseHour+":00")){  // даже по времени сделал
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID), slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK), slippage);
    }
    }


 
Dimoncheg >> :

Messieurs, pourriez-vous expliquer la différence entre

de

Je ne comprends pas ce qu'est iBarShift et ce qu'il fait.

int iBarShift( string symbol, int timeframe, datetime time, bool exact=false)
Recherchez un bar par heure. La fonction renvoie le décalage de la barre à laquelle appartient le temps spécifié. S'il n'y a pas de barre pour le temps spécifié (un "trou" dans l'historique), la fonction renvoie, selon le paramètre exact, -1 ou le décalage de la barre la plus proche.
Paramètres :
symbole - Nom du symbole de l'instrument. NULL signifie le symbole actuel.
cadre temporel - Période. Peut être l'un des horizons temporels d'un graphique. 0 signifie la période du graphique actuel.
temps - Valeur du temps pour la recherche.
exact - Valeur retournée si aucune barre n'est trouvée. FALSE - iBarShift retourne au plus proche. TRUE - iBarShift renvoie -1.
 
1Rakso >> :
int iBarShift(string symbol, int timeframe, datetime time, bool exact=false)
Recherche de barres par heure. La fonction renvoie le décalage de la barre à laquelle appartient le temps spécifié. S'il n'y a pas de barre pour le temps spécifié (un "trou" dans l'historique), la fonction renvoie -1 ou le décalage de la barre la plus proche, selon le paramètre exact.
Paramètres :
symbole - Nom du symbole de l'instrument. NULL signifie le symbole actuel.
cadre temporel - Période. Peut être l'un des horizons temporels d'un graphique. 0 signifie la période du graphique actuel.
temps - Valeur du temps pour la recherche.
exact - Valeur renvoyée si aucune barre n'est trouvée. FALSE - iBarShift retourne au plus proche. TRUE - iBarShift renvoie -1.

J'ai lu la référence, mais je ne comprends pas ce qui est dit : "La fonction renvoie le décalage de la barre" - qu'est-ce que cela signifie ? Si j'ai bien lu le premier, il s'agit simplement du nombre de chandeliers et le second d'un déplacement. Je pense que j'ai besoin du plus haut le plus proche après certaines conditions, le premier cas ne fonctionnera pas car je ne verrai peut-être pas un maximum de 10 barres (et peut-être pas un maximum de 20 ou 30 non plus), comment dois-je le décrire correctement (le plus haut le plus proche par exemple après avoir traversé 2 Mascos) ?

 
Dimoncheg >> :

J'ai lu l'aide, mais je ne comprends pas ce qui est dit : "La fonction renvoie le décalage de la barre" - qu'est-ce que cela signifie ? Si j'ai bien lu le premier, il s'agit simplement du nombre de chandeliers, et le second d'un déplacement. Je pense que j'ai besoin du plus haut le plus proche après certaines conditions, le premier cas ne fonctionnera pas parce que je ne peux pas voir un maximum de 10 barres (et peut ne pas voir un maximum de 20 ou 30 non plus), quelle sera la bonne façon de le faire (le plus haut le plus proche après le croisement de 2 Mascos par exemple) ?

ibarshift montre à quelle barre du début du graphique la n-ième seconde fois.

 
Dimoncheg >> :

Je l'ai lu, mais je ne comprends pas ce qu'il dit : "La fonction renvoie le décalage de la barre" - qu'est-ce que cela signifie ? Si j'ai bien lu le premier, il signifie simplement le nombre de chandeliers, mais le second signifie un certain déplacement. Je pense que j'ai besoin du plus haut le plus proche après certaines conditions, le premier cas ne fonctionnera pas car je ne verrai peut-être pas les 10 barres maximum (et peut-être pas les 20 ou 30 maximum non plus), quelle sera la bonne façon de faire (le plus haut le plus proche par exemple après avoir traversé 2 Mascos) ?

Vous donnez du temps et vous obtenez un cadeau.

Supposons que vous connaissiez l'heure du bar zéro.

Certains événements sont passés,

La situation a changé, et vous voulez vérifier la position de la barre avec ce temps par rapport à la barre zéro.

C'est là que vous avez besoin de cette fonction.

 

Dimoncheg

Je suis moi-même client de cette section)

======================

J'ai une autre question, comment diviser la poutre ZZ en deux pour calculer son niveau et faire une fixation à ce niveau ?


   double ind1. up = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 0, 0);
   double ind1. dn = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 1, 0);
   if ( ind1. up != EMPTY_VALUE  ) ind1. arr_1 =- 1;
	else if ( ind1. dn != EMPTY_VALUE )   ind1. arr_1 = 1;  
   

   if (( Close_P)&& ind. arr_1 /2*Point){   // как вписать формулу что я не так делаю? 
   
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID), slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK), slippage);
    }
    }
 
Mon indicateur dans le code est réinitialisé, j'ai besoin de connaître l'état avant et après pour comparer. Quelle est la meilleure façon de mettre en œuvre ce processus ?
 
1Rakso >> :

Dimoncheg

Je suis moi-même client de cette section)

======================

J'ai une autre question, comment diviser la poutre ZZ en deux pour calculer son niveau et faire une fixation à ce niveau ?


Le zigzag n'est pas calculé au dernier point. En règle générale, elle ne peut pas non plus être réparée à ce niveau.