Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 184

 
Roger:
Pendant cette minute, le conseiller expert ouvre jusqu'à quarante ordres.

Et si le premier ne s'ouvre pas ? Attendre le prochain signal pendant une heure ? C'est bon :

Il y a un signal --> Vérifiez s'il y a un ordre/une position défini(e)/ouverte sur ce chandelier, il n'y en a pas --> défini(e)/ouverte, il y en a --> alors il n'y a pas besoin de plus.

 
Sepulca:

C'est le moyen de contrôler... soit le nombre de commandes, soit seulement le premier appel à la fonction...


Il y a donc plus d'une ligne comme la vôtre.
 
Merci à tous pour votre aide. La fonction fonctionne. Le résultat est reçu.
 
extern int SecondsAfterTheBar = 0; 

int start(){
...
if(NewBar() == TRUE){
...
}
return(0);
}

bool NewBar(){
   RefreshRates();
   static bool initial = FALSE;
   static datetime stat_dtime = 0;
   if ((TimeCurrent() - stat_dtime >= Time[0] - Time[1] + SecondsAfterTheBar) == TRUE){
      stat_dtime = Time[0];
    if (initial == TRUE){
      return(TRUE);
    }else{
      initial = TRUE;
      }
   }
  return(FALSE);
}

C'est probablement trop tard, mais tout le monde peut utiliser ma solution de toute façon :

 
digits:

Il est évident que j'arrive trop tard, mais ma solution peut quand même être utile à quelqu'un :


Merci. Plus universellement, si

bool NewBar( datetime SecondsAfterTheBar = 0 )

Vous pouvez ensuite spécifier le décalage en secondes lorsque vous l'appelez.

 


Bonjour les amis. Pouvez-vous me dire comment obtenir la valeur de la couleur de l'indicateur du chandelier précédent et l'écrire dans une variable, par exemple, si elle est rouge, alors double col =1, si elle est jaune, alors 2, si elle est verte, alors 3. J'ai essayé différentes variantes, mais ça n'a pas marché. Je comprends que la valeur de la couleur dépend de la disponibilité des unités dans le tampon, mais pour une raison quelconque, je ne peux pas obtenir exactement la dernière valeur fixe, c'est-à-dire, la bougie active, il change constamment de couleur avec l'apparition d'une nouvelle bougie précédente ferme la dernière couleur active. Comment je le sais ?)

#property indicator_separate_window
#property indicator_minimum 0
#property indicator_maximum 1

#property  indicator_buffers 3
#property  indicator_color1  DarkGreen
#property  indicator_color2  Crimson
#property  indicator_color3  Yellow
//---- indicator parameters      
extern int RSI=8;
extern int valeur1=55;
extern int valeur2=45;

//---- indicator buffers
double   ExtBuffer1[];
double   ExtBuffer2[];
double   ExtBuffer3[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- drawing settings
   SetIndexStyle (0,DRAW_HISTOGRAM, EMPTY,4,DarkGreen);
   SetIndexBuffer(0,ExtBuffer1);
   SetIndexStyle (1,DRAW_HISTOGRAM, EMPTY,4,Crimson);
   SetIndexBuffer(1,ExtBuffer2);
   SetIndexStyle (2,DRAW_HISTOGRAM, EMPTY,4,Yellow);
   SetIndexBuffer(2,ExtBuffer3);
//---- names
   IndicatorShortName("RSI above/under 45/55");
   SetIndexLabel(0,"RSI"+RSI +" is above 55");
   SetIndexLabel(1,"RSI"+RSI +" is under 45");
   SetIndexLabel(2,"RSI is in the mid zone ");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages                                                  |
//+------------------------------------------------------------------+
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
   for(int i=0; i<limit; i++)
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2) 
        {
        ExtBuffer2[i]=1;
        }
       else
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
        {
        ExtBuffer1[i]=1;
        }
       else 
        ExtBuffer3[i]=1;
   
   return(0);
  }

cette couleur :

Indicateur

Merci pour la réponse.

 
Kero:


Bonjour les amis. Pouvez-vous me dire comment obtenir la valeur de la couleur de l'indicateur du chandelier précédent et l'écrire dans une variable, par exemple, si elle est rouge, alors double col =1, si elle est jaune, alors 2, si elle est verte, alors 3. J'ai essayé différentes variantes, mais ça n'a pas marché. Je comprends que la valeur de la couleur dépend de la disponibilité des unités dans le tampon, mais pour une raison quelconque, je ne peux pas obtenir exactement la dernière valeur fixe, c'est-à-dire, la bougie active, il change constamment de couleur avec l'apparition d'une nouvelle bougie précédente ferme la dernière couleur active. Comment je le sais ?)

int col;
int start()
  {
   int limit;
   int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
//---- macd counted in the 1st buffer
   for(int i=0; i<limit; i++)
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)<=valeur2) 
        {
        ExtBuffer2[i]=1;if(i=1)col =1;return;
        }
       else
       if (iRSI(NULL,0,RSI,PRICE_CLOSE,i)>=valeur1)
        {
        ExtBuffer1[i]=1;if(i=1)col =3;return;
        }
       else 
       {
        ExtBuffer3[i]=1;
        if(i=1)col =2;
       }
   return(0);
  }
comme ça - si les couleurs avec les chiffres ne sont pas mélangées
 

Est-ce une condition pour ouvrir des commandes ? ??? Est-ce que je comprends bien ?

 
KeinRich:

Est-ce une condition pour ouvrir des commandes ? ??? Est-ce que je comprends bien ?


Cette condition est pour tout ce dont vous avez besoin, parce que nous pouvons seulement deviner ce que ces fonctions définies par l'utilisateur font par leurs noms
order_total(0)
open(0,Lot,0,TP);
last_trade(1);
modify_orders(1);

 
KeinRich:

Bonjour à tous... Vous pouvez me dire ce que ça dit ?

int start()
...

retour(0) ;

Tout est purement une supposition et seulement une supposition :

int start() {
   Comment(Info());                 // Вывод какой-то информации на экран
   int KOL_BUY  = order_total(0);   // Подсчёт количества Buy-позиций
   int KOL_SELL = order_total(1);   // Подсчёт количества Sell-позиций
   double l;                              

   if (order_total()==0) {          // Если количество ордеров равно нулю
      open(0,Lot,0,TP);             // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
      open(1,Lot,0,TP);             // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
      }
   if (KOL_BUY==0 && KOL_SELL!=0) { // Если нет Buy и есть Sell
      open(0,Lot,0,TP);             // Открываем Buy лотом Lot скорее всего без стопа, но с тейком
      l=last_trade(1);              // Берём лот прошлой Sell
      open(1,l,0,0);                // Открываем Sell лотом прошлой Sell скорее всего без стопа и тейка
      modify_orders(1);             // Что-то модифицируем в Sell (в какой и что - не понятно)
      }
   if (KOL_BUY!=0 && KOL_SELL==0) { // Если нет Sell и есть Buy
      open(1,Lot,0,TP);             // Открываем Sell лотом Lot скорее всего без стопа, но с тейком
      l=last_trade(0);              // Берём лот прошлой Buy
      open(0,l,0,0);                // Открываем Buy лотом прошлой Buy скорее всего без стопа и тейка
      modify_orders(0);             // Что-то модифицируем в Buy (в какой и что - не понятно)
      }
   return(0);                       // Выход из start()
}
Raison: