if (OrdersTotal()<1); //Malgrès cette ligne plusieurs positions s'ouvre.

 

Bonjour à tous,


J'ai une ligne de code que est sensé empêcher d'ouvrir plus d'un certain nombre de position mais le bot continu d'ouvrir des position à chaque tick

if (OrdersTotal()<1); //Malgrès cette ligne plusieurs positions s'ouvre.

Une idée ?


//+------------------------------------------------------------------+


void OnTick()
  {

 double Ouverture=Open[1];
 double Cloture=Close[1];
 double PlusHaut=High[1];
 double PlusBas=Low[1];

 double PlusBas2=Low[2]; 
 double PlusBas3=Low[3];
 double PlusBas4=Low[4];
 double PlusBas5=Low[5];
 
if (PlusBas5<PlusBas4 && PlusBas5< PlusBas3 && PlusBas5< PlusBas2 && PlusBas5<PlusBas && Cloture > (PlusBas5+7) ); 
if (OrdersTotal()<1); //Malgrès cette ligne plusieurs positions s'ouvre.

OrderSend (Symbol(),0,lot,Ask,30,Ask-(stoploss*conversionEURUSD),Ask+(profit*conversionEURUSD),"1erbot2.1",magic,TimeCurrent()+999,Green );
 
  }

//+------------------------------------------------------------------+


Merci  :-)


Discover new MetaTrader 5 opportunities with MQL5 community and services
Discover new MetaTrader 5 opportunities with MQL5 community and services
  • 2024.03.13
  • www.mql5.com
MQL5: language of trade strategies built-in the MetaTrader 5 Trading Platform, allows writing your own trading robots, technical indicators, scripts and libraries of functions
 

Salut !


PositionsTotal() au lieu de OrdersTotal()

 
void OnTick()
{
    // Déclaration des variables
    double Ouverture = Open[1];
    double Cloture = Close[1];
    double PlusHaut = High[1];
    double PlusBas = Low[1];
    double PlusBas2 = Low[2]; 
    double PlusBas3 = Low[3];
    double PlusBas4 = Low[4];
    double PlusBas5 = Low[5];
    
    // Conditions pour ouvrir une position
    if (PositionsTotal() < 1) // Vérifie s'il n'y a pas de positions ouvertes
    {
        if (PlusBas5 < PlusBas4 && PlusBas5 < PlusBas3 && PlusBas5 < PlusBas2 && PlusBas5 < PlusBas && Cloture > (PlusBas5 + 7))
        {
            // Placez ici votre logique pour définir les valeurs de lot, stoploss, profit et conversionEURUSD
            double lot = 0.1; // Exemple, veuillez ajuster selon vos besoins
            double stoploss = 30; // Exemple
            double profit = 50; // Exemple
            double conversionEURUSD = 1.2; // Exemple
            
            // Envoi de l'ordre
            int magic = 123; // Remplacez par votre numéro de magie
            OrderSend(Symbol(), OP_BUY, lot, Ask, 30, Ask - (stoploss * conversionEURUSD), Ask + (profit * conversionEURUSD), "1erbot2.1", magic, TimeCurrent() + 999, clrGreen);
        }
    }
}

Salut,
Essayes ça pour voir ?

 
Cedric Soares #:

Salut,
Essayes ça pour voir ?

Merci pour vos réponse, 

PositionsTotal

ne fonctionne pas chez moi. Par contre Si je prend le code de  Cedric Soares et que j'utilise ton code ave OrdersTotal() cela fonctionne.


J'ai donc cherché la différence et en faite c'est tout simple. Mon code fonctionne si j'enlève le point virgule ; et d'ailleurs dans ton code tu ne le met pas.

if (OrdersTotal()<1)

au lieu de :

if (OrdersTotal()<1);



Merci cela m'a aidé ;-)

Cedric Soares
Cedric Soares
  • www.mql5.com
Profil du trader
 
Bonjour
Ton histoire de ";" devait générer un avertissement lors de la compilation, non ?
Raison: